11월 내 책상에는 프로그램 개발에 관한 두 책이 놓여져 있는데, '리펙토링'과 이 책이다.
우선 이 책을 이야기해야 할 것 같다. 원제인 'The Art of Readable Code'는 책의 주제와 내용을 가장 잘 표현해 주는 것 같은데, 번역서의 제목인 '읽기 좋은 코드가 좋은 코드다' 라는 제목도 우리가 이 시점에 이 책을 읽어야 하는 이유와도 일맥상통하기에 아주 좋은 번역이라고 하겠다.
저자 2명은 구글에서 현업 프로그래머로 활동하는 사람으로 자신들이 구글에서 현재도 지키고 있는 프로그래밍 원리를 몇 가지 분류에 따라 나누어 책을 썼다. 이 책의 주요 내용과 특징을 살펴보면,
첫째, 이 책은 크게 보면 리펙토링(프로그램의 기능을 바꾸지 않고 내부를 수정하여 성능/가독성 등을 좋게 하는 일)에 관한 책이고, 또한 일부의 내용은 secure coding(프로그램의 내부를 robust하게 구현하여 어떠한 예외에도 프로그램이 이상동작하지 않게 하는 개발 방법)과도 연결되어 있다. 우리는 bussiness logic에는 무척 강하고, 우리 분야에서 우리만큼 잘 하는 국내 경쟁사는 없다고 해도 과언이 아니다. 그런데, 설계 기술과 개발 기술도 그러할까? 이 고민에서 올 한해를 시작한 나는 연말에 이르러서야 어렴풋이 실마리를 잡을 수 있었고, 그 한 축에 이 책이 있다. 즉, 아주 좋은 재료를 그냥 얼기설기 엮을 것이 아니라 씨줄과 날줄을 구분하여 무늬도 아름답게 그리고 조직도 촘촘하게 할 기술적 토대를 쌓는 것 역시 네트워크 기반의 프로그래밍을 잘 하는 것 못지 않게 중요하는 것을 이 책을 통해서도 일부 체험할 수 있는 것이다.
둘째, 기존 리펙토링 서적(앞으로 리뷰할 그 책)과는 달리 클래스 기반(정확히는 객체 기반)의 프로그램에서 패턴을 찾아 개선하는 방식이라기 보단 좀 더 우리 실정에 맞게 -C언어의 절차적 순서기반 프로그램이나 python같은 인터프맅터 언어에서도- 변수의 이름 변경, 함수의 파라메터 선정, 주석의 활용, 분기(if..else)의 조건문 순서 변경 등을 통해 얻는 이점으로 시작하여 점차 고급 언어로의 적용으로 책 방향을 설정하였다. 실제로 예제도 C, pythom, java, C++ 등이 등장하며 이 때문에 고급언어에 익숙하지 않은 우리 C 개발자들도 쉽게 코드 개선을 따라 할 수 있을 것으로 기대된다.
셋째, 책 제목 처럼 궁극적으로 읽기 쉬운 코드로 작성하여 좋은 점을 단순히 프로그램의 성능 개선, 기능 개선에 두는 것이 아니라 그것을 운용하고 활용하는 사람에 맞추고 있다는 것이다. 기능을 개발한 담당자가 프로그램의 생명주기(life cycle)동안 계속 그 부분을 담당할 수도 없고, 회사에 남으리라는 보장도 없는 상황에서 너무 안이하게 여겼던 가독성을 코드의 품질을 평가하는 수준으로 높여보자는 것이다. 이를 통해 담당자 본인이 아니더라도 어느 누가 이 코드를 보더라도 초기 개발자의 의도를 파악하고 의도에 맞게 유지보수를 할 수 있도록 하자는 것이다.
위 세 가지 특징은 이 책이 우리의 필독서가 되게 하는 데 큰 장점이라 생각한다. 고전 '리펙토링'과 함께 두고두고 돌려가면서 익힐 일이다.