장인 정신을 익히는 과정은 '이론'과 '실전'이다.
- 자전거가 굴러가는 과학적 공식을 아무리 이해해도 실제로 타는것과 차이가 있다.
- 깨진 창문 법칙
- 초기에는 매우 빠른 속도로 진행되던 프로젝트가 1~2년 만에 달팽이처럼 느린 페이스로 진행되게 되는 것을 볼 수 있다.
- 나쁜 코드로 짠 프로그램에 가해지는 변경사항은 하나 하나가 크리티컬하다.
- 나쁜 코드가 쌓일 수록 그 팀의 생산성은 떨어지고 결국 0에 수렴한다.
- 관리팀은 인력을 추가한다.
- 하지만 새 팀원은 구조를 이해하지 못한다.
- 인력이 추가된 팀은 '새 인력을 투입했으므로 생산성이 늘겠지'라는 압박을 받는다.
- 결국 나쁜 코드는 더 쌓인다.
- 팀은 봉기한다. 재디자인을 요구한다.
- 달갑지는 않지만 관리팀 또한 개발팀의 생산성이 바닥을 기는 것을 알고 있으므로 허가하게 된다.
- 새 tiger 팀 이 setup되고 기존의 프로덕트의 스펙 + 새로운 기능을 맡게 된다. 기존의 팀원들은 기존의 코드를 유지보수하게 된다.
- 두 팀은 오래 동안 경쟁한다.
- tiger team이 기존의 프로젝트를 거의 따라잡을 즈음, tiger team의 초기 맴버들은 대부분 새 맴버들로 교체되어 있다.
- 그리고 그들은 다시 재디자인을 요구한다(?WTF!)
깨끗한 코드는 효율적일 뿐 아니라 생존과 직결되는 문제이다.
정말 시간이 없는 것인지, 시간이 없도록 하는 코드를 보고 있는 것인지 구분하라
- 우아한 코드: 보기에 즐거운 '효율적인' 코드.
- 주의를 기울인 코드.
- 중복이 없는 코드.
- 테스트 코드.
- 중복을 피하라.
- 한 기능만 수행하라.
- 제대로 표현하라.
- 작게 추상화하라.
우리는 코드를 작성하는 시간보다 읽는 시간이 압도적으로 길다.
그러므로 읽기 좋은 코드를 작성하는 것이 가장 중요하다.
잘 짠 코드가 전부가 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다.
처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
책의 내용을 읽고 지나가지 말고 세세하게 살펴보고 분석하자.