애자일 방법론에 대한 관심은 객체지향에 눈을 떴을 때부터 있어왔다. 그도 그럴것이 객체지향과 그렇게나 밀접하다고 여기 저기 많은 정보들이 내 귀에 속삭여왔고 보통의 딱딱하고 격식 있는 폭포수 모델보다는 확실히 뭔가 자유분방한 느낌이 강했기 때문이다. 게임 프로그래머라면 무릇 딱딱함을 배제하고 자유분방함을 취해야 한다는 사명감 비슷한 것이 있었기 때문일까, 아무튼 꾸준히 나는 애자일 방법론에 대해 관심을 표해왔다.

하지만 본격적으로 관심을 표한 것은 이번이 처음이다. 확실하게 말해서 XP에 대해 이 정도로 심도 있게(사실 실제로 XP를 사용하는 프로젝트 팀이 들으면 콧방귀를 뀌겠지만..) 알고 싶었던 적은 없었다. 사실 좀 수동적이었다고 해야 할까. 어느 회사 어느 프로젝트든 애자일을 쓰는 팀이 하나 정도는 있을 것이다. 하는 기분으로 살고 있었다. 그런 팀에 들어가서 배우면 되지! 하고 생각했다. 하지만 역시 배움이라는 것은 수동적일 때는 제대로 이루어지지 않는 법인 모양이다.

이 책은 예전에 알라딘 중고서점을 산책하듯 가서는 슬쩍 집어온 책이다. 애자일 방법론에 대한 막연한 궁금증을 이 책으로 조금이라도 해소할 수 있을 것이라 여겼다. 언제 볼지 기약은 할 수 없었지만.. 뭐 아무튼 오늘 다 봤으니 그것으로 된 것 아닐까?

익스트림 프로그래밍은 다들 알듯이 애자일 방법론 중 가장 유명한 방법론이라고 해도 손색이 없을 정도로 유명한 방법론이다. 뭐 간단하게 말하자면 ‘고객과 밀접하게 관계하여 실행 가능한 버전을 계속해서 생산해낸다.’고 하는 애자일의 지론을 여러 가지 기법들을 사용하여 풀어나가는 것인데, 이 기법들이라는 것이 다들 꽤 신랄하게 관료적인 사상들을 깨부수는 것들이다.(아마 자유로운 영혼이 아니라면 우리 나라에서는 이 방법론을 채택하기 힘들지 않을까 싶을 정도로..)

일단 이 책에서 언급되는 기법들이다. 설명은 내가 대충 덧붙여 보았다.

  • 계획 짜기 게임 : 서류화를 배제하고 목적(유저 스토리)을 간단한 카드로 만든다.
  • 짧은 릴리즈 : 이터레이션 단위로 짧은 목표를 계속 릴리즈해 나간다.
  • 메타포 : 기술팀이 사용하는 어려운 단어가 아닌 고객이 이해하기 쉬운 단어들(은유)
  • 단순 디자인 : 객체지향 프로그래밍적인 디자인!
  • 테스트 : 선 테스트를 지향한다.(테스트를 먼저 작성하고 프로그래밍을 한다.)
  • 리팩토링 : 했던 작업 중 코드 냄새가 나는 것들을 리팩토링
  • 짝 프로그래밍 : 둘이 한 팀이 되어 한명은 사고, 한명은 코딩을 한다.
  • 코드 공동 소유 : 내가 작성한 코드를 팀원 모두가 공유한다.
  • 지속적인 통합 : 컴파일 가능한 코드를 지속적으로 머지한다.
  • 주당 40시간 근무 : XP는 집중력을 요하므로 주당 40시간 근무를 철저히 지킨다.

    뭐 이런건데, 이 책의 저자는 이 모든 것을 모두 사용해야 가장 최적의 효과를 낸다고 언급, 언급, 마지막에 그 실례까지 들면서 수차례 강조 언급한다. 사실 내 짬밥이 아직 프로젝트 관리자가 되려면 한참이나 남은 시기이기 때문에.. ㅋㅋ 일단 그런 것들은 대충 훑고만 넘어갔다. 내 관심사는 익스트림 프로그래밍의 대략적인 구조와 느낌이었기 때문에.. 뭐 이런 관심들은 이 책을 덮고 나서는 어느 정도 충족되었다고 할 수 있으니 나름대로 만족스러운 독서였다고 해야 할까.

    이 책의 단점으로써는 꽤 오래 된 책인지라 기술적으로 약간 구식 냄새가 나고 해석도 좀 보편적인 표현법이 아니라 역자가 내키는대로 해석한 느낌 정도..(딱딱한 해석이었다.) 뭐 옛날 책은 보통 다 이런 느낌이긴 하지만..

    그래도 즐겁게 읽었다. 애자일에 대한 어느정도의 감은 익혔다고나 할까. 나중에 다시 궁금한 게 있으면 뒤져보겠지만.. 음. 언제가 될까 ㅋㅋ 이 기법을 과연 내가 적용시킬 수나 있을지 걱정이다… 휴 ㅋㅋ

    재미있었다!