켄트 벡의 ‘Tidy First?’를 읽고

켄트 벡의 ‘Tidy First?’를 읽고

요소들을 유익하게 관계 맺는 일에 관하여

켄트 벡의 ‘Tidy First?’가 한국어로 번역되어 나왔다는 소식을 들었다. ‘Extreme Programming(XP)’을 재밌게 읽었던 사람으로서. 한편으로 그가 제안한 방법들이 엄청난 논쟁을 불러일으켰다는 것을 떠올리며(TDD 등). 기대 반 걱정 반으로 읽기 시작했다.

켄트 벡은 아침에 이걸 읽고 바로 일에 써먹을 수 있게 되는 모습을 생각하며 책을 썼다고 한다. 그래서일까. 책은 100 페이지 정도로 얇고, 내가 필요한 것을 골라서 쓰기 좋게 목차가 구성되어 있었다.

전체적으로 인상 깊은 부분이 많았지만 그중에서도 ‘파트 3, 원리’의 두 가지 내용이 너무 좋아서 꼭 이야기하고 싶었다.

설계, 한 문장으로

나는 켄트 벡이 소프트웨어 설계의 정의를 한 문장으로 표현한 것을 보고 놀라움을 느꼈다.

Beneficially Relating Elements. 한국어로는 ‘요소들을 유익하게 관계 맺는 일’로 표현되었는데, 원문과 함께 보았을 때의 통찰이 배로 늘어난다. 그렇다면 우리의 일은 단 3가지로 정리된다.

  • 우리는 요소를 만들거나 없애는 일을 한다.

  • 우리는 요소들 사이의 관계를 맺거나 없애는 일을 한다.

  • 우리는 관계 자체의 퀄리티를 높이는 일을 한다.

위의 일들을 통해 요소 각각의 동작과 역할이 분명해진다. 관계를 맺음으로서 요소들끼리의 시너지가 커진다. 자연스레 구조가 만들어지게 된다. 구조가 있기에 우리는 다시 개선을 할 수 있게 된다.

이 대목을 읽고, 내가 앞으로 무엇에 초점을 맞춰야할지 생각해보게 되었다. 반대로 이런 생각이 들었다. 나, 그리고 소프트웨어 모두 동일한 유기체다. 그렇다면 더 나은 내가 되는 일 역시 소프트웨어의 설계와 비슷한 부분이 있지 않을까.

가능성

나는 월급을 ‘일을 처리한 대가’라고 생각했다. 하지만 이게 개발자의 역할을 모두 담지 못하는 것 같았다. 무언가 떠오르는데 말로 표현을 못하는 답답함을 앓았다. ‘Tidy First?’를 읽고 그것의 정체를 깨달았다.

켄트 벡은 먼저 돈이 갖는 두 가지 속성을 이야기했다. 하나는 버는 것은 빨리하고 쓰는 것은 최대한 미루는 것. 다른 하나는 불확실한 상황에서 옵션이 많은 것이 유리하다는 것. 후자의 이야기가 머리를 때렸다. 우리는 다음에 할 수 있는 일. 즉, 가능성에 대한 대가를 받는 것을 알았다.

문득 예전에 캘린더 컴포넌트 만들 때가 떠올랐다. ‘이런 게 있으면 좋겠지?’라며 잔뜩 만들었지만 하나도 쓰이지 못했고 되려 발목을 잡았다. 캘린더는 복잡한 괴물이 되고 말았다. 그건 옵션을 만드는 일이 아니었구나.

되돌아간다면 어떻게 할까. 핵심을 작게 먼저 만들겠지만, 내가 가진 옵션의 수를 주기적으로 생각해볼 것 같다. 시간이 남으면 할 일과 지금의 일을 비교했을 때 차이가 크다면 내가 가진 옵션이 적다는 것 아닐까?

코드에 적용하기

위의 원리들을 생각하며 다시 ‘파트 1, 코드 정리법’을 읽으면 또 다른 재미를 느낄 수 있을 것이다.

코드 정리법을 사용해 코드를 개선한다. 그걸 반복하면 이전에 만들었던 통로 인터페이스나 도우미 함수, 주석들이 눈 녹듯 사라지고 더욱 개선된 코드가 남는다.

점진적으로 변화가 쉬워질 것이고, 이내 쉽게 변할 수 있게 될 것이다. 자연스럽게 켄트 벡이 생각하는 XP나 TDD 등이 무엇을 말하는지도 어렴풋이 알게 된 것 같았다.


개발을 할수록 개발은 나, 그리고 나를 둘러싼 것들과 합을 맞춰나가는 과정이라는 생각을 갖게 된다.

안전하면서 기민하게 움직이는 방법. 비용은 줄이면서 가치를 극대화하는 방법은 무엇일까. 작은 것부터 먼저 시작해볼 수 있지 않을까? (Tidy First)

이 글은 한빛미디어의 도서 지원을 받아 작성한 리뷰입니다.