티스토리 뷰

Daylogs/Etc

핑퐁 프로그래밍

ohgyun 2013. 1. 29. 11:31


발생일: 2013.01.29

문제:
프로그래머의 길, 멘토에게 묻다

지난 주말, 오랜만에 교보 문고로 데이트를 하러 갔다가,
제목이 눈에 띄어 집어온(물론 돈 주고ㅎㅎ) 책이다.

소프트웨어 개발을 중세 시대의 '장인' 개념에서 접근하고,
견습 프로그래머에게 숙련 프로그래머로 넘어갈 수 있는 가이드를 알려주는 책이었다.
(읽고 나서, 좀 더 큰 그림을 보게 되고, 반성도 하게 됐다. 한편, 마음도 편해졌고.)

여튼, 책 내용 중에, '핑퐁 프로그래밍'에 대한 이야기가 살짝 나온다.
꽤 흥미로운 개념이라 메모해두려고 한다.


해결책:

핑퐁 프로그래밍 (Ping Pong Programming, P3)

짝 프로그래밍(Pair Programming)과 TDD(Test-Driven Development)를 조합한 기법으로,
팀 내에서 지식 공유의 용도로 사용하기에 적합하다.

A와 B가 짝 프로그래밍을 진행한다고 가정하면,
아래와 같은 방식으로 핑퐁 프로그래밍을 할 수 있다.

  1. A가 실패하는 새 테스트를 만들고, 키보드를 B에게 넘긴다. [ping]
  2. B가 테스트를 통과하도록 코드를 작성한다.
  3. B가 실패하는 새 테스트를 만들고, 키보드를 A에게 넘긴다. [pong]
  4. A가 테스트를 통과하도록 코드를 작성한다.

(경우에 따라, A는 테스트만 짜고 B는 구현만 하는 방법도 가능하다)


나는 거의 대부분 초심자들과만 짝 프로그래밍을 해봤는데,
매끈하게 진행됐던 적은 그리 많지 않았다.

주로, 한 사람이 키보드를 너무 오래 잡고 있게 된다던가,
언어에 익숙하지 않은 다른 짝이 잘 따라오지 못해 흥미를 잃어버리곤 해서,
결국은 일방적으로 가르치는 상황이 오는 때가 많았던 것 같다.

짝 프로그래밍이 익숙하지 않은 게 가장 큰 이유였겠지만,
대부분은 위와 같은 상황으로 인해 쉽게 지쳐버렸던 것 같다.


핑퐁 프로그래밍의 장점은,
피드백 주기가 짧아서 두 프로그래머가 지속적으로 집중할 수 있는 것이라 한다.


파트너가 TDD에 대해 좋은 감정을 가지고 있어야 한다는 것과,
환경적으로 짝 프로그래밍을 권장 내지는 허용하는 환경이 되어야 하겠지만...

여튼, 굉장히 흥미로운 기법이고,
다음에 기회가 되면 꼭 한 번 시도해보고 싶다. :)


# 참고
  데이브 후버가 핑퐁 프로그래밍의 경험에 대해 포스팅한 글

  짝 프로그래밍의 핑퐁 패턴

반응형
댓글
공지사항