좋은 코더는 동작하는 코드를 작성합니다. 좋은 소프트웨어 엔지니어는 올바른 문제를 총체적으로 해결합니다 — 요구사항, 설계, 트레이드오프, 유지보수성, 테스트, 운영, 그리고 코드를 둘러싼 비즈니스 맥락까지 책임집니다. 엔지니어링은 코드에 판단력과 전체 라이프사이클에 대한 책임을 더한 것입니다.
진짜 경계는 어디에 있는가
테스트를 통과하는 코드를 작성하는 것은 쉽고 배울 수 있는 부분입니다. 더 어렵고 더 가치 있는 부분은 그 주위의 모든 것입니다: 무엇을 만들지, 그것이 시스템에 어떻게 맞아야 하는지, 그리고 나중에 그것과 함께 사는 비용이 얼마인지를 결정하는 일입니다.
