ExtremeProgramming을 어떻게 공부할 것인가
제가 공부한 경험을 토대로 "만약 다시 공부한다면...":
XP를 이해하려면 다음 기본 자료에 대한 이해가 우선되어야 합니다.
- XP Explained (Kent Beck) : XP 선언서
- XP Installed (Ron Jeffries et al) : C3 프로젝트에 적용한 예, 얻은 교훈 등
- Planning XP (Kent Beck, Martin Fowler) : 계획 부분만 설명 (관리자, 코치용)
- Refactoring (by Martin Fowler) : 리팩토링에 대한 최고의 책
- XP Applied : 유즈넷과 메일링리스트의 논의 등 최근의 자료를 반영
- XP Explored : 가장 쉽고 구체적인 XP 안내서
- The Timeless Way of Building : 패턴 운동을 일으킨 Christopher Alexander의 저작. On-site Customer, Piecemeal Growth, Communication 등의 아이디어가 여기서 왔다.
여유가 되면 다음의 자료를 더 참고합니다.
- XP in Practice (Robert C. Martin et al) : 두 세 사람이 짧은 기간 동안 간단한 프로젝트를 XP로 진행한 것을 기록. Java 사용. (중요한 문헌은 아님)
- XP Examined (논문 모음집) : XP 컨퍼런스에 발표된 논문 모음
- Peopleware (Tom DeMarco) : 개발에 있어 인간 중심적 시각의 고전
- Adaptive Software Development (Jim Highsmith) : 복잡계 이론을 개발에 적용. 졸트상 수상.
- Surviving Object-Oriented Projects (Alistair Cockburn) : 얇고 포괄적인 OO 프로젝트 가이드라인
- Software Project Survival Guide (Steve McConnell) : 조금 더 "SE"적인 시각.
- The Psychology of Computer Programming (Gerald M. Weinberg) : 프로그래밍에 심리학을 적용한 고전. Egoless Programming이 여기서 나왔다.
- Agile Software Development (Alistair Cockburn) : 전반적 Agile 방법론에 대한 책
- SoftwareCraftsmanship (Pete McBreen) : 새로운 프로그래머상
- Agile Software Development with SCRUM(Schwaber Ken) : 최근 Scalability를 위해 XP+SCRUM의 시도가 agile 쪽의 큰 화두임.
- TestDrivenDevelopmentByExample (Kent Beck) : 곧(아마 올해 내에) 출간 예정인 최초의 TDD 서적. TDD를 모르면 XP도 모르는 것. (TDD를 실제 적용하려면 적어도 반년 정도는 계속 훈련해야 함)
- IEEE Software/Computer, CACM, SoftwareDevelopmentMagazine 등에 실린 기사
- XP Conference, XP Universe 등의 논문들 (특히 최근 것들)
- 유즈넷, 메일링 리스트, OriginalWiki의 논의들
- http://groups.yahoo.com/group/extremeprogramming
- http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap
- news:comp.software.extreme-programming
- http://groups.yahoo.com/group/testdrivendevelopment
- http://groups.yahoo.com/group/refactoring
- http://groups.yahoo.com/group/emergentdesign
- http://groups.yahoo.com/group/agile-testing
- news:comp.object
- http://groups.yahoo.com/group/extremeprogramming
- XP mailing list
- XP news group
- OriginalWiki
- KentBeck
- RonJeffries
- WardCunningham
- Alistair Cockburn
- Martin Fowler
- Robert C. Martin (aka Uncle Bob)
- Michael Feathers
- Ken Auer
- William Wake
- Roy Miller
- Dave Thomas
- Andy Hunt
- Ralph Johnson
- Scott Ambler
- Jim Highsmith
- Joshua Kerievsky
- Laurent Bossavit
- John Brewer
어찌되었건, XP에는 무술이나 춤, 혹은 악기 연주 등과 유사한 면이 많습니다. 따라서, 글을 보고 그것을 익히기는 쉽지 않습니다. 그나마 메일링 리스트 같은 "대화"를 보면 훨씬 더 많은 것을 얻을 수 있기는 하지만, 태권도 정권 찌르기를 말로 설명해 내는 것이 불가능에 가깝듯이 XP를 언어를 통해 익히기는 정말 어렵습니다. 우리의 언어는 너무도 성글은 미디어입니다. (XP는 매 초, 매 순간 벌어지는 "일상적" 장면 장면의 연속들이 매우 중요합니다.)
기회가 되신다면 주변에서 XP를 직접 사용하는 곳을 방문해서 하루만 같이 생활해 보시기를 권합니다. 반년 공부를 앞당겨 줄 수 있습니다.
이게 힘들면 같이 스터디를 하는 방법이 있습니다(스터디 그룹에 관한 패턴 KH도 참고하시길. http://www.industriallogic.com/papers/khdraft.pdf). 이 때 같이 책을 공부하거나 하는 것은 시간 낭비가 많습니다. 차라리 공부는 미리 다 해오고 만나서 토론을 하거나 아니면 직접 실험을 해보는 것이 훨씬 좋습니다 -- 두사람 당 한대의 컴퓨터와 커대란 화이트 보드를 옆에 두고 말이죠. 제 경우 스터디 팀과 함께 저녁 시간마다 가상 XP 프로젝트를 많이 진행했고, 짤막짤막하게 프로그래밍 세션도 많이 가졌습니다.
나중에 회사에서 직접 XP를 사용할 때 많은 도움이 되었습니다.
--김창준