코딩은 어려운 데다 사람을 지키게 하는 지적 활동이다. 다른 훈련에서는 찾기 힘든 일정 수준의 농축된 집중력이 필요하다. 여러 대립 요소를 한꺼번에 교모히 양립시켜 다뤄야 하기 때문이다.

1. 첫째, 코드는 반드시 동작해야 한다. 풀고자 하는 문제가 어떤 문제며 어떻게 풀어야 하는지 확실히 이해해야 한다. 해결법을 나타낸 코드에 믿음이 가는지 확인해야 한다. 해결법의 언어, 플랫폼, 현재 아키텍처, 시스템의 모든 결점까지 구석구석 지속적으로 관리해야 한다.

2. 코드는 고객이 제시한 문제를 반드시 풀어야 한다. 간혹 알고 보니 고객읭 ㅛ구사항이 고객의 문제를 해결하는 데 도움이 안 되는 경우도 있다. 이런 상황을 파악하고 고객과 협상해 고객의 진정한 필요를 충족시키는 일은 당신에게 달렸다.

3. 코드는 기존 시스템에 잘 녹아들어야 한다. 기존 시스템의 경직성, 취약함, 불투명도를 높이면 안 된다. 의존성도 잘 관리해야 한다. 한 마디로 코드는 견고한 객체지향 원칙을 따라야 한다.

4. 코드는 다른 프로그래머가 읽기 쉬워야 한다. 주석을 잘 쓰라는 단순한 조언이 아니다. 만든 사람의 의도가 드러나도록 코드를 잘 다듬어야 한다는 뜻이다. 이는 어려운 작업이다. 사실 프로그래머가 통달하기 가장 어려운 일이 아닐까 싶다.

여러 관심사항을 한 번에 교모히 다루기는 힘들다. 오랜 시간 강한 집중이 필요한데 생리적으로 힘든 일이다. 또한 문제 해결이나 팀과 조직에서 일할 때 주의력이 흐트러지는 현상이나 일상 생활에서 발생하는 걱정까지 더해진다. 요컨대 주의력을 흐트러뜨리는 일이 많다.

충분히 강하게 집중하지 못하면 잘못된 코드를 만들게 된다. 코드에 오류가 섞이고 구조는 엉뚱하며 이해하기 힘든 뒤얽힌 코드가 된다. 고객의 진짜 문제를 해결하지 못한다. 한 마디로 뜯어 고치거나 다시 만들어야 한다. 주의가 산만하면 쓰레기를 만들게 된다.

지치거나 주의력이 흩어졌다면 코드를 만들지 마라. 해봤자 결국 재작업해야 한다. 차라리 산만하게 만드는 원인을 찾아 없애고 정신을 집중할 방법을 찾아라.