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 등의 아이디어가 여기서 왔다. 이 중에서 XPI나 XPX를 먼저 권합니다. XPE는 좀 추상적인 서술이 많아서 봐도 느낌이 별로 없을 수 있습니다. (작년 마소 11월호에 제가 쓴 리뷰 참고) 여유가 되면 다음의 자료를 더 참고합니다. * XP in Practice (Robert C. Martin et al) : 두 세 사람이 짧은 기간 동안 간단한 프로젝트를 XP로 진행한 것을 기록. Java 사용. (중요한 문헌은 아님) * XP Examined (논문 모음집) : XP 컨퍼런스에 발표된 논문 모음 * Peopleware (Tom De''''''Marco) : 개발에 있어 인간 중심적 시각의 고전 * 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 [http://www.controlchaos.com/ SCRUM](Schwaber Ken) : 최근 Scalability를 위해 XP+[http://www.controlchaos.com/ 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 * [http://groups.google.co.kr/groups?hl=ko&lr=&ie=UTF-8&newwindow=1&group=comp.software.extreme-programming 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 * [http://groups.google.co.kr/groups?dq=&num=25&hl=ko&lr=&ie=UTF-8&newwindow=1&group=comp.object&start=0 news:comp.object] 특히 다음의 것들은 늘 가까이 하고 있어야 합니다. * 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 KentBeck 스스로가 XP Explained를 만약 다시 쓴다면 뜯어 고치고 싶은 부분이 상당히 된다고 말하는 것을 보아도 알 수 있듯이, 초기 XP 이후 바뀐 점, 보완된 점이 상당수 있습니다. 따라서, 책만으로 XP를 공부하기는 힘듭니다. 지금은 책 속의 XP가 사람들의 머리 속 XP에 한참 뒤쳐져 있습니다. 어찌되었건, XP에는 무술이나 춤, 혹은 악기 연주 등과 유사한 면이 많습니다. 따라서, 글을 보고 그것을 익히기는 쉽지 않습니다. 그나마 메일링 리스트 같은 "대화"를 보면 훨씬 더 많은 것을 얻을 수 있기는 하지만, 태권도 정권 찌르기를 말로 설명해 내는 것이 불가능에 가깝듯이 XP를 언어를 통해 익히기는 정말 어렵습니다. 우리의 언어는 너무도 성글은 미디어입니다. (XP는 매 초, 매 순간 벌어지는 "일상적" 장면 장면의 연속들이 매우 중요합니다.) 기회가 되신다면 주변에서 XP를 직접 사용하는 곳을 방문해서 하루만 같이 생활해 보시기를 권합니다. 반년 공부를 앞당겨 줄 수 있습니다. 이게 힘들면 같이 스터디를 하는 방법이 있습니다(스터디 그룹에 관한 패턴 KH도 참고하시길. http://www.industriallogic.com/papers/khdraft.pdf). 이 때 같이 책을 공부하거나 하는 것은 시간 낭비가 많습니다. 차라리 공부는 미리 다 해오고 만나서 토론을 하거나 아니면 직접 실험을 해보는 것이 훨씬 좋습니다 -- 두사람 당 한대의 컴퓨터와 커대란 화이트 보드를 옆에 두고 말이죠. 제 경우 스터디 팀과 함께 저녁 시간마다 가상 XP 프로젝트를 많이 진행했고, 짤막짤막하게 프로그래밍 세션도 많이 가졌습니다. 나중에 회사에서 직접 XP를 사용할 때 많은 도움이 되었습니다. --김창준 ---- === 2002년 이후의 근간 소개 === '''Agile Software Development with [http://www.controlchaos.com/ SCRUM]''' by Schwaber Ken '''Agile Modeling''' by Scott W. Ambler '''Agile Software Development Ecosystems''' by Jim Highsmith '''A Practical Guide to eXtreme Programming''' by David Astels et al. '''Extreme Programming in Action''' by Martin Lippert et al. ''all reviews coming soon by JuNe'' ---- ["학습방법분류"]