← 블로그 목록

익스트림 프로그래밍은 과격한 방법이 아니라 변화를 버티기 위한 공학 습관이다

익스트림 프로그래밍은 이름과 달리 사람을 몰아붙이는 문화가 아니라, 테스트·리팩터링·작은 릴리스·지속 가능한 속도를 엮어 변화 비용을 낮추려는 공학 습관의 묶음이다. ‘Extreme’의 의미도 중요한 실천을 끝까지 밀어 보자는 태도에 가깝다. XP는 빨리 만드는 법이 아니라 바뀌어도 계속 만들 수 있는 법을 묻는다는 점을 정리한다.

익스트림 프로그래밍은 과격한 방법이 아니라 변화를 버티기 위한 공학 습관이다

익스트림 프로그래밍은 과격한 방법이 아니라 변화를 버티기 위한 공학 습관이다

익스트림 프로그래밍(XP)은 켄트 벡이 정리한 애자일 개발 프레임워크다. 이름만 들으면 무언가 극단적이고 빡빡한 규율처럼 느껴지지만, 실제 핵심은 반대에 가깝다. 자주 바뀌는 요구사항 속에서도 코드를 무너지지 않게 유지하려면 어떤 습관이 필요한가를 묶어 둔 방법에 더 가깝다.

Agile Alliance는 XP를 고품질 소프트웨어개발팀의 더 나은 삶의 질을 함께 목표로 삼는 프레임워크라고 설명한다. 이 정의가 중요하다. XP는 단순히 빨리 만들자는 방법이 아니라, 바뀌는 요구를 감당할 수 있을 만큼 코드를 건강하게 유지하자는 방법이기 때문이다.

XP의 핵심은 개별 기법보다 연결된 습관에 있다

XP를 말할 때 흔히 테스트, 페어 프로그래밍, 작은 릴리스만 따로 떼어 이야기한다. 하지만 XP가 오래 언급되는 이유는 각 실천이 서로를 보강하기 때문이다.

예를 들어 테스트가 있으면 리팩터링이 쉬워지고, 작은 릴리스가 가능해지면 피드백이 빨라지고, 피드백이 빨라지면 설계를 과하게 예측할 필요가 줄어든다. 그래서 XP는 기법 모음집이라기보다 변화를 버티기 위한 연결 구조에 가깝다.

이름의 ‘Extreme’은 과장이 아니라 기본 원칙을 끝까지 밀어 보는 태도에 가깝다

XP의 이름이 붙은 이유도 이와 맞닿아 있다. Agile Alliance는 이름의 의미를, 몇 가지 중요한 공학 실천을 아주 꾸준하게 밀어붙이는 데서 찾는다. 원칙 자체가 기괴해서가 아니라, 중요하다고 생각하는 실천을 실제 현장에서 끝까지 해 보자는 의미에 가깝다.

그래서 XP를 이해하는 더 나은 질문은 “왜 이렇게 과격하지?”보다 “우리가 중요하다고 말하는 습관을 실제로 얼마나 끝까지 하고 있지?”에 가깝다.

XP가 지금도 유효한 이유는 변화 비용을 낮추기 때문이다

XP가 특히 잘 맞는 환경은 요구사항이 자주 바뀌고, 새로운 기술을 쓰며, 팀 규모가 크지 않은 프로젝트다. Agile Alliance도 동적으로 바뀌는 요구와 고정된 일정, 자동화 테스트가 가능한 환경을 XP가 잘 맞는 조건으로 든다.

이 점은 지금도 크게 달라지지 않았다. 오히려 서비스와 게임, SaaS, 내부 도구처럼 “출시 후 수정”이 기본이 된 환경에서는 더 잘 맞는 면도 있다.

XP의 강점은 예측 정확도를 높이는 데 있지 않다. 예측이 틀렸을 때 다시 움직일 수 있게 만드는 데 있다.

실무에서 특히 오래 남는 XP 요소는 네 가지다

오늘 기준으로 봐도 XP에서 가장 실용적인 요소는 꽤 분명하다.

첫째, 테스트. 바뀌는 요구를 받아들이려면 기존 동작을 빨리 검증할 안전망이 필요하다.

둘째, 리팩터링. 바뀐 요구를 억지로 덧대기만 하면 결국 속도가 죽는다.

셋째, 작은 릴리스. 짧은 주기로 보여 주지 않으면 피드백은 늘 늦게 온다.

넷째, 지속 가능한 속도. 예전 표현으로는 40시간 주가 있었고, 지금은 흔히 지속 가능한 페이스라고 부른다. 오래 가는 팀이 결국 더 빠르다는 생각이다.

XP는 개발자를 고통스럽게 몰아붙이는 문화와 반대편에 있다

이 점은 오해가 많다. 이름 때문에 XP를 “늘 바짝 조이는 문화”처럼 읽는 경우가 있지만, 실제로는 반대다. 품질을 나중으로 미루고, 야근으로 속도를 메우고, 테스트 없이 밀어붙이는 방식이야말로 장기적으로는 가장 비효율적이다.

XP는 오히려 팀이 계속 일할 수 있는 속도를 지키고, 코드를 자주 정리하고, 고객 피드백을 빨리 받고, 위험을 일찍 드러내려는 방법이다. 즉 과격함의 방향이 사람에게 가는 것이 아니라 미루지 않는 공학 습관에 가 있다.

핵심 정리

익스트림 프로그래밍은 이름과 달리 과격한 개발 방법이 아니다. 테스트, 리팩터링, 작은 릴리스, 피드백, 지속 가능한 속도 같은 공학 습관을 엮어서 변화 비용을 낮추려는 프레임워크에 가깝다.

지금도 XP가 유효한 이유는 단순하다. 요구는 계속 바뀌는데, 코드를 바꿀 수 없는 팀은 결국 느려지기 때문이다. XP는 빨리 만드는 법보다, 바뀌어도 계속 만들 수 있는 법을 묻는다.

참고 자료

← 목록으로
Related

함께 읽으면 좋은 글

프로그래밍테스트테스트 주도 개발
테스트 주도 개발은 테스트를 나중에 붙이는 습관이 아니라 설계 순서를 바꾸는 방식이다

테스트 주도 개발은 테스트를 나중에 붙이는 습관이 아니라, 실패하는 테스트부터 써서 설계 순서 자체를 바꾸는 방식이다. 레드-그린-리팩터링의 짧은 피드백 주기에서 핵심은 테스트 개수가 아니라 설계와 검증 사이의 왕복 거리이며, 마지막 단계의 리팩터링이 빠지면 TDD는 반쪽만 남는다. 진짜 가치는 커버리지 숫자보다 더 분명한 경계선과 안전한 변경 능력에 있다.

소프트웨어 개발 과정분석설계
소프트웨어는 분석-설계-구현-테스트를 한 번만 도는 것이 아니라 계속 되감기며 만들어진다

소프트웨어 개발은 분석-설계-구현-테스트가 한 번 직선으로 끝나는 공정이 아니다. 작은 단위를 반복하며 스코프를 줄이고 피드백을 되감는 순환 구조로 보는 편이 실제에 가깝다.

Python코루틴Stackless Python
Stackless Python은 파이썬에 경량 태스크릿과 채널을 더한 구현이다

Stackless Python은 코루틴이 들어간 파이썬이라는 짧은 설명만으로는 부족하다. 태스크릿, 채널, 스케줄러를 통해 매우 가벼운 실행 단위를 다루는 별도 구현이며, PEP 342와 PEP 492가 정착시킨 오늘날의 `async`/`await`와는 다른 계보로 동시성을 메시지 전달과 작은 실행 주체의 협력으로 보게 만드는 관점을 보여 준다는 점을 정리한다.