(위의 클린 코드 책은 지인한테 빌려준 상태라 (강화학습책과 바꿔읽는중) 다른 시리즈로 대체한 사진.)
개발을 해오면서 한 번쯤 들어본 책들입니다. 필독서로 추천되곤 하죠. 하지만 개발 초보자에게는 너무 어려운 책일 수 있습니다. 이런 책들은 "소프트웨어 설계"를 다루며, 혼자 개발하는 것이 아니라 팀을 위한 코드를 작성하는 방법을 다룹니다.
OOP를 기반으로 설명하지만 DOP, FP, SOLID 등 여러 개념을 포함하고 있으며, 코드를 작성할 때 많은 규칙을 제시합니다. 이 책들을 읽는 시점은 개인 프로젝트를 넘어서 협업이 필요할 때가 더 적합할 것입니다. 협업 시기에는 일관성 있는 코드를 작성하는 것이 리팩토링, 코드 리뷰, 신입 교육(프로젝트 중도 참여) 등에서 비용 효율적이기 때문입니다.
Clean Code는 2015년쯤 처음 접했습니다. 당시 TCPL(The C Programming Language)처럼 유명한 필독서라는 느낌에 책을 사서 읽었습니다.
처음 책을 읽었을 때, 절반도 못 읽고 덮었던 기억이 있습니다. 공부해 보지 않았던 자바 기반의 예시 코드와 와닿지 않는 이론적인 내용들, 딱딱한 말투와 수많은 규칙들이 이유였을 것입니다.
책의 표지에 먼지가 쌓여갈 즈음 몇 번 다시 읽어보면서 새로운 부분을 이해하고 공감하게 되었습니다. 이는 스스로의 개발 경험이 쌓였다는 증거이기도 했습니다. (이럴 때면 뿌듯해했습니다 ㅎㅎ)
켄트 벡의 책을 받으면서 조만간 클린 코드를 다시 읽어볼 생각을 하고 있습니다.
켄트 벡(Kent Beck)은 익스트림 프로그래밍(Extreme Programming, XP)의 창시자 중 한 명으로, 애자일 소프트웨어 개발 방법론의 중요한 기여자이며, 테스트 주도 개발(Test-Driven Development, TDD)의 개척자입니다.
"Make the change easy, then make the easy change." - Kent Beck
"변화를 쉽게 만들고, 그 다음에는 쉽게 변화해라."
이 인용문은 "Tidy First: 더 나은 소프트웨어 설계를 위한 32가지 코드 정리법"의 마지막 표지에 적혀 있습니다. 이는 질긴 반죽을 만들어 부드럽게 하기보다는 처음부터 부드러운 반죽을 만들어 쉽게 빵을 만들라는 의미와 비슷합니다. 코드도 마찬가지 아닐까요?
켄트 벡의 "Tidy First"와 로버트 C. 마틴의 "클린 코드"는 소프트웨어 개발자들에게 필독서로 여겨집니다. 그러나 두 책은 접근 방식과 내용 전달 방식에서 다릅니다.
먼저, "클린 코드"는 자바 언어를 기반으로 코드의 가독성과 유지보수성을 높이기 위한 다양한 기법을 제시합니다. 로버트 C. 마틴은 코드의 명확성과 단순성을 강조하며, 좋은 코드를 작성하기 위한 원칙들을 세세하게 설명합니다. 그러나 난이도가 높아, 처음 읽을 때 모든 내용을 이해하기 어려웠습니다. 개발 경력을 쌓으며 여러 번 읽어야 가치를 파악할 수 있었습니다. 특히 동시성, 리팩토링, TDD같은 개념들은 대규모 협업을 경험해보지 않은 초보자들에게는 복잡할 수 있습니다. 대신에 자세하고 구체적인 내용을 기반으로 뛰어난 유지보수와 확장성의 방향을 제시합니다. 하지만 책에서 제시하는 모든 규칙을 따르려 하면 생산성이 저하될 수 있다고 느꼈습니다.
반면, 켄트 벡의 "Tidy First"는 범용적인 의미를 담아 쉽게 읽을 수 있습니다. 켄트 벡은 코드 설계와 리팩토링에 대한 직관적이고 쉽게 이해할 수 있는 접근 방식을 제시합니다. 복잡한 개념을 간단하고 명료하게 설명하며 실용적인 예제와 함께 코드를 정리하는 32가지 방법을 소개합니다.(목차상으로는 33번까지 있으나, 마지막 33번은 결론.) 이 책은 코드의 구조를 개선하고 유지보수성을 높이는 방법에 집중하여 실질적으로 큰 도움이 될 것입니다.
두 책은 동시성, 리팩토링, TDD, 테스트 등 중요한 주제를 다루지만, "클린 코드"는 더 구체적이고 자세한 대신 높은 난이도의 책으로 생각되며, "Tidy First"는 상대적으로 이해하기 쉬운 방식으로 같은 주제를 다루었습니다.
결론으로는 두 책 모두 소프트웨어 개발에 중요한 지침서지만, 접근 방식과 난이도에서 차이가 있으므로 각자의 필요와 경험 수준에 맞춰 선택하면 좋을 것 같습니다.
“한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다.”