Jello's development blog

Jello's development blog

책 [조엘 온 소프트웨어]

조엘 온 소프트웨어

책을 도서관에서 빌렸을 때, 생각보다 오래된 책이라는 것과, 유명한 책이라는 것을 알았다. 책이 꽤나 너덜너덜해져있었기 때문이다. 책의 출판 년도를 찾아보니 2005년이었다. 내용은 저자인 ‘조엘 스폴스키’가 자신의 블로그에 쓴 글을 수정해서 책을 낸 것 같은데, 포스팅 된 날짜가 2001년인 것도 있었다. 개발 관련해서 이렇게 오래된 책을 읽어도 되나 싶었지만, 멘토님이 추천하셨기에 일단 나의 생각은 접어두고 읽어 보았다.

전문가가 쓴 글이라서 그런가, 예전 내용이라서 그런가, 초보 딱지를 달고 있는 나로서는 글의 내용을 이해하기가 어려웠다. C의 메모리 구조같은 기술적인 부분과 명세서 작성, 일정 관리 등의 업무적인 부분까지, 내가 아직 경험해보지 못한 것들이 많이 있었다. 재미가 없고 이해되지 않는 부분이 많아서 책의 부재가 ‘유쾌한 오프라인 블로그’라는 것도 이해가 되지 않았다. 그래도 내가 아는 부분에서 최대한 이해하려고 노력했고, 얻은 것이 많지는 않지만 유익했던 것 같다.

책을 읽으면서 기억에 남는 몇 가지가 있는데, 이 책은 처음부터 끝까지 개발자의 ‘문서작성’이 아주 중요하다고 말하고 있는 것 같다. 프로젝트의 모든 것에 대해서 명시된 것들을 가지고 있어야 하고, 그에 따라서 계획적으로 움직여야 된다고 한다. 사실 이게 맞는 말이긴 한데, 이를 확실히 지키고 있는 회사는 보기가 힘들 정도로 드물다. 회사 뿐만 아니라 개인도 계획적으로 업무를 해야 하는데, 이게 참 힘든 일인 것 같다.

그리고 개발자의 작업 환경에서 다룬 내용이 인상깊었다. 책에서 지식 근로자는 ‘in the zone’상태라고 하는 최상의 상태가 되어 외부에 개의치 않고 완벽히 집중할 수 있어 좋은 결과를 낼 수 있다고 한다. 하지만 이 상태는 아주 쉽게 깨져버릴 수 있고, 들어가기도 쉽지 않다는 것이다. 이렇게 지식 근로자에게 최상의 작업 환경을 조성해 주는 것이 아주 중요하다고 말해주고 있다. 이 부분을 읽으면서 항상 여러 SNS를 하면서 개발을 하는 나를 반성해 보는 시간을 가졌다.

이 책의 저자는 소프트웨어 팀을 평가할 때 자신이 만든 테스트(이른바 ‘조엘 테스트’)를 해보라고 권장한다.

  1. Source Control(소스 컨트롤)을 사용하십니까?
  2. 한번에 빌드를 만들어낼 수 있습니까?
  3. daily build(일별 빌드)를 만드십니까?
  4. 버그 데이타베이스를 가지고 있습니까?
  5. 새로운 코드를 작성하기 전에 버그들을 잡습니까?
  6. up-to-date(최신) 스케줄을 가지고 있습니까?
  7. spec(설계서)를 가지고 있습니까?
  8. 프로그래머들이 조용한 작업환경을 가지고 있습니까?
  9. 돈이 허락하는 한도내의 최고의 툴들을 사용하고 있습니까?
  10. 테스터들을 고용하고 있습니까?
  11. 신입사원들은 면접때 코드를 직접 짜는 실기시험을 봅니까?
  12. hallway usability testing(무작위 사용성 테스팅)을 하십니까?

이 테스트는 또는 아니오로 대답할 수 있고, 빨라서 쉽게 평가가 가능하다고 한다. 내가 속해있던 팀은 아무리 잘 해봐야 3점 정도 되었던 것 같고, 하나의 항목을 만족하기가 매우 어렵다는 생각이 들었다. 책에서는 대부분의 팀이 1~3점을 받고, 거의 다 만족하는 팀은 거의 없다고 말한다.

책을 읽으면서 이해가 되지 않는 부분들이 많아서, 나중에 많이 성장한 뒤에 다시 읽어봐야겠다는 생각을 했다. 단어조차 이해가 되지 않는 경우도 많았다. 좀 더 많은 인원이 있는 소프트웨어 팀에서 업무를 하고, 기술 스택이 상당히 쌓였을 때 다시 읽으면 이 책이 어떻게 다가올지 궁금하다.