XP 적용하던 중 떠오른 생각들...

분류없음 @ 2007/10/19 11:04   by noja21

오늘도 프로젝트에 익스트림 프로그래밍(XP)를 적용하기 위해서 나름 열심히 고민하고 있습니다^^; 그러다 보니 애자일 방법론을 채택하고 있는 다른 국내 개발사들이 궁금해져서, 웹서핑을 하던 중 떠오른 생들을 몇 자 정리했습니다.

컴포넌트 비전에서 일하는 분들이 《Extreme Programming Installed》를 번역한 걸로 알고 있습니다. 2002년에 발행되었습니다. 켄트 벡의《익스트림 프로그래밍》가 XP의 철학에 관한 책이라면, 이 책은 실천 대한 책입니다. 모든 분이 추천하는 좋은 책이긴 하지만, 개인적으로 최근에 나온 《애자일 프랙티스》를 더 선호하는 편입니다.

모비젠에서는 짝 프로그래밍을 제외한 XP를 적용하고 있다고 합니다. 개인적으로 짝 프로그래밍은 XP의 꽃이라고 생각합니다. 저도 처음엔 익숙하지 않아서 어색했었지만, 차츰차츰 짝 프로그래밍의 생산성 체감할 수 있었습니다. 짝 프로그래밍 적극 추천합니다~!!

오픈마루는 대표적인 애자일 실천 기업이라고 생각합니다. 스프링노트를 개발할 때 김창준씨가 참여했다는 사실이 부러웠습니다. 저희 회사도 돈만 많으면...ㅡ.ㅡ 그리고 엔씨소프트의 캐주얼 게임 개발 팀 중에서 XP를 일부 도입했던 것으로 알고 있습니다. (지금은 엔씨에 연줄이 닿질않아서...)

마아에트 엔터테인먼트에서는 그래픽 팀이 XP를 조금씩 사용 중이라고 합니다. 그래픽 작업에서 어떻게 XP가 적용되고 있는지 정말 궁금합니다.

그리고 델리마운트에서도 XP를 적극적으로 도입하고 있습니다. 현재 의사 소통, 짝 프로그래밍, 사용자 스토리, TDD, 리팩토링 등을 적용하고 있으며, 앞으로 지속적으로 애자일의 방법론을 애자일스럽게 적용할 예정입니다. 앞으로 저희가 경험하게될 수많은 삽질(?)들을 블로그와 위키에 열심히 정리하도록 하겠습니다. 많은 관심 부탁드립니다~ ^_^

이지킨 프로젝트를 시작한지 약 1년의 기간이 흘렀습니다. 1년이라면 짧은 기간이 아닌데, 별로 한 것도 없이 흘러가버렸습니다. 지난 1년간 한 것이라곤 고작 시행착오를 겪은 것이 다일 정도입니다.

작년 5월 처음 이지킨에 대한 아이디어를 구상하고 있을 때 플랫폼을 뭘로 할지 고민하였습니다. 웹으로 하자는 의견이 있었는데, 자바스크립트로 원하는 성능을 내기 힘들것이라고 결론 내려졌습니다. 이는 저의 지난 프로젝트 경험에서 비롯된 것인데, 이것이 아마도 이지킨 프로젝트의 가장 치명적인 시행착오인 듯 합니다. 아무튼 당시 플랫폼은 자바로 결정되었는데, 이유인즉 크로스 플랫폼(cross-ploatform)을 지원하기 위해서였습니다.

플랫폼을 자바로 결정한 후 개발을 위한 여러 가지 사전 작업이 있었습니다. 정석적인 프로젝트 진행을 위해서 스티브 맥코넬의 《소프트웨어 프로젝트 생존 전략》을 참고하였으며, 약 1달 가량 2명의 인원이 투입되어 프로토타입을 제작하고 예상 사용자들의 반응을 조사하였습니다.

여기에서도 시행착오가 있었습니다. 《소프트웨어...》은 소프트웨어 개발 프로젝트 진행의 교과서라고 할 수 있습니만, 그 내용은 저희가 진행하는 프로젝트에 적합하지 않았습니다. 이 책에 정리된 내용은 중/대형 프로젝트에 적합한 것으로서, 저희와 같이 소규모 인원이 투입된 프로젝트에 적용하는 경우 프로젝트 진행 속도가 느려지는 문제점을 발견하였습니다.

초기 개발 스펙이 그다지 크지 않고 개발에 참여한 인원이 적기 때문에 프로젝트의 참여자 모두가 제품에 대해서 속속들이 알고 있는 상황에서 프로토타입은 필요하지 않았습니다. 오히려 프로토타입 작업 자체가 무거워서 전체 일정이 지연된다고 판단하였습니다. 물론 프로토타입을 통해서 실 사용자들의 반응을 살펴보고 그것을 제품에 반영한 것은 잘한 점이지만, 사용자의 요구 사항을 조사하는 과정에 프로토타입이 반드시 필요한 것은 아니라고 생각합니다.

그래서 프로젝트 진행 방법을 익스트림 프로그래밍(eXtream Programming)으 로 전환하였습니다. 사용자 스토리(user story)를 작성하고 1~2주 단위의 반복 계획을 작성하였습니다. 테스트 주도 개발을 적용하였으며, 지속적으로 소스를 리팩토링하였습니다. 그리고 이 모든 것들은 서브버전(Subversion)과 트랙(Trac)으로 관리되었습니다.

XP는 저희 팀과 프로젝트에 적합한 프로세스였습니다. 그런데 XP를 적용함에 있어 한 가지 어려운 점이 있었는데, 바로 짝 프로그래밍(pair programming)입니다. 짝 프로그래밍의 생산성은 놀라웠습니다. 프로그래밍을 할 때 두명이서 공동으로 작업하기 때문에 시스템 설계에서 디버깅까지 실시간으로 진행되었습니다. 별도의 디자인 문서나 코드 리뷰 작업이 필요하지 않았습니다.

그러나 모든 프로그래머가 짝 프로그래밍에 적응하지는 못했습니다. 한명의 프로그래머가 대화식 진행에 어려움을 겪었습니다. 짝 프로그래밍을 효율적으로 진행하기 위해서 자신의 의견이 틀린 경우 빨리 자신의 실수를 인정하는 용기가 필요했습니다. 하지만 이는 자신의 생각이 뚜렷하고 자존심 강한 젊은 프로그래머에게는 쉽지 않은 일이였습니다. 결국 현재는 짝 프로그래밍과 코드 리뷰 작업을 병행하고 있습니다. 그렇지만 이는 현실을 고려한 일시적인 조치로써 점차적으로 풀 타임 짝 프로그래밍으로 전환할 계획입니다.

열심히 적다보니 내용이 너무 길어지는 것 같군요. 나머지는 다음에 적는 걸로 하고, 프로젝트 뒤돌아보기 1부는 여기에서 마무리하도록 하겠습니다~ ^_^