1.1 길거리에서 중요한 것
전문적인 소프트웨어 개발의 세계는 매우 신비롭다. 어떤 고객은 몇 달 동안 이어진 통화마다 매번 며칠 안으로 돈을 지급하겠다고 한다. 어떤 사장은 평소에 월급을 전혀 주지 않으면서 돈을 벌면 주겠다고 말한다. 누가 창문이 딸린 사무실에서 일하게 될지, 그 사소한 운명마저도 혼란스러운 우주의 무작위성에 의해 결정된다. 따라서 어떤 것이 어떻게 될지는 그 누구도 알 수 없다. 어떤 버그는 디버거만 사용해도 사라진다. 또 어떤 팀은 소스 제어를 전혀 하지 않는다. 이건 정말 겁나는 일이다. 하지만 이러한 현실을 직시해야 한다.
한 가지 분명한 건 본인이 일을 얼마나 빨리 하느냐가 가장 중요하다는 점이다. 아무도 우아한 설계, 알고리즘 지식, 고품질의 코드를 신경 쓰지 않는다. 여러분을 고용한 사람들은 주어진 시간에 얼마나 많은 것을 해줄 수 있느냐에만 관심이 있다. 하지만 여러분의 직관과는 반대로 좋은 설계, 좋은 알고리즘, 좋은 품질의 코드는 처리량에 상당한 영향을 주며, 많은 프로그래머가 이를 놓치고 있다. 그러한 문제는 보통 프로그래머와 마감일 사이의 갈등으로 이어지며, 이는 여러분을 발에 족쇄를 찬 좀비로 만들 수 있다.