보통 엉클밥이라는 애칭으로 더 유명한 로버트 C 마틴이 쓴 클린코드에 대한 책입니다. 깨끗한 코드가 무엇이냐라는 부분에서는 부분적으로는 모두 동의는 할 수 없다고 하더라도 전체적으로는 개발자라면 염두에 두어야 할 만한 내용으로 채워져있습니다. 일부부분에 대해서는 약간의 방어막을 치긴 하지만 전체적으로는 강력한 어조로 클린코드가 얘기하는 것들을 지킬 것을 얘기하고 있습니다. 표지디자인은 원서랑 동일하게 맞춘 것으로 알고 있는데 책의 내부 디자인은 약간 교과서처럼 좀 딱딱한 느낌이고 내용을 이해하는 데는 문제가 없지만 중간중간 단어의 사용이나 표현에서 약간씩 어색한 부분이 있는 편입니다. 내용이 아닌 책으로 보자면 세련된 느낌은 아닙니다.(내용을 죽이는것 같아 약간 아쉬운 부분입니다.)
책의 초반부에는 누구나 공감하고 간단히 적용할 수 있는 내용을 위주로 하고 있습니다. 의미있는 네이밍이나 의미가 분명한 한가지 일을 하는 함수, 소스를 설명하는 필요악인 주석은 지워버리라는 등의 얘기들이 있습니다. 중반부부터는 추상화와 예외를 다루고 단위테스트 등 약간 객체지향적인 부분을 설명하고 있습니다. 초반에는 난이도가 있는 부분이 아니라서 상당히 명퀘하게 받아들였지만 뒤로가면서 OOP에 대한 부분도 나오고 동시성에 대한 얘기도 나와서 이해하기 좀 어려운 부분도 있습니다. 뒤로가면 소스도 많이 나오는데 많은 소스에 적은 설명으로 흐름을 쫓아가기 어려워서 후분부에는 상당히 집중하면서 읽기가 어렵기도 했습니다. 뒷부분은 사실 코딩을 해보면서 하면 정말 많은 도움이 될 것 같았는데 아쉽게도 저는 그럴만한 여유는 없었습니다.
인상적인 부분을 몇가지 꼽자면...
- 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. "나중은 결코 오지 않는다."
- 일정에 쫓기더라도 대다수 관리자는 좋은 코드를 원한다. 그들이 일정과 요구사항을 강력히 요구하는 것은 그들의 책임이기 때문이다. 좋은 코드를 사수하는 것은 바로 우리 프로그래머들의 책임이다.
- 주석은 나쁜 코드를 보완하지 못한다. 코드로 의도를 표현하라.
- "돌아가는 코드"가 전문 개발자의 일차적인 의무라 여길지도 모르겠지만 의사소통이 일차적인 의무다.
- 학습테스트에 드는 비용은 없다. 어쨌든 API를 배워야 하므로 오히려 필요한 지식만 확보하는 손쉬운 방법으로 투자하는 노력보다 얻어지는 성과가 더 크다.
- 소프트웨어의 가독성은 90% 이름이 결정한다.
편집상태가 약간 아쉽더라고 하더라도 저자의 명성답게 책에 내용은 계속 꼽씹어야 될 만한 내용들로 채워져있습니다.
리딩모임
사실 이 책은 혼자 읽은 것이 아니라 KSUG에서 클린코드 리딩모임을 8월에 진행한다고 해서 같이 참여해서 읽었습니다. 책은 혼자서 읽고 4주동안 매주 모여서 2시간정도의 모임시간동안 읽은 분량에 대해서 이야기를 나누는 방식으로 진행되었었습니다. 사실 책 리딩모임은 처음 참여해 보는 것이었고 모임이 있다길래 책이 혼자보기는 좀 어려울것 같기도 해서 참여하게 되었었습니다. 4주만에 다 읽는다고 해서 약간 부담되기도 했지만 참여하기를 참 잘했다고 생각하고 있습니다.(회사가 멀어서 퇴근하고 열심히 가도 30분 이상씩 지각을 해야해서 다른 참가자분들께는 좀 죄송하기도 했지만요....)
리딩모임이 좋았던 것은 여러가지 어려운 내용도 있었지만 책을 처음부터 계속 같은 집중력으로 읽기는 어렵기 때문에 놓치는 부분이 있기 마련인데 각자 경험이 다르니까 인상깊게 보던 부분도 좀 달랐기 때문에 가볍게 지나친 부분도 리딩모임에서 다시금 볼 수 있었던데다가 다른 사람들의 경험을 같이 공유하다보니 전체적으로 더 깊게 이해할 수 있었던것 같습니다. 혼자 읽었다면 가볍게 읽고 넘어갔을 것 같은데 같이 보다보니까 많은 부분에서 더 깊게 생각하고 고민해 봤기 때문에 더 많이 기억에 남을것 같습니다.
덧) 책의 표지에 "제임스 O. 코플리엔 추천도서"라고 써있는데 저는 사실 누군지 잘 모르겠더군요. 엉클밥이 훨씬 유명한것 같은데요. ㅎㅎㅎ
인상적인 내용으로 꼽으신 부분이 저한테도 인상적이네요. 언제 한번 읽어봐야겠습니다.
책이 편집이 좀 세련되지 못해서 그렇지.. 내용은 참 좋은것 같아요..