"그 사람의 존재로 인해 팀이 전체적으로 나아진다면 책임 개발자다. 그 사람의 존재로 인해 회사가 전체적으로 나아진다면 수석 개발자다. 그 사람의 존재로 인해 업계가 더 발전한다면 최고 개발자다."
이 책은 크게 세 가지 챕터로 나뉘어 있다. Disciplines, Standards, and Ethics. 이 책의 저자 로버트 C.마틴은 각 챕터에서 소프트웨어 엔지니어를 장인(Craftman)이라 생각하며, 꼭 지켜야할 내용들을 정의한다.
책 소개
이 책의 챕터는 크게 세 가지로 나뉘어 있는데, 다음과 같다.
The Disciplines
규율을 의미한다. 소프트웨어를 개발하는 사람이 지켜야 할 규율, 리펙터링을 꾸준하게 하고 보이스카우트처럼 다른 사람이 한 선행에 무언가를 더해서 다시 베푼다. 체크인된 코드를 보다 개선해서 체크아웃한다는 것이다. 이러한 모든 규율들의 한가운데에는 테스트 코드가 있다.
이 책의 대부분이 해당하며, 테스트 코드를 왜 작성해야하는 지 아주 상세한 이유를 다룬다. 그리고 어떻게 써야 하는 지까지 굉장히 잘 쓰여있다. 레드 -> 그린 -> 리펙토링 순서대로 테스트 코드를 작성한 후에 코드를 보완할 수 있으며, 실제 예시까지 든다. 안전하고 다른 사람이 코드를 수정하기 좋은 것을 떠나서, 정렬 함수를 만드는 데 어떻게 테스트 코드를 구성하냐에 따라서 그 테스트 코드를 해결하기 위해 버블 정렬 혹은 퀵 정렬이 나오는 예제를 보여준다. 즉, 테스트 코드를 정교하게 설계하면 이를 해결하기 위한 알고리즘이 탄생한다는 이야기다.
The Standards
기준을 의미한다. 이 챕터에서는 각 세부 챕터를 본인이 CTO라고 생각하고 직원들에게 하는 말들을 정의해두었다고 쓰여있다. 세부 챕터의 제목은 절대 똥덩어리(shit)를 릴리스하지 말라. 품질에 신경 써라 등등이 있다.
The Ethics
윤리를 의미한다. 소프트웨어 엔지니어는 의도에 따라, 그리고 의도하던 의도하지 않았던 세상을 파괴로 몰고갈 수 있다고 경고한다. 도요타의 소프트웨어가 잘못되어 급발진으로 인해 89명의 사람이 목숨을 잃었고, 어떤 은행은 46분 만에 4억 달러의 손실을 입고 바로 파산했다고 한다. 이러한 문제가 발생하지 않도록 윤리적으로 꼭 지켜야 할 목록을 만들어, 선서로 행할 수 있도록 정리해 두었다.
이 책을 읽으면 좋은 대상
먼저, 이 책에서 이야기를 전개하는 과정 속에서 1900년대 중반부터 이야기가 전개되는 부분이 꽤 있다. 프로그래밍의 깊은 역사에 관심이 있는 사람이라면 꼭 이 책을 읽기를 권한다. 코볼, 스몰토크 등 정말 예전부터 존재했던 프로그래밍 언어부터 Git이 없던 시절의 이야기를 꽤 다루고 있다.
두 번째로는 테스트 코드에 대해 관심이 있거나 혹은 없거나 한 사람이다. 이 책에서는 테스트 코드에 대해서 놀랄 만큼 상세하게 다룬다. 첫 번째 쳅터인 Disciplines에서 테스트 코드에 대한 내용과, 어떻게 테스트를 하는지 예제 코드와 함께 테스트에 필요한 모듈을 함께 설명한다. 테스트 코드에 관심이 없는 사람의 경우에는 이 책을 통해서 어떻게 테스트 코드가 필요한지, 왜 필요한 지 보다 자세하게 알 수 있다. 그리고 테스트 코드에 관심이 많다면, 이 책을 통해서 테스트 코드의 정수를 얻어갈 수 있을 것이다.
책의 장점과 아쉬운 점
이 책의 장점은 테스트 코드에 대해서 정말로 상세하게 다룬다는 점이다. 사실 테스트 코드에 관심이 있지 않았지만, 거의 70%가 넘는 내용이 테스트 코드를 어떻게 쓰는지, 왜 써야 하는지, 어떤 방법들이 있는지, 어떤 모듈이 있는지 등 테스트 코드에 대한 내용을 다룬다,
위 내용은 테스트를 하는 데 쓰이는 모듈들에 대한 설명이다. 더미, 스텁, 스파이, 모의 객체, 가짜(mock) 등에 대해서 하나하나 자세하게 다루며, 이 정도로 상세하게 모든 모듈에 대해서 다룬다.
외에도 유닛 테스트의 의존성을 어떻게 구성해야, 손쉽게 수정하고 안전하게 테스트할 수 있는지에 대해서도 다룬다. 이 책의 장점은 테스트 코드에 대한 정수를 다룬다는 점에 있다.
아쉬운 점은 장점과 함께 따라오는 것이다. 너무 테스트 코드에 대한 내용이 많고, 나머지 내용인 기준과 윤리에 대해서는 곁가지로 가져가는 느낌이 강해서 이 책의 제목과 다르게, 기존에 쓴 책인 클린 코드와 클린 아키텍처와 같은 제목으로 클린 테스트 이런 식으로 가져갔으면 어떨까 하다. 생각보다 제목 그대로 소프트웨어 장인 정신을 전반적으로 다룬다기보다, 대부분을 테스트 코드와 함께하기 때문이다.
총평 및 추천 여부
로버트 C 마틴이 쓴 책인 만큼 역시 좋은 책이다. 나는 개인적으로 테스트 코드에 대한 내용이 너무 많아서 당황했지만, 그만큼 중요하다는 것을 강조하고 싶었을 것이다. 어쨌거나 소프트웨어 장인이 되기 위해서 테스트 코드가 그 만큼 필수적이라는 것일 테니까.
이 책은 소프트웨어 엔지니어로서의 윤리를 알리는 내용도 있다. 열몇 가지의 내용을 보여주며, 선서를 하면서 글을 따라오라는 문구를 던진다. 이 책을 읽고 나면, 스스로를 회사의 프로젝트의 일정이나 맞추는 개발자가 아닌, 장인 정신이 깃들어 있는 소프트웨어 엔지니어라고 여길 수 있게 되고, 보다 자신의 직업에 애착을 가질 수 있게 되는 것 같다.
'후기 > 책' 카테고리의 다른 글
책 리뷰 : 카오스 공학 (2) | 2025.06.22 |
---|---|
책 리뷰 : 이펙티브 엔지니어 (1) | 2025.06.03 |
책 리뷰 : Go 인 액션 (Go in Action) (0) | 2025.05.29 |
책 리뷰 : 쿠버네티스 패턴 (1) | 2025.05.18 |
책 리뷰 : 마이크로서비스 도입은 이렇게 한다 (0) | 2025.05.17 |