책 표지 사이즈를 이렇게 크게 집어 넣은 이유는 내가 엄청 즐겁게 이 책을 읽었기 때문이다.

몇 가지 배운 점만 생각나는대로 간략하게 나열한다면,

  1. 옛 코드가 개판이라고 투덜대면 안 되겠다는 생각을 하게 됐다. 옛 코드가 아무리 리팩토링도 제대로 안 됐고 지저분하다고 해도 오랜 세월 온갖 환경에서 돌아갔던 코드라는 사실을 인정해야 한다고 조엘은 주장한다. 웹표준 등에 있어서 안 맞는 부분이 있을 수는 있지만 기본적으로 견지해야 할 원칙이라고 생각하게 됐다. 코드를 새로 짜더라도 지난 코드에 기반해서 짜는 편이 훨씬 낫다.

2.프로그래머가 아닌 관리자들은 프로그래밍단에서 돌아가는 복잡한 로직을 이해할 능력이 없다. 프리젠테이션을 할 때 이 사람들은 죄다 아름다운 픽셀만 감상하려고 한다. 그러니까 완성 안 된 기능은 디자인도 미완성인 채로 내놓는 편이 현명하다.

3.설계 과정을 반드시 거쳐야 개발 과정을 단축시킬 수 있다. 기능 명세를 워드로 작성하고 시나리오를 그려 보면서 불필요한 기능, 잘못 생각한 기능을 제거하는 게 코드를 다시 짜는 것보다 훨씬 쉽기 때문이다.

  1. ‘지식 노동자’는 일을 할 때 몰입을 할 수 있어야 하는데, 한 번 몰입이 깨지면 다시 몰입 상태로 들어가는 데 평균 15분이 든다고 한다.(이런 이론은 조엘이 여러 번 인용하는 드마르코의 <피플웨어>를 읽어 보면 그런 얘기가 있다고 한다.) 그러니까 프로그래머의 생산성을 높이고 싶다면 업무를 방해하지 말고 개인이 몰입할 수 있는 좋은 개발환경을 만들어 줘라.

  2. 개발언어의 가장 아래쪽 단에서 무슨 일이 벌어지고 있는지까지 공부하는 게 훨씬 좋을 것이다. 즉, 바이트가 어떻게 왔다갔다하고 있는지 알아야 한다. 추상 클래스가 많아서 실제 구현까지 신경쓸 필요가 없는 도구들은 생산성을 높여줄 순 있어도 공부 기간을 단축시켜줄 수는 없다.

  3. 5번 이유로, 익숙한 개발 언어를 사용하는 편이 좋다. 새로운 언어는 깊이 이해하기까지 온갖 경험을 새로 해야 한다. 오래 경험한 개발언어로 코드를 짤 때 실수를 더욱 줄일 수 있다. 내가 앞으로 진행할 프로젝트로 나는 내가 익숙한 언어를 사용하려는 생각을 하고 있었는데 팀원들이 익숙한 언어를 사용해야겠다는 생각을 하게 됐다.

  4. 그 외, 개발 도구는 최고급을 사용하는 편이 좋다는 점도 알게 됐다. ㅋ

**IT업계에 일하는 모든 사람들에게 <조엘 온="" 소프트웨어="">를 강추한다.** 토요일에 구입해서 여기저기 다니면서 바쁜 와중에도 월요일에 결국 다 읽었다. 온라인에서 구입했다면 18700원에 싸게 구입할 수 있었겠지만, 빨리 읽어야 한다고 생각해서(바로 뒤의 프로젝트를 준비해야 했다.) 22000원에 교보문고에서 구입했다. 하지만 대만족이다. 며칠 먼저 읽은 게 3천 3백 원을 보상한다고 생각한다.