💡 핵심 인사이트
XP(익스트림 프로그래밍)는 켄트 벡이 창안한 애자일 방법론 중 하나로, 스크럼이 '팀 관리 프로세스'에 집중한다면, XP는 "실제 코딩(개발)을 어떻게 하면 가장 완벽하고 극한(eXtreme)으로 잘할 수 있을까?"에 대한 12가지 실천적이고 기술적인 개발 관행을 제시합니다.
TDD(테스트 주도 개발), 짝 프로그래밍, 지속적 통합(CI) 같은 현대 개발 문화의 근간이 모두 XP에서 나왔습니다.
Ⅰ. XP의 5가지 핵심 가치
XP는 팀이 가져야 할 5가지 심리적/문화적 뼈대를 강조합니다. (용/단/의/피/존)
- 용기 (Courage): 코드를 전면적으로 뜯어고칠(리팩토링) 수 있는 용기, 요구사항 변경을 두려워하지 않고 받아들이는 용기.
- 단순성 (Simplicity): 미래를 대비한답시고 복잡한 범용 아키텍처를 짜지 말고, "지금 당장 필요한 가장 단순한 코드"만 짠다 (YAGNI - You Aren't Gonna Need It).
- 의사소통 (Communication): 문서나 이메일이 아닌 코드로, 그리고 개발자와 고객 간의 직접적인 구두 소통을 최우선으로 한다.
- 피드백 (Feedback): 소프트웨어를 1~2주 단위로 초고속 배포하여 시스템과 고객으로부터 끊임없이 피드백을 받는다.
- 존중 (Respect): 팀원 간의 상호 존중 없이는 짝 프로그래밍이나 코드 리뷰가 불가능하다.
Ⅱ. XP의 12가지 실천 관행 (Best Practices)
개발자들이 숨 쉬듯 지켜야 할 극한의 개발 방식입니다. (시험과 실무의 핵심 교리)
개발 (Coding) 관행
- 짝 프로그래밍 (Pair Programming): 두 명이 하나의 PC 모니터를 보며, 한 명은 키보드를 치고 한 명은 옆에서 훈수(검토)를 두는 방식. 실시간 코드 리뷰 효과로 버그가 박살 납니다.
- 공동 코드 소유 (Collective Code Ownership): "이 모듈은 내가 짰으니 건들지 마!"는 없습니다. 팀원 누구나 언제든 시스템의 어떤 코드든 수정할 권한과 책임을 가집니다.
- 계속적인 통합 (Continuous Integration, CI): 하루에 몇 번이고 코드를 짜자마자 중앙 서버에 올려서(Merge) 충돌이 나는지 즉시 컴파일하고 테스트합니다.
설계 (Design) 관행
- 테스트 주도 개발 (TDD, Test-Driven Development): 코드를 짜기 전에, "이 코드가 통과해야 할 테스트 코드"부터 먼저 작성하고, 그 테스트를 통과할 만큼의 실제 코드만 딱 짜는 미친듯한 역발상 기법입니다.
- 리팩토링 (Refactoring): 프로그램의 기능(결과)은 1도 바꾸지 않으면서, 내부 코드의 구조와 로직만 깔끔하고 예쁘게 정리하여 냄새나는 코드(기술 부채)를 치웁니다.
- 단순한 설계 (Simple Design): 가장 멍청해 보일 정도로 심플하게 짭니다.
기획 및 팀 관행
- 계획 게임 (Planning Game): 스크럼의 플래닝 포커처럼 다 같이 모여 작업의 크기를 추정합니다.
- 소규모 릴리스 (Small Releases): 1년이 아니라 2주마다 실제로 동작하는 새 버전을 런칭합니다.
- 메타포 (Metaphor): 고객과 개발자가 똑같은 의미로 알아들을 수 있는 쉬운 비유(표준 단어 사전)를 씁니다.
- 현장 고객 (On-site Customer): 진짜 고객을 아예 개발팀 사무실에 데려다 앉혀놓고 수시로 질문하며 개발합니다.
- 40시간 근무 (Sustainable Pace): 야근은 금지됩니다. 지친 개발자는 버그 양산기일 뿐입니다.
- 코딩 표준 (Coding Standard): 변수명 짓는 법, 띄어쓰기 룰을 완벽히 통일하여 누가 짠 코드든 한 사람이 짠 것처럼 만듭니다.
📢 섹션 요약 비유: 스크럼이 부대장(PO)과 분대장(SM)이 모여 **어느 고지를 며칠 만에 점령할지 작전을 짜는 '지휘소 전술'**이라면, XP는 빗발치는 총알 속에서 병사들이 직접 **총을 쏘고(TDD), 두 명이 짝지어 엄호하며(Pair), 참호를 빠르고 단순하게 파는(Simplicity) '진흙탕 속의 극한(eXtreme) 생존 백병전 기술'**입니다.