아키텍팅, 즉 시스템 디자인이 왜 필요한가 에 대해서 먼저 생각해 본다. 프로그래머는 코드 생성, 즉 프로그래밍을 통해 전반적으로 2개의 의무를 수행한다. 첫째는 기능 구현으로서의 의무다. 프로그램을 통해서 사람은 컴퓨터에게 필요한 기능을 위임한다. 계산기 같은 것이 쉬운 예이다. 입력을 받으면, 그 입력을 기반으로 컴퓨터가 프로그램에 가이드 된 내용을 토대로 결과를 돌려준다. 심플하다. 둘째로 전체 디자인을 효율적으로 유지해야 할 의무를 가진다. 그렇다면 여기서 몇 가지 파생 질문이 나온다. 효율적이라는 것을 무엇을 말하는 것인가? 왜 그래야 하는가? - 비 효율적이어도 프로그램은 여전히 잘 기능할 수 있다. 그렇다면, 어떻게 이 과정에 실제적으로 도달하는가? 등을 고민해 볼 수 있다. 첫번째 질문부터..