소프트웨어 엔지니어 가이드북(The Software Engineer’s Guidebook)
한빛미디어 ‘나는 리뷰어다’ 활동을 위해서 책을 제공받아 작성된 서평입니다.
회사에 갓 들어간 주니어 개발자는 자신에게 맡겨진 업무 처리하기에도 바빠서 다른 것들을 신경 쓸 겨를이 없습니다.
하지만, 점점 경력이 쌓이고 실력이 쌓일수록 코딩 이외의 다른 것들, 예를 들면, 자신의 커리어, 동료들의 과의 관계, 승진, 내가 하는 일 혹은 우리 팀이 하는 일이 비즈니스에 끼치는 영향 등, 다양한 것들에 신경을 써야 합니다.
그러나 이런 종류의 일들은 따로 가르쳐 주거나 배우기도 힘듭니다.
저자인 게르겔리 오로스(Gergely Orosz)는 이 분야에서 15년 이상의 경력을 가지고 있는 엔지니어이자 매니저이고,
그런 그가 자신의 경력 동안 보고 느낀 점을 4년이라는 시간을 들여 집대성한 결과물이 이 책입니다.
‘모든 페이지에 시간이 지나도 변하지 않을 관찰과 조언을 담았다.’라는 그의 말처럼 결코 얇지 않은 책임에도 불구하고, 그의 풍부한 경험치에서 우러나오는 조언들이 담겨있습니다.
갓 입사한 신입 개발자부터 각 단계별 개발자들에게 요구되는 역할, 책임, 역량을 설명해 주며, 개발자의 사고방식 변화의 필요성, 의사결정을 하는 과정, 조직에 기여하면서 자신을 어필할 수 있는 실용적인 통찰을 제공해 준다는 점이 이 책이 다른 책과 차별되는 특징이라고 느꼈습니다.
물론, 이런 내용들은 저자가 외국 IT 기업들에서 경험한 내용들이기 때문에 완전하게 우리나라 정서와 맞다고 할 수는 없지만, 개발자의 역할과 성장에 관한 이야기는 어디서나 보편적인 가치로써 인식될 수 있다고 봅니다.
이 책은 총 6부로 구성되어 있으며, 각각의 구성은 다음과 같은 내용들로 구성되어 있습니다.
1부 : 개발자 커리어의 기본 사항
자신의 커리어에 관심을 가지는 것은 오직 자기 자신뿐이라는 사실을 강조하며. 커리에 개발에 얼마나 관심이 있는지 깨닫고 그에 맞는 노력을 하자는 내용입니다.
커리어 관리의 중요성을 강조하는 것으로 시작하며, 회사 선택, 성과 평가, 승진, 이직과 같은 개발자 커리어의 모든 단계에서 적용할 수 있는 실질적인 조언을 제공합니다.
특히, 성과를 잘 전달하고 피드백을 활용하는 방법, 그리고 언제 이직해야 할지와 같은 중요한 결정을 내리는 방법에 대해서 조언합니다.
2부 : 유능한 소프트웨어 개발자
개발자로써 실력을 향상시키는 방법에 대한 내용으로서, 다양한 연습 기회를 가지고, 주위 사람들에게 많이 배우고, 지속적으로 학습하는 습관을 가지라는 내용을 전달합니다.
기술적 역량으로는 코드 품질 향상, 가독성, 디버깅, 리팩토링과 같은 내용을 언급하며, 코드를 작성하는 단순한 개발자를 뛰어넘기 위해서 멘토 찾기, 협업 능력, 문제 해결 사고방식에 대해서도 다룹니다.
3부 : 다재다능한 시니어 엔지니어
시니어 엔지니어에게 요구되는 기술적 요구사항뿐만 아니라, 팀, 조직, 비즈니스 관련 내용들을 소통하며 복잡한 문제를 해결하는 능력에 대해서 이야기합니다.
이 부분에서는 설계, 테스트, 협업, 문서화, 아키텍처 설계 등 시니어 개발자로서의 역할을 상세히 다루며, 실질적인 도구와 사례를 통해 문제 해결 능력을 키울 수 있도록 돕습니다.
4부 : 실용주의 테크리드
이 부분에서는 테크리드로 성장하기 위한 기술적 리더십과 팀 관리 역량에 대한 이야기를 합니다.
테크리드는 프로젝트를 효과적으로 관리하고, 리스크를 식별하며, 다양한 이해관계자와 소통하여 팀의 성과를 극대화하는 방법을 강조합니다.
특히, 건강한 팀 문화를 만드는 법과 기술적 리더로서의 역할에 대해 깊이 다룹니다.
5부 : 롤모델로서의 스태프 및 수석 엔지니어
팀 내에서 좋은 영향력을 끼치는 엔지니어, 다른 개발자들에게 롤모델이 되어서 비즈니스와 기술 모두에 기여하는 전문가로 성장하기 위한 방법을 이야기합니다.
특히, 신뢰성 높은 소프트웨어 시스템 구축과 확장 가능한 아키텍처 설계에 대한 깊이 있는 통찰에 대해서도 언급하고 있습니다.
6부 : 결론
마지막 Chapter에서는 개발자로써 꾸준히 성장하기 위해서 배움을 멈추지 않는 자세에 대해서 강조합니다.
그리고 꾸준히 성장하기 위해서 어떤 방법들이 있는지에 대해서도 논의합니다.
책을 다 읽고 가장 먼저 든 생각은 제대로 된 SW 개발자들을 위한 바이블이 나왔다는 생각이 들었으며, 옆에 두고 시간 날 때마다 들춰봐야 하는 책이라고 생각합니다.
코딩에만 파묻혀서 닫혀있던 안목을 한 단계, 아니 두 단계 넓혀주는 책입니다.
주어진 기능만을 단순하게 구현하는 개발자에서 비즈니스 전체와 영향, 확장성까지 고려할 수 있는 안목을 키워주며,
더 나아가 시니어 개발자로 성장하면서 시스템 설계와 아키텍처에 대한 이해도, 복잡한 시스템을 설계, 구현 방법, 확장성, 성능, 보안 등을 고려한 아키텍처 설계 능력을 할 수 있는 안목 또한 키워줍니다.
특히, 이 책이 강조하는 것이 방금 언급한 부분인데요, 개발 그 너머의 영역에 대한 능력을 향상시키라는 점을 강조한다는 점입니다.
코딩을 넘어 아키첵쳐를 이해하고 비지니스에 기여하는 방법, 협업하여 시너지를 이끌어내는 방법, 조직 내에서 긍정적인 변화를 만들어 내는 방법 등, 개발자에게 요구되는 그 너머의 능력에 대한 실력 향상을 시키는 것에 방점을 찍고 있습니다.