특정 분야에서 현재까지 가장 큰 영향을 미친 단 하나의 책을 뽑아야 한다면 어떻게 될까? 모르긴 몰라도 대부분 분야에서 수많은 논쟁이 오갈 것이다. 철학과 인문학 분야에서는 서로 죽일 듯이 덤빌지도 모른다. 하지만 소프트웨어 분야는 간단하다. 바로 이 책 익스트림 프로그래밍이다. 물론 내 생각이다.

 

이 책은 소프트웨어 분야에서 우리 시대의 패러다임을 이끌었고 이끌고 있다. 1999년 초판이 나온 지 25년이 지났지만 내 생각에 우리는 아직도 이 책에서 한 발짝도 더 나아가지 못했다. 또한 이 책은 지금껏 내가 읽었던 어떤 프로그래밍 관련 도서보다도 인간적이고 진심 어린 책이다. 이 책의 저자 켄트가 얼마나 프로그래밍의 본질을 잘 이해하고 있는지 알 수 있는 대목이다.

 

 

말 그대로 극단이다

Extreme Programming을 직역하면 극단 혹은 극한의 프로그래밍 정도이다. 제목만 보면 영혼이 나갈 정도로 엉덩이에 땀나게 프로그래밍하라는 것인가 생각이 든다. 충분히 오해할만하다. Extreme이란 단어는 이 책의 정수이자 한계다.

 

Extreme은 이 책을 관통하는 주제이다. 켄트가 정확하게 ‘Extreme은 무엇이다’라고 정의하진 않기 때문에 내 나름대로 정의를 해보겠다. Extreme, 즉 극단은 “나를 얽매는 과거의 습관과 보호해 주는 방어기제에서 벗어나 내가 해야 하는 책임을 온전히 다하는 것” 혹은 “실수와 한계 같은 취약성을 과감히 드러내고 이를 극복하기 위해 애쓰는 것” 정도이다. 단순하게 말하면 해야 할 걸 하라는 거다.

 

그렇다면 우리 프로그래머가 해야할 건 무엇이란 말인가? 이를 켄트는 추구해야 할 ‘가치’와 준수해야 할 ‘원칙’으로 설명한다. 흔히 XP를 실천방법으로만 많이 알고 있는데 이는 XP를 반도 이해하지 못한 것이다. 실천방법뿐만 아니라 XP에서 제시하는 가치와 원칙도 매우 훌륭하기에 읽어볼 만한 가치가 있다. 물론 책에서도 강조하지만 자신만의 가치와 원칙을 가지는 게 무엇보다 중요하다.

 

 

패러다임을 이끌다

패러다임은 한 시대 사람들의 견해나 사고를 규정하는 인식 체계를 말한다. 쉽게 붙여지는 수식어가 아니라는 말이다. 그런데도 내가 패러다임을 이끈 책이라고 말하는 이유는 이 책이 가진 역사적 의미와 또 다른 중요한 이유가 있어서이다.

 

역사적 의미

현대 소프트웨어 공학의 역사는 2001년 애자일 선언부터 현재의 데브옵스(적어도 아직까진)로 이어지는 흐름을 가지고 있다. 그리고 XP는 이 모든 흐름의 시작이다.

 

애자일

이 책의 많은 내용은 애자일을 염두에 두고 있다. 그래서 그냥 컨텍스트 없이 읽다 보면 애자일에 대한 책이구나 하면서 읽게 된다. 하지만 이 책은 1999년 애자일 매니페스토가 있기 2년 전에 출간된 책이다. 애자일을 예측했다기보다는 이 책, 그리고 저자 켄트가 애자일에 많은 영향을 주었다고 보는 게 맞다.

물론 애자일 매니페스토를 있게 한 스노버드 회의는 로버트 마틴이 주관했지만, 로버트 마틴이 애자일에 관심을 가지게 된 계기 자체도 켄트의 익스트림 프로그래밍 덕분이다. 이 내용은 로버트 마틴의 저 “클린 애자일”에 자세히 나와 있다. 로버트 마틴은 XP를 매혹적이고 혁명적인 발상이었다고 회상한다.

 

XP의 실천 방법

이쯤에서 XP의 실천 방법을 보자. 먼저 기본 실천 방법이다.

  • 테스트 우선 프로그래밍
  • 지속적 통합
  • 짝 프로그래밍
  • 전체 팀
  • 스토리
  • 일주일별 주기
  • 점진적 설계
  • 10분 빌드…

사실 13개로 더 있는데 이 정도만 보자. 솔직히 처음에 나는 좀 놀랐다. 전부 하나하나가 최근까지도 생생하게 논의되는 주제들이다. 최근 열리는 콘퍼런스에서도 흔히 볼 수 있는 주제들이다. 심지어 최근에 어떤 강사의 강연을 하나 봤는데 TDD를 보고 너무 급진적이라고 표현하더라. 25년 동안 우리는 무엇을 했는가? 보조 실천 방법은 더 놀랍다.

 

소프트웨어는 인간이 개발한다

XP가 패러디임을 이끈다고 생각하는 또 다른 이유는 소프트웨어를 기술 관점으로만 바라보는 게 아니라 인간의 행위로써 바라봤기 때문이다. 이런 책이 처음은 아니다 “피플웨어”와 같은 뛰어난 책도 있다. 하지만 XP가 특별한 이유는 기술적 탁월성과 인간적인 욕구 이 중 어느 한 곳에도 치우치지 않고 조화를 이뤄냈기 때문이다. 인간을 끊임없이 최고를 추구하도록 하는 “극단”의 상태로 내모는 냉철함을 가지면서도 하나의 주체로써 인간적인 욕구를 충족시키도록 하는 따듯함을 가졌다. 소프트웨어가 사람과 사람 간의 관계의 산물이라는 것을 깨닫기 전에는 불가능한 일이다.

 

 


 

 

자세를 고쳐 앉다

나는 기술서가 아닌, 특히 이런 남의 생각을 담은 철학다운 책을 읽을 때는 딱딱한 책상이 아니라 소파와 같은 편한 상태에서 읽는 것을 좋아한다. 편하게 즐기고 싶은 마음도 있지만, 남의 생각에 너무 깊게 빠져들지 않고 한 발짝 뒤에서 바라보고자 하는 의도이다. 이 책도 여느 날 다른 책과 같이 내가 좋아하는 소파에서 책을 읽기 시작했다. 책의 첫 페이지를 다 읽었을 때쯤이었나? 나는 자리가 박차고 일어났다. 그리고 곧장 딱딱한 책상 앞으로가 허리를 꼿꼿이 세우며 책을 읽기 시작했다. 내가 자세를 고쳐 앉은 거의 유일한 책이다. 무엇 때문이었을까? 아마 켄트의 진심이 느껴져서였을 것이다.

 

물리적인 자세만 고친 것이 아니다. 이 책을 읽은 뒤로 프로그래밍을 대하는 내 자세 또한 바뀌었다. 이 책은 그런 마법 같은 힘을 가지고 있다. 여러분도 프로그래밍에 진심이고 이 책에서 켄트의 진심을 느낀다면 나처럼은 아니더라도 분명 무언가를 얻어갈 수 있을 것이다.