모든 전문적인 프로그래머들이 준비 작업의 중요성에 대해서 알고 있으며 구현 단계를 진행하기 전에 선행 조건들이 만족되었는지를 확인한다고 생각하겠지만, 불행하게도 그렇지 않다. 불완전한 준비의 일반적인 원인은 선행 작업에 투입되는 개발자들이 자신의 작업을 수행할 수 있을 정도의 전문가적인 지식을 갖고 있지 않다는 점이다. 그러한 기술들은 프로젝트를 계획하고, 강력한 비즈니스 케이스를 만들기 위해서 필요하다. 또한, 포괄적이고 정확한 요구 사항을 개발하고 훌륭한 아키텍처를 만들기 위해서도 필요하다. 하지만 대부분의 개발자들은 그러한 작업들을 어떻게 수행할 것인지에 대한 교육을 받은 적이 없다. 개발자들이 선행 작업을 어떻게 수행할 것인지를 모른다면, "선행 작업을 더 많이 수행하세요"라고 권한다는 것 자체가..