소프트웨어 개발에서 우리의 '헤드라이트'는 제한되어 있다.
우리는 너무 먼 미래는 내다볼 수 없고, 정면에서 벗어난 곳일수록 더 어둡다.
실용주의 프로그래머에게는 확고한 규칙이 있다.
작은 단계들을 밟아라 언제나!
언제나 신중하게 더 진행하기 전에 피드백을 확인하고 조정하라. 피드백의 빈도를 우리의 제한속도라고 생각해라. '너무 큰' 단계나 작업은 하지 않게 될것이다. 여기서 피드백이란 우리의 행동을 독립적으로 확증하거나 반증하는 것이라면 모두 피드백이다. 예를 들면 다음과 같다.
- REPL(Run-Eval-Print-Loop : 입력한 코드를 바로 실행하여 결과를 출력하는 대화형 환경)의 결과는 API나 알고리즘을 우리가 제대로 이해하는지 피드백을 준다.
- 단위 테스트는 직전에 고친 코드에 대한 피드백을 준다.
- 사용자 데모 및 사용자와의 대화는 기능이나 사용성에 대한 피드백을 준다.
너무 큰 작업이란 '예언'을 해야하는 모든 작업이다.
헤드라이트로 비출수 있는 거리에 한계가 있듯이 우리도 한두단계의 미래만 내다볼 수 있다.
여기서 우리는 미래의 유지 보수를 고려해 설계해야 하지 않는가 하는 의구심이 들수 있다. 맞는 말이지만 우리가 볼수 있는 미래까지만 고려해야 한다.
미래를 더욱 더 예측하려 할수록 우리가 틀릴 가능성은 계속 높아지게 된다.
불확실한 미래를 대비한 설계를 하기 보다는 언제나 교체 가능한 코드를 작성하여 대비하면 된다.
검은 백조, 즉 우리가 절대 일어날수 없다고 생각하는, 아니 생각조차 할 수 없는 일이 일어나는 경우,
일반적으로 모든 세간의 이목을 끌고 예측하기 어려운 것에 더하여 우리 자신의 인지적 편향으로 인해 우리의 시야를 가려서,
가장자리부터 서서히 번져오는 변화를 보지 못하도록 막는다.
이 책의 초판이 나올 당시 가장 큰 이슈는 데스크톱 GUI의 승자는 모티프(Motif)인가 아니면 오픈룩(OpenLook)인가 였다.
현재로서는 질문 자체가 틀렸다. 우리는 아마 두 기술의 이름조차 들어본 적이 없을 것이다.
누구도 승자가 되지 못하였고, 브라우저 중심의 웹이 빠르게 평정해 나가기 시작했다.
대부분의 경우에는 오늘과 거의 같을것이다. 하지만 확신하지는 말라.