극단(extreme)으로 가기 위한 철학

익스트림 프로그래밍 - 변화를 포용하라


"익스트림 프로그래밍 : 변화를 포용하라"를 읽고

켄트 벡, 신시아 안드레스. 익스트림 프로그래밍(Extreme Programming). 김창준 옮김. 인사이트, 2006.

6월에 읽기 시작한 '익스트림 프로그래밍'을 두 달이 지난 이제서야 다 읽었다. 한 페이지마다 깊은 내용을 다루고 있어 책 읽는 속도를 올리기 쉽지 않았다. 읽을 때마다 나도 모르게 생각에 잠기곤 했는데 그 덕분에 회사를 비롯하여 나를 둘러싸고 있는 환경과 그 속에 있는 나에 대한 깊은 고민을 할 수 있었다. '어떻게 하면 더 나은 직장 생활을 할 수 있을까?', '어떻게 하면 더 나은 개발자가 될 수 있을까?', '어떻게 하면 내가 맡은 프로젝트를 잘 완수할 수 있을까?', '어떻게 하면 더 나은 팀/회사가 될 수 있을까?' 등등의 고민이 주를 이루었던 것 같다. 만약 나와 같은 고민을 하고 있다면 이 책을 추천한다. 그 이유는 이 책은 단순히 '익스트림 프로그래밍을 실천하는 방법'을 알려주는 책이 아니기 때문이다. 책에서는 개발자로 살아가는데 필요한 '본질'을 다루고 있고 이 '본질'을 깊게 사유하다 보니 위 고민에 대해 이전보다 나은 통찰을 하게 되었기 때문이다. 이 책은 개발을 잘하기 위한 방법만 알려주는 것이 아닌 개발자로 살아가는 사람들의 삶을 관통하는 철학책이다.

익스트림 프로그래밍(XP)은 가치를 추구하는 철학이다.

익스트림 프로그래밍의 실천 방법 몇 가지는 예전부터 알고 있었다. '짝 프로그래밍', 'TDD'가 이에 속한다. 그래서 나는 이 책이 이러한 실천 방법들을 자세히 소개하는 정도라고 생각했다. 그러나 이 책은 그 이상의 것을 담고 있었다. 특히, 책 초반부에 익스트림 프로그래밍이 추구하는 가치들에 대해 소개하고 있는데, 개발자를 직업으로 가진 사람이라면 이 가치들에 대해 한 번쯤은 깊게 고민해볼 만 하다. 익스트림 프로그래밍이 추가하는 가치는 다음의 다섯 가지다.

  1. 의사소통
  2. 단순성
  3. 피드백
  4. 용기
  5. 존중

위 다섯 가지의 가치를 추구하며 개발 활동을 하는 것이 익스트림 프로그래밍이다. 당연하겠지만 익스트림 프로그래밍의 모든 실천 방법들은 위의 가치들을 추구하도록 설계되어 있다. 즉, 정말 중요한 것은 '짝 프로그래밍'을 하고 있다가 아니라 '짝 프로그래밍'을 하면서 위의 가지들을 추구하고 있는지다. 'TDD' 역시 마찬가지고 '스토리', '일주일별 주기', '지속적 통합' 등등 다른 실천 방법들 역시 예외는 아니다.

익스트림 프로그래밍(XP)은 우리의 일상이다.

책의 10장에서는 '전체 XP 팀'이라는 주제로 익스트림 프로그래밍을 실천하는 팀이 어떻게 일을 하는지 자세히 묘사하고 있다. 개발자, 테스터, 제품 관리자와 같이 쉽게 생각할 수 있는 역할 외에도 임원, 사용자 등의 역할에 대해서도 다루고 있어 굉장히 흥미롭게 읽었다. 이 장을 읽다 보면 나도 모르게 이 팀에 이입하게 되고 현재 내가 속한 환경을 되돌아보게 해준다. 어찌 보면 일상적인 팀이지만 공동의 목표를 향해 각자의 역량을 최대한 발휘하고 그 속에서 협력하는 모습이 인상적이다. 우리의 일상도 이러한 모습에 가깝다면 더 나은 하루하루가 되지 않을까 생각한다. 책에서 역할별로 설명을 했다고 해서 XP 팀에서 각자의 역할이 고정된 것은 아니다. 개발자가 스토리도 작성했다가 테스터가 되기도 한다. 테스터가 자동화 테스트를 작성하기 위해 개발을 하기도 한다. 그리고 그 과정에서 개발자와 테스터가 같이 짝 프로그래밍을 할 수도 있다. 이러한 일상을 만들어나가는 것이 익스트림 프로그래밍이다.

익스트림 프로그래밍(XP)은 상호 존중이 바탕되어야 한다.

책에서는 건축가 '크리스토퍼 알렉산더(Christopher Alexander)'를 소개하고 있다. 알렉산더는 건물을 지을 때 건물을 사용하게 될 사람들의 의견을 반영해야 한다고 생각한 건축가이다. 즉, 건축가들보다 실제 건물을 사용하게 될 사람들이 그 건물에 대해 더 잘 알고 있다는 말이다. 소프트웨어 분야에서도 알렉산더의 생각이 통한다. 소프트웨어 개발자는 기술적 탁월함만을 추구하는 것이 아니라 실제 사용자들의 의견을 듣고 이를 통해 새로운 비즈니스 가치를 창출해야 한다. 당연한 이야기이지만 소프트웨어가 사용자에게 가치를 전달하지 못한다면 그 소프트웨어는 더는 쓸모가 없다. 책에서는 소프트웨어가 사용자의 요구를 잘 반영하기 위해서는 함께 일하는 사람 간에 상호 존중이 바탕이 되어야 한다고 말한다. 이러한 상호 존중이 바탕이 되었을 때 진정한 팀워크를 발휘할 수 있고 소프트웨어가 기술적 탁월함 뿐만 아니라 비즈니스적 가치를 지니게 될 수 있기 때문이다.

익스트림 프로그래밍(XP)은 더 나은 삶을 위한 것이다.

책의 저자 켄트 벡은 개발자들의 더 나은 삶을 위해 XP를 정립했다고 한다. 책을 읽기 전 '극단(extreme)'이라는 단어는 나에게 긴장감을 안겨 주었다. 하지만 책을 읽은 뒤 이 극단(extreme)에서 다섯 가지의 가치들과 어울려 하루하루를 즐겁고 활기차게 보내고 있는 나의 모습이 어렴풋이 그려졌다. 익스트림 프로그래밍을 접할 때 지식을 춤처럼 대하라는 니체의 말이 생각났다. 익스트림 프로그래밍은 마치 개발 활동을 춤을 추듯 만들어 주는 것 같다. 춤을 추듯 TDD를 하고 춤을 추듯 페어 프로그래밍을 하고 춤을 추듯 스토리를 작성해 나간다고 생각해보자. 활기찬 하루하루가 머릿속에 그려지는 것 같다. 이제 실천할 일만 남은 것 같다. 책의 저자 켄트 벡이 그랬듯 '나' 먼저 '극단(extreme)'을 향해 나아가는 실천을 해보고자 한다.