코드 정리에 대한 왈가왈부 — 켄트 벡의 Tidy First?
개발 책이지만 가볍게 읽을 수 있다면 믿어질까요? 바로 소개합니다.
제게는 이 책이 그랬습니다. Substack 에서 켄트 벡의 Tidy First 를 구독하여 받아보고 있던 와중에 동명의 책이 한글 번역본으로 출시되었다는 소식을 접했습니다.
작은 것 먼저? 무슨 뜻일지 궁금합니다. 책의 내용은 부제를 보면 예상하기가 더 쉽습니다.
더 나은 소프트웨어 설계를 위한 32가지 코드 정리법
네, 이 책은 소프트웨어 설계 책이면서 코드 정리에 대한 내용입니다. 이전까지의 소프트웨어 설계 책들이 너무 이상적이라고 느껴왔다면, 이번에는 너무 일상적이라고 느낄 지 모릅니다.
개발 경력이 길어지고 코드 정리에 대한 시행착오를 겪어본 경험이 있다면 이 책의 내용 중 절반은 이미 알고 있는 내용입니다. 크게 코드 정리를 수행하는 방법과 시기, 그리고 이론에 대한 내용이 전부입니다.
그게 뭐냐구요? 진짜로 이 책은 얇아요. 140쪽 남짓이고, 서문 등을 빼면 더 적습니다. 저는 하루만에 다 읽었어요.
일을 하면서 협업하는 동료들이 어려워하거나 질문할 때에 제가 평소에 하는 이야기들과 일맥 상통하는 부분이 많았습니다. 업무를 하면서 어렵거나 막힌 부분이 있다면 업무를 더 작게 나누어 보기. 작은 업무로 나누고 보면 막혀서 무얼 해야할 지 모르는 상태에서 벗어나 당장 할 수 있는 일을 찾을 수 있었고, 대게 처음에 막힌 상태가 해결되는 경우도 많았습니다.
실제로 회사에서 일하면서 어떤 규모가 큰 변경사항에 대하여 잘 작동하지 않는 다고 도움 요청을 받아 함께 살펴본 적이 있었는데요. 변경 사항이 크다 보니 제가 이것 저것 고치면서 시도해보아도 바로 작동하는 경우로 고쳐내기가 쉽지 않았습니다. 그래서 반대로 제안한 적이 있었습니다. 너무 큰 변경사항이라 코드리뷰도 버그 수정도 쉽지 않은 상태이니, 작은 단위로 다시 나누어서 진행을 해보자고 말입니다. 다행히 작업 수행한 직후라 머리 속에 기억이 그대로 있을 테이니 특별히 더 오래 걸리지는 않을 것이라 기대한다고 말이죠.
이 때에 무슨 일이 일어났을까요? 작은 일로 나누어 단계별로 일을 진행하니 처음 제게 물었던 문제 상황이 발생하지 않았습니다! 정말 놀라운 일이죠? 그런데 경우에 따라서 이러한 제안이 바로 받아들여지지 않을 수도 있습니다. 이미 진행한 일인데 왜 다시 해야하느냐고 말이죠. 그러한 경우에 동료에 대한 설득은 큰 에너지가 소모되는 일입니다.
그럴 때에 이 책이 바로 도움이 됩니다. 코드 정리 비용과 동작 변경 비용을 계산하는 이론을 제시하고, 어떤 효과를 가질 수 있는지 정리해서 알려주고 있습니다.
저도 프로젝트를 진행하는 일정이나 난이도, 시기에 따라서 어떤 경우에는 레거시 코드 정리를 먼저 하고 신규 코드를 작성하고, 어떤 경우에는 신규 코드를 작성하고 코드 정리는 나중으로 미루는 경우가 있습니다. 누군가는 제가 일관된 행동을 하지 않는다고 할 수도 있는데요. 그에 대한 방법과 이론 또한 이 책에 담겨있습니다.
제게는 너무도 즐거운 책이었어요. 제가 하던 코드 정리와 태스크 나누기에 대한 상세한 지침서와 같았습니다. 이제 저는 다른 동료들에게 더욱 자신있게 제안할 수 있고, 부족한 부분은 이 책의 이론을 제시하면 더욱 효과적으로 설득할 수 있다고 생각이 들었습니다.
마치며
책에 대한 내용 소개가 너무 적은가요? 그것은 이 책이 그만큼 쉽게 읽혀지고 내용이 적어서 일 수도 있습니다. 지금 당장 읽어보세요. 코드 작성에 자신있는 개발자일수록 코드 정리와 리팩토링에 힘을 쓰고 있는 개발자일수록 꼭 읽기를 권합니다.