육각형 개발자 - 시니어 개발자로 성장하기 위한 10가지 핵심 역량
육각형 개발자가 좋은 개발자다!
스포츠계에서 각종 능력치가 고루 균등한 선수를 육각형 선수라고 부른다. 이 책의 제목이기도 한 육각형 개발자는 다양한 역량을 고루 갖춘 개발자라는 의미이다. 건강한 몸을 갖기 위해 여러 가지 영양소가 필요한 것처럼 좋은 개발자가 되려면 구현 기술 외에도 여러 역량을 키워야 한다. 모든 역량을 다 잘하기는 어렵지만 골고루 발전시킬 수는 있다. 이 책에 담긴 개발자 필수 역량을 살펴보면서 좋은 개발자로 성장하는 데 필요한 인사이트를 얻을 수 있을 것이다.
좋은 시니어 개발자로 성장하기 위한 주니어 개발자 시야 넓히기
이 책은 좋은 시니어 개발자가 되길 원하는 주니어 또는 중니어 개발자를 대상으로 한다.
★ 이 책에서 다루는 내용
효율적으로 구현 기술을 적용하고 학습하는 방법
소프트웨어 가치를 이해하고 유지보수 비용을 낮추는 방법
이해하기 좋은 코드를 작성하는 법
높은 응집도 + 낮은 결합도 원칙으로 설계하는 방법
변경 비용을 낮추는 기본적인 리팩터링 기법
테스트 코드의 중요성·자동화된 테스트와 TDD의 필요성
아키텍처의 중요성과 패턴의 유용함
업무 전반을 관리하기 위해 필요한 사항
협업과 소통을 위한 글쓰기와 시각화·지식 공유의 가치
리더와 팔로워의 역할 이해
★ 이 책의 구성
1장 들어가며
개발 시야를 넓히게 된 배경을 설명하고 개발의 범주와 개발을 잘하기 위해 필요한 것을 정리한다.
- 실패 이야기
- 개발이란
- 개발에 필요한 것
2장 구현 기술과 학습
개발자가 갖춰야 할 가장 기본적인 역량인 구현 기술을 다룬다. 학습해야 할 구현 기술을 어떻게 정하고 어떻게 익히는지를 설명한다. 그리고 구현 기술을 적용할 때 고려해야 하는 내용과 주의할 점을 살펴본다.
- 구현 기술·학습 대상·학습 전략
- 구현 기술 적용하기
- 주의할 점
3장 소프트웨어 가치와 비용
코드 품질과 개발 시간의 관계를 살펴보면서 소프트웨어 가치를 안정적으로 유지하기 위해 비용적 측면에서 고려해야 할 내용이 무엇인지 알아본다.
- 소프트웨어 가치
- 개발 비용
- 유지보수 비용을 낮추려면
4장 코드 이해
코드를 이해하는 역량을 높이면 효율적으로 유지보수할 수 있고 개발 시간을 줄일 수 있다. 코드를 분석하는 데 도움을 주는 도구를 살펴보고, 이해하기 좋은 코드를 작성하기 위한 기법을 알아본다.
- 코드 이해 도구
- 이해하기 좋은 코드
5장 응집도와 결합도
변경에 유연한 구조를 만들기 위해 어떻게 응집도를 높이고 결합도를 낮추는지를 살펴본다.
- 응집도
- 결합도
6장 리팩터링
리팩터링은 기능은 그대로 유지하면서 코드 품질을 높이는 방법이다. 이해하기 쉽고 수월하게 변경할 수 있는 코드로 바꾸는 기본적인 리팩터링 기법을 살펴본다.
- 레거시와 수정 공포
- 기초 리팩터링 기법
7장 테스트
리팩터링한 다음 동작을 확인하려면 테스트 코드로 테스트해야 한다. 테스트 코드가 왜 중요한지와 자동화된 테스트의 장점을 설명한다. 그리고 테스트 코드를 먼저 작성하는 테스트 주도 개발에 대해 살펴보고 개발 생산성과 설계 품질을 높이기 위해 어떻게 테스트 가능성을 높일 수 있는지 알아본다.
- 테스트 코드
- 테스트 가능성
- 리팩터링을 위한 테스트 작성하기
8장 아키텍처·패턴
능력 있는 시니어 개발자가 되기 위해서는 아키텍처 설계 역량을 키워야 한다. 아키텍처가 왜 중요한지 알아보고 패턴의 유용함에 대해 살펴본다.
- 아키텍처가 중요한 이유
- 패턴 익히기
9장 업무 관리
어느 정도 경력이 쌓이면 업무 관리 역량을 갖춰야 한다. 업무를 잘 관리하기 위해 필요한 사항인 업무 나누기, 위험 관리, 요구 사항 이해 및 변경 대응, 일정 관리에 대해 알아본다. 그리고 좋은 결과물을 만들기 위한 점진적·반복적 개발 방법을 설명하고 업무 효율을 높이기 위한 팁을 제시한다.
- 업무 나누기
- 위험 관리
- 요구 사항
- 점진적·반복적 개발
- 수작업 줄이기
- 이유와 목적
10장 정리하고 공유하기
원활하게 소통하기 위해 글쓰기와 발표 역량을 키워야 한다. 모호하지 않고 정확하게 글로 표현하는 방법과 발표 역량을 어떻게 키울 수 있는지 살펴본다.
- 글로 정리해서 공유하기
- 발표하기
11장 리더와 팔로워
협업을 위한 리더와 팔로워의 역할에 대해 알아본다.
- 리더 연습하기
- 팔로워십
코딩을 좋아하여 나이를 먹고 백발이 되어도 개발을 하고 싶은 개발자다. 좋은 책 쓰는 것을 목표로 꾸준히 블로그와 브런치에 글을 쓰고 있으며 많은 강연 활동도 하고 있다.
전) 아이스크림에듀, 에스씨지솔루션즈, 위메이드엔터테인먼트, 다음커뮤니케이션 개발자
현) 에스씨지랩 개발실장
저서: 『테스트 주도 개발 시작하기』(가메출판사), 『스프링5 프로그래밍 입문』(가메출판사), 『JPA 프로그래밍 입문』(가메출판사), 『DDD START』(지앤선), 『객체 지향과 디자인 패턴』(인투북스) 등
1장 들어가며
실패
3년 차
개발이란
개발에 필요한 것
2장 구현 기술과 학습
구현 기술
학습 대상
기술 파기
학습 전략
유행에 상관없는 구현 기술
구현 기술 적용
주의할 점
3장 소프트웨어 가치와 비용
소프트웨어 가치
개발 비용
유지보수 비용을 낮추려면
4장 코드 이해
코드 변경
코드 이해 도구
이해하기 좋은 코드
5장 응집도와 결합도
응집도
결합도
6장 리팩터링
수정 공포와 변경 비용
리팩터링
리팩터링 vs 새로 만들기
7장 테스트
테스트 코드
테스트 가능성
리팩터링을 위한 테스트 작성하기
8장 아키텍처·패턴
아키텍처 고민하기
패턴 익히기
9장 업무 관리
처음부터 끝까지
업무 나누기
완료의 의미
위험 관리
요구 사항은 바뀐다
일정
점진적·반복적 개발
안 된다고 말하기, 대안 제시하기
수작업 줄이기
이유와 목적 생각하기
10장 정리하고 공유하기
글로 정리해서 공유하기
마인드맵 사용
발표하기
외래어 남용하지 않기
글쓰기와 발표가 주는 효과
11장 리더와 팔로워
리더 연습하기
팔로워
겸손·존중·신뢰
맺음말