애자일 방법론중 XP(extreme programming)이라는 것이 있습니다.
XP의 실무 관행 중 하나로 일명 짝 프로그래밍이라고도 불립니다.
기본적인 원칙은 한명이 코드를 작성하고 다른 한명이 실시간으로 리뷰를 하는 방식을 의미합니다.
그리고 역할은 주기적으로 교체하며 진행이 됩니다.
짝을 이루어 작업을 진행하며 각자의 작업을 점검하며 더 좋은 작업을 하도록 서로 서포팅해주는 작업입니다.
페어는 실제로 동일한 장소에서 함께 개발을 진행합니다.
방식
- 기본적으로 드라이버와 네비게이터로 나누어집니다.
- 모니터는 한개로 키보드와 마우스는 두개를 이용합니다.
드라이버는 네비게이터의 조언을 귀담아듣고 코드를 작성하며 네비게이터는 코드를 지속적으로 관찰하며 방향을 잡습니다.
장점
- 페어 프로그래밍은 공동 소유권과 공동 책임을 지는 구조입니다.
- 코드의 모든 라인을 최소한 2명이 살펴보기 때문에 오류를 발견할 확률이 더욱 높아집니다.
- 두사람이 작업을 진행하므로 긴장도가 올라가 능률이 향상합니다.
단점
- 생산성이 저하가 된다. 특히 관리자 입자아에서는 한명이 하는 일을 둘이 함께 하는 것 때문에 생산성이 줄어든다고 생각할 수 있다. 연구 결과에 따르면 15%의 생산성이 저하가되고 15%의 결함이 줄었다고 한다.
미래를 위한 투자라고 생각을 해야 한다.
- 실제 페어 프로그래밍에서는 시니어와 주니어가 같이 하는 경우가 많다.
드라이버와 네비게이터의 역할을 번갈아가면서 작업을 진행해야 하지만 시니어가 키보드를 지배하며 작업을 하는 생기는 것을 항상 조심해야 한다.
- 근무시간 내내 페어를 하며 계속해서 집중을 하게 된다면 혼자 하는것보다 배의 에너지를 소모하게 된다.
- 서로 피드백을 주어야 하는 상황이다. 여기에서 필연적으로 발생할 수 밖에 없는 일은 감정 소모이다.
피드백을 주다보면 계속해서 주의하지 않는다면 상대방에게 상처를 주는 말을 할 수 있고 이는 생산성 저하로 이어질것이다.
!주의!
- 시니어는 타이핑을 하기 보다는 주니어에게 어떤 일을 진행해야하는지 토론하는 방식을 채용하자.
- 문제가 발생한다면 어떻게 해결하는지, 어떤 방식으로 해결하는것이 좋을지를 이야기 해주자.
- 휴식을 주기적으로 취해주자.