190페이지의 얇은 책이지만 복잡성과 생산성 그리고 코드 작성의 목적에 대해 생각해보게 해준 책이었습니다.
1장: 복잡성은 어떻게 생산성을 해치는가
2장: 80:20원칙
- 기존의 중요한 기능을 개선하는데 시간을 들여라
3장: 최소 기능 제품 만들기
4장: 클린하고 단순한 코드 작성하기
- 큰 그림을 생각하라
- 거인들의 어깨 위에 서라
- 기계가 아닌 사람의 코드
- 필요하지 않아요
- 보이 스카웃 법칙과 리팩터링
5장: 성급한 최적화는 모든 악의 근원
- 성급한 최적화의 유형
- 성능 튜닝을 위한 6가지 팁
6장: 몰입
- 코딩하는 시간을 큰 단위로 잡으세요.
7장: 한 개의 일을 잘하기와 다른 유닉스 원칙들
- 각 함수는 한개의 일을 잘한다.
- 단순함이 복잡함 보다 좋다.
- 작은 것이 아름답다.
- 프로토타입을 가능한 빠르게 만든다.
- 효율성보다는 이식성을 선택한다.
- 클린 코드가 영리한 코드보다 좋다.
8장: 디자인은 적은 것이 더 많다: 생략
9장: 집중: 생략
책을 통해 개인적으로는 상황에 따라 필요한 기능만 빠르게 개발하고
최적화는 의도적으로 미뤄야할 때도 있다는 것을 생각해보게 되었습니다.
- 만약 필요한 기능한 빠르게 개발하게 되었고 빠른 시일 내에 문제가 발생할 것이 분명하다면 주석은 남겨두는게 좋은 것 같습니다.
(책의 내용을 빌리자면 다른 팀원들이 우리 코드베이스는 대충만든 거니까 나도 대충 개발해도 되겠지? 라고 오해하여 클린 코드가 아닌 대충? 코드를 만드는 것을 방지하기 위해서..)
- 또한 병목지점으로 장애나 사용자 경험 저하의 원인이 되거나 자주 호출되어 많은 비용을 발생시키는 API나 프로세스에 대한 최적하는 가치가 있는 것 같습니다.
측정을 통해 병목 지점을 알아내고 개선하는 것
하루에 100만번 호출 되는 API, 하루에 100번 호출되는 API 어떤 것을 개선할 것인가?
- 100번 호출되는 10초 걸리는 API를 0.1초로 만들 것인가
- 100만번 호출되고 1초 걸리는 API를 0.2초로 만들 것인가?
1. 소통을 통해 현 상황에서 필요한 것을 명확히 정의 후
2. 지금 필요한 코드를 읽기 쉽게 만들고
3. 명백히 빠른 시일내에 최적화가 필요할 코드는 주석을 남기기
1. 버그 수정, 추가 기능 개발시 영향도를 파악하고
2. 이번 변경이 기존 코드에 많은 영향을 주거나 최적화가 필요할 것 같다면 해당 코드에 대해 잘 아는 동료들과 의논하여 개발
3. 다른 기능에 영향이 없고 병목지점도 아닌 것 같다면 깔끔하게 개발
- 의도적인 기술 부채를 피하고 이전보다 나은 코드가 되도록..