익스트림 프로그래밍이란

2014년 초, 런던, Skillsmatter HQ에서 스크럼 마스터 트레이닝 “- XP를 하시나요? 안하나요? 그럼 스크럼이 당신을 도와줄 수 없을 거에요. 일단 먼저 XP를 배우세요.”

  • AGAINST eXtreme Programming 책
  • 아무도 eXtreme Programming을 하지 않습니다. 그 누구도 XP를 들어본적이 없구요.그런데 이 가장 중요한거에요. (무슨 말이지…)

왜 중요한걸까?

1. 지속되는 지식

2. 방법론이다

  • values
  • principles
  • practices

  • XP에 모든 아이디어들은 새로운게 아니다.
    • 모든 개념들은 오랜 시간에 걸쳐 증명된 것들이다.

그럼 왜 eXtreme일까?

XP는 되게 심플한 이론들을 익스트림?한 정도로 실행한다. 

왜 익스트림 프로그래밍이라고 부르는 것일까? 왜 XP가 중요한걸까? 흥미로운 점은 익스트림프로그래밍은 상식적인 개념들을 엄청나게 격하게? 실천으로 옮긴다.

Code Review?

Pair-programming

이게 무슨 말일까? 쉽게 생각해보자. 다들 잘 알고 있는 코드리뷰! 어떻게 하면 익스트림한걸까? 코드리뷰는 일단 좋은거죠. 버그 찾는걸 도와주고, 더 나은 코드가 되도록 도와주죠.

그럼 어떻게 하면 익스트림하게 코드리뷰를 할 수 있을까요? 코드를 작성하는 중에 코드리뷰를 하는건 어때요? 익스트림한가요? 코드 구현이 끝난 뒤에서 하는게 아니라 동시에 하는거에요.

그래서 익스트림 프로그래밍에 보면 Pair-Programming이란게 나와요. Pair-Programming은 코드 리뷰를 또 하나의 다른 눈과 머리?로 우리의 모든 코드를 실시간으로 확인하는거에요.

Testing?

Test / Behaviour Driven Development
Acceptance Test Driven Development
Even the customer

테스트도 최근에 나온게 아니죠. 원래 하는거잖아요. 많은 곳에서 Test Driven Development는 하고 있어요. 근데 익스트림 프로그래밍 프로젝트에서는 Test Driven Development, Behaviour Driven Development, Acceptance Test Driven Development를 다 합치는 거에요. 그리고 심지어 고객도 개발자가 테스트할때 같이 있는거에요. 고객이 테스트 시나리오도 작성하고 매니징까지 하는거에요. 이것들을 전부 다 하면 좀 익스트림하죠?

Design?

모두가 계속해서 리팩토링을 합니다.

이번엔 설계도 생각해볼까요? 설계도 익스트림할 수 있어요. 모두가 계속적으로 리팩토링을 하면요. 이렇게 하시는 분 있나요? 이건 좀 심한건 아닌가?

Simplicity?

항상 제일 간단한 것부터 하고 다음으로 넘어가라. 

Simplicity(간단함)? 이건 또 뭘까요. 익스트림하게 말하자면 항상 문제에서 가능한 가장 단순한 것부터 골라서 처리하고 다음으로 넘어가는거에요. 지금 하려는거 외에는 더 복잡하게 다른걸하면 안되요.

Architecture? (작업중) 6:30

모두가 지속적으로 정의하고 개선하라.

가령, 뛰어난 아키텍트가 있어서 그 사람들이 전부 지시해서 개발이 이루어졌고, 개발의 전반적인 내용을 아는건 그 사람들 밖에 없어요.
그런데 모두가 아키텍트가 되어 지속적으로 ….

Integration?

지속적인 통합과 테스트를 하라.

Iterations?

매일, 매시간, 매분, 매초로 이루어지게 하라.