이 책의 목적 중 하나는 설계와 아키텍쳐가 무엇인지를 완전하게 정의하는 것이다.
소프트웨어 아키텍쳐의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화 하는데 있다.
개발자의 생산성은 거의 100%로 시작해서 0으로 수렴한다. 개발자 입장에서 보자면 이러한 현상은 지독한 절망감을 안겨주는데, 모두가 열심히 일하고 있기 때문이다. 개발자의 노력은 기능을 개발하기보다는 엉망이 된 상황에 대처하는 데 소모되기 시작한다.
초기 출시에는 매월 수십만 달러의 비용으로 많은 기능을 탑재할 수 있었지만 마지막 출시에서는 2천만 달러를 들이고도 얻은게 거의 없다.
거의 2600년 전에 이솝은 토끼와 거북이 우화를 지었다. 이 우화의 교훈 ->
- 느려도 꾸준하면 이긴다.
- 발 빠른자가 경주에 이기는 것도 아니며, 힘센 자가 싸움에서 이기는 것도 아니다.
- 급할수록 돌아가라.
-> - 코드는 나중에 정리하면 돼. 당장은 시장에 출시하는게 먼저야! -> 정리 안한다.
- 지저분한 코드를 작성하면 단기간에는 빠르게 갈 수 있고, 장기적으로 볼 때만 생산성이 낮아진다 -> 엉망으로 만들면 깔끔하게 유지할 때보다 항상 더 느리다.
TDD를 하는날과 안하는날의 결과에 대한 그래프. 빨리가는 유일한 방법은 제대로 가는 것이다. 자신을 과신한다면 재설계하더라도 원래의 프로젝트와 똑같이 엉망으로 내몰린다.