dhan***
2024-11-18

“그날 나는 결심했다. 내가 매니저가 된다면 팀원들에게 성장에 필요한 조언을 주리라.”
이 책을 읽고 나서야 이민석 교수님(옮긴이)께서 우리나라 개발자들이 이 책을 쉽게 접하길 바라는 마음과 책에서 느낀 감동과 통찰을 나누고 싶다는 옮긴이의 말씀이 제대로 이해가 되었다.
저자는 엔지니어부터 매니저로서 다양한 기업에서의 경험을 가지고 있으며, 75만 명 이상의 구독자를 보유한 테크 뉴스레터의 발행자이기도 하다. 이러한 풍부한 경험을 바탕으로 한 조언들은 알기 쉬우면서도 세심하게 적혀있다.
이 책은 소프트웨어 엔지니어의 커리어패스별로 서술되어 있다, 한국의 현실과 맞지 않아 보일 수 있다고 생각할 수 있겠으나, 그것은 단순한 직급 명칭의 차이라고 개인적으로 생각한다. 여기서 설명하는 소프트웨어 엔지니어의 세부 업무는 해외 기업이나 한국 기업이나 본질적으로 동일하기 때문이다.
이 책은 총 6부, 전체 26개의 장으로 구성되어 있다. 1부 '개발자 커리어 기본 사항'에서는 초급 엔지니어부터 스태프 엔지니어 이상에 이르기까지 모든 직급의 개발자가 알아야 할 커리어 관리의 기본 사항을 설명한다. 2부 '유능한 소프트웨어 개발자'는 초급 개발자와 주니어 개발자를 위한 커리어 조언을, 3부 '다재다능한 시니어 엔지니어'에서는 시니어 개발자를 위한 커리어 조언을, 4부 '실용주의 테크리드'는 스태프 엔지니어나 테크 리더를 위한 커리어 조언을 다룬다. 5부 '롤모델로서의 스태프 및 수석 엔지니어'에서는 소프트웨어 엔지니어로서 최종 단계인 수석 엔지니어에 관한 커리어 조언이 설명하고, 6부 '결론'으로 마무리된다.
1부 '개발자 커리어 기본 사항'은 전체 6개 장으로 구성되어 있다.
1장 '커리어패스'에서는 기술 기업의 유형(빅테크, 중대형 기술 기업, 스케일업, 스타트업)을 알아보고, 기업 유형별 소프트웨어 엔지니어링의 커리어패스를 설명한다.

<1부 개발자 커리어의 기본 사항, 1장 커리어패스, p48~p49>
2장 '커리어 관리'는 소프트웨어 엔지니어의 커리어 관리 필요성과 성공으로 이끄는 커리어 관리 방법을 알려준다.
3장 '성과 평가'에서는 기업의 성과 평가 시스템을 설명하고, 좋은 성과 평가를 받는 방법을 살펴본다.
4장 '승진'은 승진이 결정되는 일반적인 과정과 기업의 유형별 승진 프로세스를 살펴보고, 승진을 위한 방법을 알려준다.
5장 '어디서나 통하는 접근법'에서는 기업의 유형별 성공 전략과 모든 유형의 기업에서 소프트엔지니어로 성공하는 방법을 알려준다.
6장 '이직'은 이직을 바라보는 다양한 관점과 기술 면접 준비, 이직과 관련된 다양한 전략을 설명한다.
2부 '유능한 소프트웨어 개발자'는 전체 4개 장으로 구성되어 있다.
7장 '업무를 완수하는 개발자'에서는 개발자로서 빠르게 정착할 수 있는 업무 집중법, 분석, 작업 소요 시간 추정, 멘토링 방법을 설명한다.
8장 '코딩'은 코딩 연습법과 일반적인 좋은 코드 작성법을 알려준다.
9장 '소프트웨어 개발'에서는 디버깅, 리팩터링, 테스트의 개념과 활용법을 설명한다.
10장 '생산적인 소프트웨어 개발자의 도구'는 개발자가 일반적으로 사용하는 도구(Git, 터미널, 정규식, SQL, AI 코딩 보조 도구)를 알기 쉽게 설명한다.

<2부 유능한 소프트웨어 개발자, 2부 핵심요약, p200~p201>
3부 '다재다능한 시니어 엔지니어'는 전체 5개 장으로 구성되어 있다.
11장 '업무를 완수하는 엔지니어'에서는 시니어 엔지니어의 업무 이해와 실용적인 업무 처리법을 알려준다.
12장 '협업 및 팀워크'는 협업 커뮤니케이션과 코드 리뷰, 멘토링, 피드백 기술을 설명한다.
13장 '소프트웨어 엔지니어링'에서는 프로그래밍 언어 확장과 도메인 이해, 문서 작성, 개발 방법론 기법을 알려준다.
14장 '테스트'는 단위 테스트, 통합 테스트, UI 테스트, 자동화된 테스트의 개념과 장단점을 설명한다.

<3부 다재다능한 시니어 엔지니어 14장 테스트, p276~p277>
15장 '소프트웨어 아키텍처'에서는 소프트웨어 아키텍트로서의 다양한 기술을 살펴본다.
4부 '실용주의 테크리드'는 전체 5개 장으로 구성되어 있다.

<4부 실용주의 테크리드, p300~p301>
16장 '프로젝트 관리'는 프로젝트 관리의 필요성과 효과적인 프로젝트 관리법을 설명한다.
17장 '프로덕션 출시'에서는 사례를 통해 성공적인 프로덕션 출시를 위한 방법과 원칙 및 도구, 기법을 알려준다.
18장 '이해관계자 관리'는 업무 이해관계자의 유형과 관리 방안, 비협조적인 이해관계자 대처법을 설명하고
19장 '팀 구조'에서는 팀내의 구성원 역할과 프로세스, 집중력 향상 방법을 알려준다.
20장 '팀 내 역학'은 건강한 팀과 그렇지 못한 팀을 비교하고 관계 개선을 위한 방법과 다른 팀과의 소통 방법을 살펴본다.
5부 '롤모델로서의 스태프 및 수석 엔지니어'는 전체 5개 장으로 구성되어 있다.
21장 '비즈니스의 이해'에서는 팀과 제품을 비즈니스 목표와 연계하여 생각하고 성장하는 방법을 설명한다.
22장 '협업'은 좋은 영향력을 끼치기 위해 사내 정치와 같은 민감한 부분과 동료와 협업, 인적 네트워크를 확장하는 방법을 알아본다.
23장 '소프트웨어 엔지니어링'에서는 수석 엔지니어의 코딩에 관한 자세와 AI 코딩 도구와 같은 효율을 높이는 도구, 어플라이언스 준수 등 안전한 개발을 위한 방법을 살펴본다.

<5부 롤모델로서의 스태프 및 수석 엔지니어, 23장 소프트웨어 엔지니어링, p424~p425>
24장 '신뢰성 높은 소프트웨어 시스템'은 로깅, 모니터링, 알림, 온콜, 사고 관리와 같은 신뢰성 높은 시스템 구축 방안을 알아본다.
25장 '소프트웨어 아키텍처'에서는 아키텍처를 설계하는 다양한 기법과 확장 가능한 아키텍처 설계법을 살펴본다.
6부 '결론'의 26장 '배움을 멈추지 말자'에서는 소프트웨어 엔지니어의 꾸준한 성장을 위한 필요성과 학습법을 알려준다.
마지막 부록은 다양한 배경과 전문성을 가진 5분 개발자의 인터뷰 내용이 소개되어 있다.
소프트웨어 엔지니어의 일대기를 한 권의 책으로 요약한 것 같다. 주니어 엔지니어때부터 기업의 최고 기술 책임자까지 갖춰야할 덕목을 빠짐없이 다루고 있다. 다만 초급 엔지니어에게는 추천하고 싶지 않다. 처음부터 부담감을 가질 필요가 없기 때문이다.
책에서는 소프트웨어 엔지니어가 성장하는 올바른 길을 쉽고 자세히 알려준다. 각 부마다 핵심 요약이 있지만, 개인적으로 책 전체가 핵심 요약인 것 같다.
특히 인상 깊었던 점은 기본 원칙을 강조하면서도 AI 도구까지 최신 정보를 다루고 있다는 것과 책 속에서 다양한 책을 소개한다는 점이다. 마치 한 권의 책을 읽었는데, 다시 10~20권의 숙제를 받은 느낌이랄까? 너무 좋다.
부록의 전문가 5인의 인터뷰도 빼놓을 수 없겠다. 각 분야에서 정상을 달리고 계시는 전문가가 들려주는 진솔한 경험담과 성장 조언에서 많은 영감을 얻을 수 있었다.
끝으로, 이 책은 소프트웨어 엔지니어의 성장 과정을 다루고 있지만, 결국 올바른 마음가짐과 실천이 무엇보다 필요한 것을 강조한다는 느낌을 강하게 받았다. 이민석 교수님의 당부의 말씀으로 마무리하고자 한다.
여러분의 커리어는 스스로 책임지고 발전시켜야 한다는 점을 잊지 않기를 바랍니다. 독자 여러분이 빠르게 변화하는 기술과 환경에 적응하며, 나아가 변화를 이끌 수 있기를 기대합니다.
부록, p514
"YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다"