메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

소프트웨어 엔지니어 가이드북

주니어부터 리더까지, 소프트웨어 엔지니어라면 꼭 알아야 할 커리어 관리의 비법

한빛미디어

번역서

판매중

  • 저자 : 게르겔리 오로스
  • 번역 : 이민석
  • 출간 : 2024-10-30
  • 페이지 : 568 쪽
  • ISBN : 9791169213073
  • 물류코드 :11307
  • 초급 초중급 중급 중고급 고급
4.7점 (6명)
좋아요 : 10

 

 

 

“그날 나는 결심했다. 
내가 매니저가 된다면 팀원들에게 성장에 필요한 조언을 주리라.”
 

현대 IT 산업에서 소프트웨어 엔지니어로 성공적인 커리어를 쌓으려면, 뛰어난 코딩 실력만으로는 부족합니다. 빠르게 변화하는 기술 환경 속에서 직무를 효율적으로 수행하고, 장기적인 커리어 발전을 이루기 위해서는 더 많은 준비가 필요합니다. 이 책은 많은 기업에서 엔지니어링 매니저로 재직한 저자가 현업에서 팀원들에게 조언을 주는 과정에서 깨달은 경력 관리의 비법을 담고 있습니다.
 

소프트웨어 엔지니어가 실제 직장에서 겪을 다양한 상황에 대한 해결책을 소개하는 가이드북입니다. 단순한 이론을 넘어 실제 현장에서 바로 적용할 수 있는 유용한 정보까지 담았습니다. 주니어 엔지니어부터 시니어 엔지니어, 스태프 엔지니어에 이르기까지 경력 단계에 따라 다음 단계로 나아가는 데 필요한 정보와 커리어 발전을 위한 구체적인 로드맵, 장기적인 커리어 성공을 위한 청사진을 만나보세요.

 

게르겔리 오로스 저자

게르겔리 오로스

소프트웨어 엔지니어이자 작가로, 75만 명 이상의 구독자를 보유한 테크 뉴스레터 ‘프래그매틱 엔지니어(The Pragmatic Engineer)’를 발행하고 있다. 우버에서 엔지니어링 매니저이자 엔지니어로 재직했으며, 마이크로소프트, JP모건, 스카이프, 스카이스캐너에서 엔지니어로 재직했다.

이민석 역자

이민석

우리나라에 PC가 처음 들어올 때부터 여러 회사와 소프트웨어 및 하드웨어를 개발해왔다. 1995년 서울대학교에서 컴퓨터공학 박사 학위를 받았다. 1990년대 후반에는 선후배들과 리눅스로 스마트폰을 만드는 회사를 세우고 열심히 일했으며, 그 회사를 거쳐간 수많은 개발자가 리눅스 및 오픈 소스 개발자로 훌륭하게 성장할 수 있도록 도운 것을 자랑스럽게 생각하고 있다. 한성대학교와 NHN NEXT에서 교수와 학장으로 개발자들을 양성했다. 지금은 국민대학교 소프트웨어융합대학에서 전공자 및 비전공자를 위한 소프트웨어 교육에 힘쓰고 있다.

 

[1부 개발자 커리어의 기본 사항]

 

1장 커리어패스
_1.1 기술 기업의 유형
_1.2 전형적인 소프트웨어 엔지니어링 커리어패스
_1.3 보상에 따른 기업의 티어
_1.4 비용 센터, 수익 센터
_1.5 커리어 발전을 위한 대안적 사고방식

 

2장 커리어 관리
_2.1 커리어 주인의식
_2.2 일을 잘하는 사람
_2.3 작업 일지 작성
_2.4 동료와의 피드백
_2.5 매니저를 아군으로 만드는 법
_2.6 페이스 조절

 

3장 성과 평가
_3.1 빠른 준비: 상황 파악 및 목표 설정
_3.2 습관의 힘
_3.3 성과 평가 전에 할 일
_3.4 성과 평가

 

4장 승진
_4.1 승진은 어떻게 결정되는가?
_4.2 승진 절차의 유형
_4.3 터미널 레벨
_4.4 빅테크에서의 승진
_4.5 승진을 위한 조언
_4.6 장기적인 경력

 

5장 어디서나 통하는 접근법
_5.1 제품 팀 및 제품지향적 엔지니어
_5.2 플랫폼 팀
_5.3 평시 vs 전시
_5.4 기업 유형

 

6장 이직
_6.1 새로운 기회의 탐색
_6.2 승진 vs 이직
_6.3 기술 면접 준비
_6.4 하위 직급으로 이직
_6.5 상위 직급으로 이직
_6.6 새 직장 적응

 

[2부 유능한 소프트웨어 개발자]

 

7장 업무를 완수하는 개발자
_7.1 가장 중요한 업무에 집중하기
_7.2 막힌 부분 풀기
_7.3 작은 단위로 작업 쪼개기
_7.4 작업 소요 시간 추정
_7.5 멘토 찾기
_7.6 선의 통장
_7.7 솔선수범하라

 

8장 코딩
_8.1 코딩 연습하기
_8.2 가독성 높은 코드
_8.3 품질 높은 코드 작성

 

9장 소프트웨어 개발
_9.1 프로그래밍 언어에 능숙해지기
_9.2 디버깅
_9.3 리팩터링
_9.4 테스트

 

10장 생산적인 소프트웨어 개발자의 도구
_10.1 로컬 개발 환경
_10.2 자주 사용하는 도구들
_10.3 빠른 개발 사이클 유지 방법

 

[3부 다재다능한 시니어 엔지니어]

 

11장 업무를 완수하는 엔지니어
_11.1 인식과 현실
_11.2 나만의 작업 시간 확보
_11.3 ‘제대로’ 완수하기
_11.4 팀
_11.5 큰 그림의 이해

 

12장 협업 및 팀워크
_12.1 코드 리뷰
_12.2 2인 협업
_12.3 멘토링
_12.4 피드백
_12.5 다른 엔지니어링 팀과의 협업
_12.6 다른 사람에게 좋은 영향력 전파하기

 

13장 소프트웨어 엔지니어링
_13.1 언어, 플랫폼 및 도메인
_13.2 디버깅
_13.3 기술 부채
_13.4 문서
_13.5 소프트웨어 엔지니어링 방법론

 

14장 테스트
_14.1 단위 테스트
_14.2 통합 테스트
_14.3 UI 테스트
_14.4 자동화된 테스트를 위한 멘탈 모델
_14.5 특정 용도의 테스트
_14.6 프로덕션 환경에서의 테스트
_14.7 테스트 자동화의 장단점

 

15장 소프트웨어 아키텍처
_15.1 디자인 문서, RFC 및 아키텍처 문서
_15.2 프로토타이핑 및 PoC
_15.3 도메인 주도 설계
_15.4 출시를 위한 소프트웨어 아키텍처

 

[4부 실용주의 테크리드]

 

16장 프로젝트 관리
_16.1 엔지니어가 프로젝트를 주도하는 회사
_16.2 프로젝트 관리는 왜 하는가?
_16.3 프로젝트 킥오프 및 마일스톤 설정
_16.4 소프트웨어 물리학
_16.5 일상적인 프로젝트 관리
_16.6 위험 및 종속성
_16.7 프로젝트 마무리

 

17장 프로덕션 출시
_17.1 프로덕션 출시까지의 극단적인 상황
_17.2 전형적인 출시 프로세스
_17.3 원칙과 도구
_17.4 추가 검증 단계
_17.5 실용적인 위험 감수하기
_17.6 추가 고려 사항
_17.7 접근 방식의 선택

 

18장 이해관계자 관리
_18.1 이해관계자 관리의 진정한 목표
_18.2 이해관계자 유형
_18.3 이해관계자 파악하기
_18.4 지속적인 관리
_18.5 비협조적인 이해관계자
_18.6 이해관계자에게서 배우기

 

19장 팀 구조
_19.1 직함과 역할
_19.2 팀의 프로세스
_19.3 팀의 집중력 향상

 

20장 팀 내 역학
_20.1 건강한 팀
_20.2 건강하지 않은 팀
_20.3 성장통을 겪는 팀
_20.4 팀 역학 관계의 개선
_20.5 다른 팀과의 관계

 

[5부 롤모델로서의 스태프 및 수석 엔지니어]

 

21장 비즈니스의 이해
_21.1 북극성, KPI, OKR
_21.2 팀과 제품
_21.3 직장
_21.4 상장 기업
_21.5 스타트업
_21.6 산업 분야

 

22장 협업
_22.1 사내 정치
_22.2 다른 사람에게 좋은 영향력 끼치기
_22.3 매니저와의 협업
_22.4 스태프+ 동료와 협업하기
_22.5 인적 네트워크의 확장
_22.6 다른 사람 돕기

 

23장 소프트웨어 엔지니어링
_23.1 스태프+ 엔지니어의 코딩
_23.2 유용한 엔지니어링 프로세스
_23.3 빠른 반복을 위한 엔지니어링 사례
_23.4 엔지니어의 효율을 높이는 도구
_23.5 규정 준수 및 개인정보 보호
_23.6 안전한 개발

 

24장 신뢰성 높은 소프트웨어 시스템
_24.1 신뢰성에 대한 책임 의식
_24.2 로깅
_24.3 모니터링
_24.4 알림
_24.5 온콜
_24.6 사고 관리
_24.7 복원력 있는 시스템 구축

 

25장 소프트웨어 아키텍처
_25.1 가능한 한 단순하게 하기
_25.2 전문 용어는 알되, 남용하지 않기
_25.3 아키텍처 부채
_25.4 단방향 결정 vs 양방향 결정
_25.5 의사 결정의 ‘영향 반경’
_25.6 확장 가능한 아키텍처
_25.7 실무 작업과 충분히 가까운 거리 유지하기
_25.8 소프트웨어 아키텍트의 특성

 

[6부 결론]

 

26장 배움을 멈추지 말자
_26.1 호기심 유지
_26.2 계속 학습하기
_26.3 계속 도전하기
_26.4 업계 동향 파악
_26.5 휴식 시간

 

[부록]
좋은 개발자를 바라보는 다양한 시선
개발자의 역할: 기술과 사람의 만남
세상은 언젠가 우리에게 리더가 되라 한다
변화에 적응하고 실행하는 개발자의 마인드셋
AI 시대, 개발자의 성장과 미래

75만 구독 뉴스레터 운영자가 전하는
성공적인 커리어 관리 로드맵

 

이 책은 신입 소프트웨어 개발자부터 스태프/수석/저명 엔지니어까지 커리어를 관리하는 데 필요한 내용을 소프트웨어 엔지니어의 ‘전형적인’ 커리어패스 구조를 따라 내용을 정리한다. 저자는 개발자로 활동하는 동안 알고 싶었지만 누구도 알려주지 않았던 교훈과 매니저로 재직하며 다양한 경력 단계에 있는 엔지니어를 코칭하며 얻은 경험을 바탕으로 개발자에게 꼭 필요한 내용을 담았다. 엔지니어로서 성장하는 데 필요한 개념 및 접근법 같은 업무의 하드 스킬, 사회인으로서 주변 동료에게 좋은 인상을 남기는 데 필요한 소프트 스킬까지 성공적인 커리어를 만드는 비법을 전달한다.
한국어판에는 국내에서 활동하는 개발자들이 성장하며 얻은 중요한 경험과 지혜를 담은 칼럼을 수록했다. 다양한 배경과 전문성을 지닌 개발자들이 전하는 좋은 개발자의 정의, 개발자의 역할, 리더로 성장하는 방법, 급변하는 기술 시장에 적응하는 전략, AI 발전에 따른 개발자 역할의 변화에 관한 이야기를 통해 자신의 커리어에 유용한 인사이트를 얻길 바란다.

 

대상 독자

  • 커리어 관리에 관심을 가진 엔지니어
  • 소프트웨어 엔지니어의 경력 관리가 궁금한 학부생
  • 경력에 필요한 스킬이 궁금한 주니어 개발자
  • 승진을 앞두거나 막 승진한 소프트웨어 엔지니어
  • 이직을 고민 중인 엔지니어

 

주요 내용

  • 커리어 단계별 성장 전략
  • 실제 사례를 통한 문제 해결 방법
  • 리더십과 팀 관리 역량 개발

비개발 직군에서도 마찬가지였지만, 개발자로 처음 일하기 시작했을 때 난 어떤 개발자가 될 수 있을지를 고민했었다. 사실 어떤 개발자가 되고 싶다는 말은 다소 추상적이며 큰 그림에 가깝지만, 그려나가는 과정은 결국 구체적인 액션을 통해 이루어진다고 생각한다. 주니어 레벨에서는 그런 구체적인 액션을 하나하나 사고하기엔 어려움이 있기 때문에 그 어려움에 봉착했을 때 이런 류의 가이드북이 도움이 되는 것 같다.

 

이런 가이드북 형태의 도서는 시중에 꽤 많지만, 사실 경력이 1~2년 정도일 때는 눈앞의 업무에 몰두하느라 큰 그림을 그려보지 못했던 것 같다. 현재에도 아직 배울 거 투성이지만 과거의 나보다는 조금 더 경험이 생긴 시점에서 큰 그림을 그려보고 싶던 차였는데, 공교롭게 적당한 시기에 이 책을 읽게 되었다는 생각이 든다.

 

이 책은 크게 6부로 나뉘어 있는데, 구체적으로 보자면 ‘개발자 커리어의 기본 사항’, ‘유능한 소프트웨어 개발자’, ‘다재다능한 시니어 엔지니어’, ‘실용주의 테크리드’, ‘롤모델로서의 스태프 및 수석 엔지니어’, ‘결론’ 이렇게 구성되어 있다. 그 안에서 각 파트에 맞게 다양한 섹션으로 나뉘어 있는데, 예컨대 ‘업무를 완수하는 개발자’, ‘소프트웨어 아키텍처’, ‘프로젝트 관리’, ‘비즈니스의 이해’와 같은 섹션들이다. 이 책은 관심사에 맞게 찾아 읽기 좋은 구성으로 되어 있다. 나도 처음에는 순서대로 읽기 시작했지만, 곧 관심 있는 섹션부터 찾아 읽어 나가는 방식이 더 효율적이라고 느꼈다. 실제로 커리어를 그려 나감에 있어서 개개인의 고민이 다르기 때문에 사전에서 단어를 찾듯 당장 눈앞에 놓인 고민과 관련된 섹션을 먼저 읽어나가는 방법을 권하고 싶다. 원래 사람은 닥쳐야 더 집중이 잘 되지 않나.

 

내가 가장 먼저 택한 섹션은 ‘커리어 관리’였다. 최근에 혼자 웹 프론트 개발을 진행하면서 어떻게 일을 잘할 수 있을지, 미래의 나를 위해 어떤 식으로 일해 나가는 게 좋을지에 대한 고민을 종종 하는데, 거기에 대한 조언을 구하고자 싶은 마음이었다. 인상적이었던 구절은 ‘내가 한 일을 사람들에게 알리자’라는 부분이었다. 혼자 작업하다 보면, 스스로에게 얼마나 관대하냐에 따라 작업의 품질이 달라지기 마련이었다. 물론 그렇다고 프로젝트의 진행이 더뎌질 정도로 엄격하게 구는 건 곤란하지만, 실제로 어느 정도의 엄격함을 적용하려면 자신만의 잣대가 필요하다. 그 잣대를 결정하는 기준, 그리고 그 잣대를 소화해 내는 나에 대한 평가와 더불어 생기는 여러 고민이 있었고, 그 과업을 해결했을 때 스스로가 내리는 결론이나 남은 과업을 바라보며 생기는 다양한 사고 등이 있었다. 이런 것들은 끝내 내가 안고 가는 것들이고 누군가에게 공유하지 않으면 타인은 알기 어려운 것들이다. 책에서는 성과에 대한 것들을 사람들에게 알리자는 짧은 맥락이었지만, 난 조금 더 폭넓은 관점에서 내 고민과 사고에 대해 알리면 좋을 것 같다는 생각이 들었다.

 

그다음으로는 ‘승진’이었다. 당장 회사에서 승진을 원한다기보다 매년 상급자를 통해 평가를 받아야 하는 입장에서 상급자의 시선이 궁금했고, 그리고 그런 평가의 과정 속에서 어떻게 현명하게 대처할 수 있을지가 궁금했다. 인상적으로 읽은 부분은 업무 정리와 성과 기록에 대한 내용이었다. 실제로 바쁘게 업무를 하다 보면 전체적인 정리나 성과를 기록하는 건 잊게 되는 경우가 많은데, 인간은 망각의 동물이기 때문에 나중에 돌이켜보면 과거의 내가 어떤 업무를 했는지 가물가물한 경우가 많았다. 이는 승진이나 연봉 협상을 떠나, 스스로를 객관적으로 판단하는 데에도 어려움이 있기 때문에 특정 템플릿을 통해 일일 기록이 어렵다면 주간 기록이라도 남기는 편이 좋겠다는 생각이 들었다.

 

다음으로 찾은 섹션은 ‘업무를 완수하는 개발자’였다. 실제로 이 파트가 주니어에게 중요하다고 생각하는 건, 코드의 퀄리티도 중요하지만 과업을 정해진 기간 안에 끝내는 것이 가장 중요한 일이기 때문이다. 나의 케이스를 돌이켜 보면 안 되는 걸 안 된다라고 말하는 데까지에는 시간이 꽤 걸렸는데, 크게 두 가지가 있었다. 구현이 막힌 것이 아니라 단순히 물리적인 기간 안에 구현이 어려운 케이스와 물리적인 기간과 무관하게 어디서부터 접근해서 해결해 나가야 하는지 난감한 케이스라고 볼 수 있다. 첫 번째 케이스는 거절과 협의의 과정이 미숙해서 생긴 문제였고, 두 번째 케이스는 기술적 성숙도가 떨어지는 문제도 있었지만 근본적으로는 문제를 명확하게 파악하지 못하는 것이 더 큰 문제였다.

 

이 책에서 권고하는 방식은 작업의 우선순위를 정하고 그 우선순위의 과업을 해결하지 못할 때는 거절하는 법을 배울 필요가 있다는 점이었다. 실제로 내 경우에도 커리어 초기에 특정 애니메이션을 구현하는 파트에서 막혀 꽤 시간을 소요했던 기억이 있다. 사실 우선순위로 놓고 보자면 상품의 상세 페이지로 가는 라우터 작업과 API 호출, 그리고 해당 객체가 호출되지 않았을 때를 대비한 예외 처리가 더 중요했지만, 작업이라는 게 하다 보면 특정 구간에 꽂히기 마련이었다. 그때 도움을 줄 수 있는 건 스스로 마음속에 지니고 있는 우선순위라고 생각한다. 우선순위를 정해놓고 자주 리마인드하다 보면 마음 한구석에서 지속적으로 경보가 울리기 때문에 미리 정해놓는 게 중요했다. 그다음으로 언급되는 내용이 거절할 필요에 대한 이야기인데, 결국 거절을 하기 위해선 우선순위를 명확히 하는 것이 선행되어야 했다. 우선순위가 명확하지 않으면 거절의 근거를 마련할 수 없고, 그런 근거가 없다면 명령권자로부터 내려진 작업에 대해 협의하기도 어렵기 마련이었다. 이 책에는 이러한 명확한 우선순위를 정하는 것, 그리고 거절의 흐름을 가져가기 위한 조언을 말하고 있다.

 

그 외에 세 개의 연속된 소제목이 공감되었다. ‘작은 단위로 작업 쪼개기’, ‘작업 소요 시간 추정’, ‘선의 통장’. 일반적으로 작업을 맡게 되면 여러 작은 단위의 기능이 결합되어 있거나, 특정 단위의 모듈로 분리할 필요가 있거나, 혹은 다른 직군과의 지속적인 소통이 필요한 경우가 있다. 그 작업을 온전히 수행하려면 가장 작은 단위부터 작업을 쪼개고, 이를 기준으로 컴포넌트를 분리하는 편이다. 이런 작업이 선행되면 작업 소요 시간을 추정하는 일은 상대적으로 쉽게 판단할 수 있었다.

 

그리고 ‘선의 통장’이라는 표현은 다른 사람을 도우면 선의 통장의 잔고가 늘어나고 도움을 청하면 잔고가 줄어든다는 의미로 사용하고 있다. 이 부분은 주니어 레벨에서 요구되는 ‘질문 잘하기’와 연관이 있다고 느꼈다. 사실 이건 개발에만 해당되는 부분이 아니다. 분야를 떠나 경험이 적은 회사원에게도 해당되고, 무언가 배울 때에도 숙련도가 부족한 학생에게도 해당되는 영역이라고 생각한다. 나의 경우에는 매 순간 다양한 질문을 하고 싶었고, 그 질문은 당장 당면한 문제를 어서 해결하고 싶은 말초적인 욕구로부터 나오기 때문에 정리된 질문이라고 보기는 어려웠다. 우리는 무언가 학습하거나 업무에 익숙하지 못할 때 선임자나 강사로부터 질문을 망설이지 말라는 조언을 듣지만, 정리되지 못한 질문은 명쾌한 답변을 내어놓기 어렵고 그 과정에서 서로 불편한 관계에 놓이게 될 가능성이 높다. 실제로 요즘 이렇게 하려고 노력하고 있는데, 책에서 조언하는 방식은 크게 세 가지다. 기업 내부 지식 베이스에서 찾아볼 것, 프레임워크나 기술 관련 문서를 꼼꼼히 읽어볼 것, 관련 커밋 기록을 살펴볼 것. 사실 이건 옵셔널한 게 아니라 질문하는 사람이 기본적으로 해야 할 일이라고 생각하고, 앞서 저런 선행 과정을 거치고 나면 질문의 맥락이 보이고 이어질 꼬리 질문에 대한 그림까지도 그려지는 경우가 많았다.

 

그 외 다양한 사례와 조언을 마주하면서 책의 마지막인 6부 ‘결론’에 도달하면 배움을 멈추지 말라는 말과 함께 여러 가지 조언을 이어간다. 가장 먼저 호기심을 유지하는 태도다. 이 책에서 세 가지 질문이 도움이 된다고 권유하고 있는데, 그 세 가지는 다음과 같다. 이 솔루션은 정확하게 어떻게 동작하는가, 이 컴포넌트는 내부에서 어떤 일을 하는가, 처음부터 자체 솔루션을 구축하면 어떤 효과가 있을까. 앞서 두 개의 질문은 실제로 기능 구현을 하면서 종종 고민하는 포인트인데, 마지막 질문은 자주 고민하지 못하곤 한다. 실제로 Sentry를 통해 에러 트래킹을 구축했을 때 사수 역할을 해주시는 시니어 개발자님이 하셨던 이야기가 생각났다. “이거 나중에 저희가 만들어보죠. 구조 자체는 어렵지 않은 거 같은데”. 그때 뭔가 부담스러우면서 동시에 인상적이었던 기억이 난다. 아 라이브러리나 툴이 그저 그 존재 자체로 받아들이고 끝나는 게 아니라 직접 구축의 미래까지 그려볼 수 있구나. 경력이 쌓여 나가면서 중니어, 시니어 개발자가 된다는 건 단순히 기능 구현과 내부 코드 파악으로 끝나는 것이 아니라 개선의 여지, 혹은 그 이상의 무언가를 바라보는 것도 중요한 포인트라는 생각이 든다.

 

그다음은 계속 학습하고 도전할 것을 권유하고 있다. 개발의 모든 분야가 그러하지만 내가 주로 작업하는 웹 프론트엔드는 변화가 심한 분야이다. 실제로 작년에 Next.js 13 버전을 통해 프로젝트를 했었지만 얼마 전에 15 버전이 나온 상황이고, React 또한 현재 RC 버전이긴 하지만 19 버전 출시를 앞두고 있다. 웹 프론트엔드 개발자 커뮤니티에서는 매 순간 새로운 기능에 대한 논의가 오가고, 업계 동향을 살핀다. 개발자가 최근 몇 년 사이에 유망 직업으로 떠오르면서 부트캠프니 KDT니 다양한 교육이 진행되고 있지만, 그 이면에는 LLM을 통해 대체되는 것이 아니냐는 불안 또한 공존한다. 물론 난 온전한 대체가 아닌 유용한 툴로서의 LLM이 존재하고 그 활용도에 따라 각각의 미래가 달라질 거라고 생각하지만, 어쨌든 청사진만 존재하지 않기 때문에 학습과 도전이 숙명적인 분야라는 생각을 한다.

 

책에서 제시한 조언과 사례들은 유용하지만 결국 도구나 지침에 가깝다. 결국 중요한 것은 어떻게 나의 상황과 맥락에 맞게 해석하고 활용하느냐에 있다. 이 책을 멋대로 한 줄 요약하자면, 능동적인 성장의 주체가 되라는 의미로 보였다. 단순히 업무 성과를 내는 것에 그칠 것이 아니라 자신의 커리어와 삶 전반에 걸쳐 능동적으로 목표를 설정하고, 그 목표를 향해 나아가는 주체적인 행동들이 결국 전체 그림을 그려내는 과정이라는 것이다. 개발 직무를 떠나 내가 어떤 사람이 될지는 지금 내가 무엇을 고민하고, 실행하는가에 달려 있다는 점이다. 그 실행은 끝내 능동적이고 주체적이어야 할 것, 그 메세지와 함께 책의 마지막 챕터를 덮었다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

 

회사에 근무하는 것을 넘어서서 장기적으로 커리어를 관리하는 것에 대한 관심은 누구나 갖고 있을 거라 생각합니다.

 

요새는 유튜브를 포함해 다양하게 수익을 창출할 수 있는 IT 업무들이 있지만, 그럼에도 우리의 본업이 있다면 본업에서 "유능한" 직원이 되는 것은 필수라고 생각합니다.

 

언젠가 개발 인적 자원을 매니징하는 직원이 된다면, 필요한 역량이 무엇인지 늘 고민해보고 실험해야할텐데 이 책은 이러한 IT 개발 인력이 성장해 나가면서 필요한 로드맵을 제공한다고 봅니다.

책을 처음 받으시면 묵직하다는 느낌을 받게 됩니다.

책의 구성, 편집, 가시성등도 매우 좋고 무엇보다 게르겔리 오로스 저자님과 이민석 교수님의 번역서적이여서

아주 개발자 입장 및 현실감 있는 구문으로 책이 잘 구성되어 있을거라는 기대감이 들게 합니다.

 

책의 제목처럼 소프트웨어의 연차와 무관하게 다양한 엔지니어 연차에 대해서 가이드북이 될것이라는 기대를 가지고 

책을 살펴보았습니다.

 

책의 구성은 총 6부, 26장으로 구성되어 있습니다.

1부 : 개발자 커리어의 기본 사항

2부 :  유능한 소프트웨어 개발자

3부 : 다재다능한 시니어 엔지니어

4부 : 실용주의 테크리드

5부 : 롤모델로서의 스태프 및 수석 엔지니어

6부 : 결론

 

책의 구성 처럼 다 연차와 경력에 필요한 시점의 엔지니어 가이드를 받을수 있는 범위로 되어 있습니다.

 

 

 

 

 

 

■ 1부. 개발자 캐리어의 기본 사항

· 캐리어 패스에 대해서 상세히 알수 있습니다.

경험이 많은 개발자 또는 경력이 있으신 분들은 조금더 그룹핑을 통해서 머리속으로 알고 계신 사항을 정리할수 있고, 

경험이 적은 분들은 조금 더 구체적으로 기업 유형 및 커리어패스 (엔지니어즉 개발 직군, 매니저 직군)에 대한 정리를 하실수 있습니다.

우리는 이러한 캐리어 경력을 통해서, 승진도 하고 보상을 받기를 원합니다. 매니저 입장에서는 이러한 사항을 공정하고 현실적으로 

판단하기를 추구합니다. 이러한 부분에 가이드 라인을 제공하기에 각자의 입장에서 상대방의 관점으로 어떻게 접근 해야 하는지 알수 있습니다.
성과 평가와 승진에 대해서는 구체적으로 언급된 사항들이 매우 구체적으로 기술하며, 내가 부족한 부분을 바로 확인하고 이해하기 쉽게

기술되어 있습니다. 많은 부분 공감이 됩니다.

 

 

 

· 이직에 대해서 조언이 현실적입니다. 이책은 소프트웨어 엔지니어 입장으로 기술되어 있기 때문에 그 특수성이 있습니다.

적극적/소극적으로 이직을 알아볼때, 승인하거나 이직할때 고려해야 하는 사항, 연차가 높을때의 이직시 고려해야 하는 사항, 

면접에 준비하는 과정, 이직후 온보딩의 다양한 케이스 등이 설명되어져 있습니다.

온보딩의 경우 소규모 기업, 큰 기업, 시니어급 이상의 온보딩, 스태프 이상의 온보딩등 각각의 기업에서 기대하는 부분과 

접근해야 하는 관점이 많은 공감을 가지게 합니다.

 

 

■ 2부. 유능한 소프트웨어 개발자

우리는 대부분 소프트웨어 개발자로 시작을 하였기 때문에, 해당 세션에 대해서 가장 관심을 많이 가지게 됩니다.

· 업무를 완수하기 위해서는 어떻게 접근해야 하는지 설명합니다. 

여러 이해관계자가 있는 업무에서 우리는 어떻게 접근해야지 효율적인 업무를 통해서 회사 및 관련 부서에 효과적인 업무 진행이 가능한지

다양한 케이스 및 선택할수 있는 조언들이 포함되어 있습니다.

 - 가장 중요한 업무에 집중하기

 - 막힌 부분 기술적으로 해결하기

 - 작은 단위로 작업 쪼개기

 - 작업 시간 추정 방법 등 매우 현실적인 내용입니다.

원서의 저자분이 미국 기준 및 관점으로 설명이 되어 있으면 하는 생각도 들었지만, 

언급된 내용을은 모두 국내에서도 적용하고, 사용되어지는 관점 및 특별하게 다른다고 생각되어 지는 부분은 없었습니다.

 

· 코딩관련, 개발능력 향상

어떻게 하면 실력이 향상되는지 방향성을 제시해줍니다.

무슨 방법으로 하면 업무도 하면서, 실력을 늘릴수 있을까요? 회사에서 조직문화가 책에 언급된 문화가 정책되어 있다면 좋겠지만

인력의 구성 및 문화가 다르면 바로 적용해볼수는 없지만, 지속적으로 강조하고 작은 단위로도 적용을 해보야 한다.

 - 코드 리뷰, 더 많은 코딩을 해볼수 있는 방법, 가독성을 높일수 있는 코드 작성 방법, 품질 높은 코드를 작성하는 방법

 - 다른 언어를 언제 배울까, 깊게 갈까? vs 넓게 갈까? 디버깅, 리팩토링에 대해서 어디까지 적용하고 효율적으로 접근하기 위한 가이드를 제시합니다.

- 로컬 환경 구성 및 디버깅, Git형상관리 등에 대해서 왜 필요하고, 주요 관점으로 바로 학습이 필요한 부분도 제시합니다.

이러한 내용을 살펴볼때, 내가 지금 필요한 부분이 무엇인지 각자 독자분들이 느끼점 점이 분명 다르게 다가오는 것을 느낄수 있습니다.

전반적으로 개념적으로 작게 적용하는 부분도 있고, 평소에 필요한 부분이 각자 다르기 때문입니다.

관련 사항은 모두 지금 필요한 부분으로 지금 바로 진행하는 것을 추천합니다.

 

 

■ 3부. 다재다능한 시니어 엔지니어

엄무를 완수하는 것이 제일 중요한 시점입니다. 

· 필수로 챙겨야 하는 이해관계자들과의 관계 및 접근법 내용이 있습니다.

프로젝트 관리 방법이라고 볼수도 있고, 소프트웨에 공학의 내용이라고 생각이 들수도 있습니다.

전체적인 부분은 아니고, 필요한 핵심적인 내용으로 있습니다.

 - 인식과 현실은 다를수 있다.

 - 업무 내용에 대한 소통

 - 조금 약속하고 많이 일하고, 소통 많이 하기

 - 장애가 되는 요소를 조기에 알리고 절충안을 제시하자

 - 나만의 시간 확보하기 (인바운드 요청 효율적으로 처리하기 등),

  : 우선순위를 정할때 많이 사용하게 되는 중요도/긴급성 판단하는 매트릭표

 

 

 

· 현업 및 팀워크를 잘하기 위한 방법

 코드 리뷰 및 멘토링, 경험이 부족할때 사용하는 방법 및 관련 부분을 어떠한 순서로 접근해야 할지 관련 내용이 공감대를 가지게 됩니다.

 

 

 

· 소프트웨어 엔지니어링 관련 부분

최신 현재의 기술 및 언어 기준으로 내용 설명이 됩니다.

 - 언어, 플랫폼, 도메인 및 디버깅, 기술부채, 문서화, 테스트 (UI테스트, 성능, 부하 등) 우리가 각자 엔지니에 입장에서 

접근해야 하는 기준을 알수 있습니다.

소프트웨어 아키텍처를 도입하려고 한다면 어떻게 해야 할까요?

조금 막연하시죠 예전에 나온 아키텍처도 있고, 요즘 많이 사용하는 아키텍처도 있고 무분별하게 도입하는것은 실패하게 되어 있습니다.

이러한 부분을 적용하려면 고려해야 하는 부분과 순차적으로 접근해야 하는 사항들도 잘 설명되어져 있고

도메인 주도 설계를 예시로 들어서 접근합니다.

 

■ 4장. 실용주의 테크리드

- 16장. 프로젝트 관리

- 17장. 프로덕션 출시

- 18장. 이해관계자 관리

- 19장. 팀 구조

- 20장. 팀내 역학

 

내용을 살펴보면, 회사 차원으로 크게 프로젝트, 프로덕션등을 다루고 있습니다.

개인의 관점이 아닌 조금 더 큰 개념으로 소프트웨어 엔지니어 입장으로 해당 직책을 가지고 있는 분들이 

접근해야 하는지 설명합니다.

역활에 대해서 고민이 있는 부분은 이렇게 명확히 포지션 정리 표는 현재 회사에서 부족하거나 조금 다른 부분에서 

해야할 역활을 다시 정리가능합니다.

 

 

 

프로젝트에 대해서 기존 회사에서 물론 진행된 케이스가 있습니다.

회사에서 관습대로 진행된 부분에 대해서 효율적으로 진행하기 위한 놓치고 있는 부분을 살펴볼수 있어서 

좋았습니다. 

 - 프로젝트 타임라인이 변경되는 경우

 - 프로젝트에 참여할 인원이 적은 경우

 - 프로젝트에 참여하는 사람이 바뀌었을때 등

다앙한 경우에 대한 케이스가 있습니다.

우리가 주로 사용하는 프로젝트 관리 방식의 내용도 정의해주고 있어서 좋습니다.

특별히 알아보지 않고, 관습적으로 사용하는 경우도 많이 있습니다.

 

 

 

 

 

<다양한 프로세스들의 비교표>

 

 

 

테스트시 카리나아 테스트 방법등에 대한 소개등 전체적인 배포 프로세스도 잘 나와 있습니다.

 

 

 

 

■ 5부. 롤모델로서의 스태프 및 수석 엔지니어

스태프 엔지니어 대한  역활 및 정의, 북극성, KPI, OKR에 대한 지표 및 측정대상에 대해서 설명합니다.

매년 회사에서 목표설정을 할때 등록하는 세부 항목에 대해서 부족한 부분과 더 필요한 개념에 대해서

잘못 알고 있는 것을 수정할수 있을것 같습니다.

- 고객입장에서 제품을 바라보기

- 타 팀과 함께 협업하는 방법

- 협업에 대한 다양한 부분 (사내 정치, 다른 사람에게 좋은 영향력 미치기, 인적 네트워크 향상 등)

 : 이러한 부분이 소프트웨어 기반으로 설명되어지고, 소프트웨어 관점으로 설명되어 지기 때문에 많은 공감이 들고

이해가 되는 부분이 많았습니다.

 - 신뢰성 있는 소프트웨어를 위해서 취해야 하는 다양한 방법들, 복원등에 대한 부분도 세심히 살펴봐야 합니다.

 

글이 1줄~2줄이여도 매우 시시하는 바가 다르고, 중요성에 공감하는 경우가 매우 많았습니다.

책에서 제시하는 가이드를 모두 다 바로 적용할 수는 없지만, 

분명 어렵고 혼돈이 되는 부분은 이 책이 좋은 가이드 북이 되어 줄것이라고 생각되었습니다.

회사에 갓 들어간 주니어 개발자는 자신에게 맡겨진 업무 처리하기에도 바빠서 다른 것들을 신경쓸 겨를이 없습니다.
하지만, 점점 경력이 쌓이고 실력이 쌓일수록 코딩 이외의 다른 것들, 예를 들면, 자신의 커리어, 동료들의과의 관계, 승진, 내가 하는 일 혹은 우리 팀이 하는일이 비지니스에 끼치는 영향 등, 다양한 것들에 신경을 써야 합니다.
그러나 이런 종류의 일들은 따로 가르쳐 주거나 배우기도 힘듭니다.

 

저자인 게르겔리 오로스(Gergely Orosz)는 이 분야에서 15년이상의 경력을 가지고 있는 엔지니어이자 매니저이고, 
그런 그가 자신의 경력동안 보고 느낀 점을 4년이라는 시간을 들여 집대성한 결과물이 이 책입니다.
'모든 페이지에 시간이 지나도 변하지 않을 관찰과 조언을 담았다.'라는 그의 말처럼 결코 얇지 않은 책임에도 불구하고, 그의 풍부한 경험치에서 우러나오는 조언들이 담겨있습니다.

 

갓 입사한 신입 개발자부터 각 단계별 개발자들에게 요구되는 역할, 책임, 역량을 설명해 주며, 개발자의 사고방식 변화의 필요성, 의사결정을 하는 과정, 조직에 기여하면서 자신을 어필할 수 있는 실용적인 통찰을 제공해 준다는 점이 이 책이 다른 책과 차별되는 특징이라고 느꼈습니다.

 

물론, 이런 내용들은 저자가 외국 IT 기업들에서 경험한 내용들이기 때문에 완전하게 우리나라 정서와 맞다고 할 수는 없지만, 개발자의 역할과 성장에 관한 이야기는 어디서나 보편적인 가치로써 인식될 수 있다고 봅니다.

 

이 책은 총 6부로 구성되어 있으며, 각각의 구성은 다음과 같은 내용들로 구성되어 있습니다.

 

1부 : 개발자 커리어의 기본 사항
자신의 커리어에 관심을 가지는 것은 오직 자기 자신뿐이라는 사실을 강조하며. 커리에 개발에 얼마나 관심이 있는지 깨닫고 그에 맞는 노력을 하자는 내용입니다.
커리어 관리의 중요성을 강조하는 것으로 시작하며, 회사 선택, 성과 평가, 승진, 이직과 같은 개발자 커리어의 모든 단계에서 적용할 수 있는 실질적인 조언을 제공합니다.
특히, 성과를 잘 전달하고 피드백을 활용하는 방법, 그리고 언제 이직해야 할지와 같은 중요한 결정을 내리는 방법에 대해서 조언합니다.

 

2부 : 유능한 소프트웨어 개발자
개발자로써 실력을 향상시키는 방법에 대한 내용으로서, 다양한 연습기회를 가지고, 주위 사람들에게 많이 배우고, 지속적으로 학습하는 습관을 가지라는 내용을 전달합니다.
기술적 역량으로는 코드 품질 향상, 가독성, 디버깅, 리팩토링과 같은 내용을 언급하며, 코드를 작성하는 단순한 개발자를 뛰어넘기 위해서 멘토 찾기, 협업 능력, 문제 해결 사고방식에 대해서도 다룹니다.


3부 : 다재다능한 시니어 엔지니어
시니어 엔지니어에게 요구되는 기술적 요구사항 뿐만 아니라, 팀, 조직, 비즈니스 관련 내용들을 소통하며 복잡한 문제를 해결하는 능력에 대해서 이야기합니다.
이 부분에서는 설계, 테스트, 협업, 문서화, 아키텍처 설계 등 시니어 개발자로서의 역할을 상세히 다루며, 실질적인 도구와 사례를 통해 문제 해결 능력을 키울 수 있도록 돕습니다.


4부 : 실용주의 테크리드
이 부분에서는 테크리드로 성장하기 위한 기술적 리더십과 팀 관리 역량에 대한 이야기를 합니다.
테크리드는 프로젝트를 효과적으로 관리하고, 리스크를 식별하며, 다양한 이해관계자와 소통하여 팀의 성과를 극대화하는 방법을 강조합니다. 
특히, 건강한 팀 문화를 만드는 법과 기술적 리더로서의 역할에 대해 깊이 다룹니다.


5부 : 롤모델로서의 스태프 및 수석 엔지니어
팀 내에서 좋은 영향력을 끼치는 엔지니어, 다른 개발자들에게 롤모델이 되어서 비즈니스와 기술 모두에 기여하는 전문가로 성장하기 위한 방법을 이야기합니다.
특히, 신뢰성 높은 소프트웨어 시스템 구축과 확장 가능한 아키텍처 설계에 대한 깊이 있는 통찰에 대해서도 언급하고 있습니다.


6부 : 결론
마지막 Chapter에서는 개발자로써 꾸준히 성장하기 위해서 배움을 멈추지 않는 자세에 대해서 강조합니다.
그리고 꾸준히 성장하기 위해서 어떤 방법들이 있는지에 대해서도 논의합니다.


책을 다 읽고 가장 먼저 든 생각은 제대로된 SW 개발자들을 위한 바이블이 나왔다라는 생각이 들었으며, 옆에 두고 시간날때 마다 들춰봐야하는 책이라고 생각합니다.
코딩에만 파묻혀서 닫혀있던 안목을 한단계,아니 두단계 넓혀주는 책입니다.
주어진 기능만을 단순하게 구현하는 개발자에서 비지니스 전체와 영향, 확장성까지 고려할 수 있는 안목을 키워주며, 
더 나아가 시니어 개발자로 성장하면서 시스템 설계와 아키텍쳐에 대한 이해도, 복잡한 시스템을 설계, 구현 방법, 확장성, 성능, 보안 등을 고려한 아키텍쳐 설계 능력을 할 수 있는 안목 또한 키워줍니다.

 

특히, 이 책이 강조하는 것이 방금 언급한 부분인데요, 개발 그 너머의 영역에 대한 능력을 향상시키라는 점을 강조한다는 점입니다.
코딩을 넘어 아키첵쳐를 이해하고 비지니스에 기여하는 방법, 협업하여 시너지를 이끌어내는 방법, 조직내에서 긍정적인 변화를 만들어 내는 방법 등, 
개발자에게 요구되는 그 너머의 능력에 대한 실력 향상을 시키는 것에 방점을 찍고 있습니다.

이 책을 읽고 나서야 이민석 교수님(옮긴이)께서 우리나라 개발자들이 이 책을 쉽게 접하길 바라는 마음과 책에서 느낀 감동과 통찰을 나누고 싶다는 옮긴이의 말씀이 제대로 이해가 되었다. 

 

저자는 엔지니어부터 매니저로서  다양한 기업에서의 경험을 가지고 있으며, 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 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다"


 

이번에 리뷰하게 된 책은 '소프트웨어 엔지니어 가이드북'이라는 도서 입니다.

 

이 책은 개발자의 전체 경력을 다루고 있습니다.

크게 6부로 구성되어 있습니다.

 

- 1부 개발자 커리어의 기본 사항

- 2부 유능한 소프트웨어 개발자

- 3부 다재다능한 시니어 엔지니어

- 4부 실용주의 테크리드

- 5부 롤모델로서의 스태프 및 수석 엔지니어

- 6부 결론

 

총 장수는 26장으로 이루어져 있으며, 성과 평가, 승진, 이직, 코딩, 개발자의 도구, 테스트, 팀 구조, 팀 내 역학, 비즈니스의 이해, 협업 등 다양한 내용을 다루고 있습니다.

 

마음에 와닿는 말들이 너무 많았지만 일부만 가져와서 제 생각과 함께 리뷰를 작성해보고자 합니다.

책에는 더욱 많은 내용들이 담겨 있으니 주니어, 시니어 개발자에 상관없이 모든 개발자가 기회가 된다면 읽어보면 좋을 것 같다는 생각이 들었습니다.

 

일을 잘하는 사람

책의 내용과 비슷한 생각을 했습니다. '엔지니어가 일을 잘하는 사람으로 보이지 않는다면 아무 소용없다.' 

그렇기에 책에서는 일을 잘하는 사람이 되기 위한 방법들을 소개하고 있습니다.

그런 여러가지 방법 중 아래의 '난해한 피드백의 해석', '부정적인 피드백을 무시하지 말고 열린 마음으로 받아들일 것'이라는 내용을 만나게 되었습니다.

 

부정적인 피드백을 들었을 때 무시하거나 화만 낸다고 더 나은 개발자가 될 수 있을까요?

내 문제를 해결하려고 노력하는 사람이 더욱 나은 사람이 될 수 있을 것입니다.

부정적인 피드백도 되돌아보면서 발판으로 삼는 연습이 필요하다는 생각이 들었습니다.

 

지금 직장에 만족할 때

 

이 부분은 사실 제 이야기를 써놓은 것인가? 라는 생각도 들었습니다.

현재 직장에 안주하고 있는데 그럴 때도 스스로의 평가와 레벨업을 위한 작업들이 필요하다는 점입니다. 이력서를 써서 외부에서 보는 내 위치를 파악하고, 기술 면접을 준비하면서 기술을 익히는 준비 말이죠.

 

어렵긴 하겠지만 이런 준비들을 천천히 해야한다는 생각이 들었습니다.

 

3부, 시니어 엔지니어로 넘어가게 되면 내용이 조금씩 변하기 시작합니다.

개인의 문제에서 팀의 문제를 바라보는 자세를 가져야한다고 말하는것 같았습니다.

멘토링과 피드백에 관련된 내용을 주로 다루고 있습니다.

 

그런 과정을 통해 '개인 브랜드'를 구축하고 지속적인 브랜딩이 필요하다고 말하고 있습니다.

3부의 마무리는 다음과 같은 말로 끝납니다.

 

'롤모델이 되는 시니어 엔지니어가 되려면 소프트웨어 엔지니어링 기술 숙달로는 충분하지 않다. 업무에 투입하는 노력보다 업무의 영향력이 더 중요하다.

 

4,5부에서는 더 많은 경력을 가진 개발자들에 대한 내용을 다루고 있습니다.

좋은 내용들이 많으니 읽어보시기를 추천드립니다.

 

정리

 

이 책은 주니어 개발자, 시니어 개발자 상관없이 모든 개발자들이 읽어보면 좋을만한 책이었습니다.

본인이 잘하고 있는지, 본인의 연차에서는 어떤 수준이 되어야 하는지.

그렇다면 그렇게 되기 위해서는 어떤 것들을 하면 좋은지에 대한 내용을 다루고 있습니다.

읽어보는 것 뿐 아니라 실천할 수 있다면 더 좋은 개발자가 될 수 있을 것 같은 생각이 드는 책이었습니다.

 

한빛미디어 < 나는리뷰어다 > 활동을 위해서 책을 제공받아 작성된 서평입니다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
소프트웨어 엔지니어 가이드북
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
소프트웨어 엔지니어 가이드북
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
소프트웨어 엔지니어 가이드북
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1