-
-
심플 소프트웨어 - 코드의 단순성, 가독성, 안정성, 유지보수 ㅣ 길벗 개발자 자기계발서
맥스 카넷-알렉산더 지음, 이미령 옮김 / 길벗 / 2019년 10월
평점 :
절판
우선 이 책을 선택한 이유는 두 가지 인데, 바로 책 제목과 저자의 이력 때문이다. 먼저 저자인 Max Kanat-Alexander는 구글의 Code Health 기술 책임자이자, 오픈소스 프로젝트인 버그질라 bugzilla의 수석 아키텍트라고 한다. 구글의 코드 건강을 책임지고 있다니 무슨 말이 필요하겠는가.
하지만 이 책을 읽기 전부터 저자를 알지는 못 했다. 이 보다 먼저 나의 관심을 끌었던 것은 “심플 소프트웨어” 라는 책 제목이었다. “어떻게 하면 코드를 심플하게 만들 수 있을까?”가 나에게 있어 최근의 큰 화두였기 때문이다.
책은 전체적으로 개발자에게 필요한 기본 원칙과 복잡성과 단순성에 대해 이야기한다. 또한, 많은 부분이 프로젝트 관리자에게 유용한 내용들도 함께 담고 있다. 각 장들은 저자의 경험과 사례를 예로 들면서 설명하는데, 구글의 이야기가 없다는게 좀 아쉽긴 하다.
“프로그래머를 위한 원칙”으로 시작하는 책은 초반부터 뼈를 때리는 말로 시작한다.
뛰어난 프로그래머가 되고자 하는 마음이 있어야만 뛰어난 프로그래머가 될 수 있다. 이런 마음이 없는 사람은 아무리 훈련을 받아도 뛰어난 프로그래머가 될 수 없다.
나는 뭐든 할 거면 그 분야에서 제일 앞서 나가기 위해 최선을 다해야 한다고 생각하는 사람이기 때문이다. … “어차피 할 거라면 왜 잘하지 않나요? 더 능숙하게 할 수 있으면 그 일을 하는 게 조금 더 즐겁지 않을까요?
그리고 너무 당연하다고 생각하지만 막상 코드를 작성할 때는 잊기 쉬운 점을 두 줄로 간단명료하게 정의한다.
- 구현에 드는 수고보다 유지 보수에 드는 수고를 줄이는 게 더 중요하다.
- 유지 보수에 드는 수고는 시스템의 복잡성에 비례한다.
메소드 하나가 400라인이 넘는 소스를 한땀한땀 따라가면서 분석하고 있는 요즘 너무 와닿는 내용이었다. 이어지는 장에서는 복잡성과 단순성이란 개념에 대해 흥미롭게 풀어간다.
특히 앞서 얘기 했지만 개발자 관점을 넘어 개발팀과 팀의 리더 혹은 프로젝트 관리자의 관점에서 필요한 이야기를 많이 하고 있다. “소프트웨어 회사에서 코드 복잡성을 다루는 법”에서는 복잡한 코드베이스를 단순하게 만들기 위해 관리자가 각 팀원들의 문제를 해결하는데 도움을 줄 수 있는 방법을 6단계로 나눠서 설명하기도 한다.
이 외에도 디버깅, 테스트, 프라이버시 등과 같은 다양한 이야기를 담고 있다. 개발자라면 한번쯤은 읽어 보면 좋을 내용이라고 생각한다.
이 책은 저자의 블로그 글들을 모아 책으로 만들었다고 한다. 그래서인지 (저자도 앞서 얘기하지만) 꼭 순서대로 읽지 않아도 문제가 없게 구성되어있다. 그리고 각 챕터들은 내용이 길지 않고 설명이 어렵지 않아서 쉽게 쉽게 읽히는 것 또한 장점이다.
한가지 아쉬웠던 점은, 어느정도는 코드 레벨의 접근도 기대했는데 그렇지 않았다는 점이다. (책 뒷 표지에 쓰인 “코드는 한줄도 나오지 않습니다” 라고 시작하는 서평을 책을 다 읽고 나서야 보았다.) 이 부분은 이 책 보다 먼저 쓴 “Code Simplicity” 라는 책이 도움이 되지 않을까?