Posts Tagged: XP


5
Apr 08

모니터 2개, 키보드 2개

갑자기 전화를 받고 뒷 자리에 앉아 있는 원일이형이랑 회의에 들어갔다.(원일이형은 입사는 늦지만 나보다 연배가 높아 형이라고 편하게 부른다)

회의에서는 두 부장님과 몇 명이 있었는데 우리가 들어서니 다들 씨익~ 웃는다.

들어보니 먼저 회의를 나가신 랩장이 어떤 성능 측정 관련 업무를 지시했는데 그걸 하루만에 결과를 달라고 한 것이다. 원래는 옆 부서에서 해야 하는데 그 부서가 너무 바빠서 결국 그 업무가 우리쪽으로 넘어온 것이다. 실은 원일이형이 그쪽 일을 잘 알기도 하고.

암튼 얼떨결에 아침 10시가 넘은 시간에 업무를 할당받았아. 하루만에 결과를 내야 하는.

잘 모르긴 하지만 작성해야 할 코드의 내용이 대략적으로 어떻게 돌아야 하는 지는 알고 있는 터라 크게 걱정은 되지 않았아. 오히려 그동안 하던 일과 다른 일이라 재밌을 거라는 생각도 들었다.

암튼 등을 대고 앉아있는 덕에 XP에서 말하는 Pair programming을 한 번 실습해 보기로 했다. 우선 원일이형이랑 위책임과 해야 할 일을 이야기해가서 작성할 프로그램의 대략적인 구조나 동작을 이해했다.(나에게만 새로운 내용이라^^)

그 다음 원일이형이 Header file에 structure를 정리하고, 나는 동작 흐름에 따른 함수 prototype을 작성했다.

대개 하나의 모듈을 여러 사람이 작성하는 경우에는 서로 업무를 나누어 하지만 이번에는 XP를 도입해봐야겠다는 생각이 들어 내 해피해킹 키보드를 뽑아서 원일이형 책상으로 갔다. 원일이형 역시 해패해킹을 사용하고 있어 졸지에 책상위에 해피해킹 키보드가 2개나 놓여졌다(라이트 하나 프로 하나). 워낙 작은 키보드라 두 개를 놔도 전혀 문제가 없다. 그리고 모니터는 원래 듀얼 모니터.

암튼 XP에서 정의하고 있는 5분 단위로 키보드와 마우스를 넘기는 것은 아니고 20분 정도를 주기로 했다. 정확히 20분이 되면 넘기는 것도 아니고 결론적으로 그렇게 된 듯하다. 대신 한 명이 코딩하는 동안 옆에서 다른 사람은 계속해서 코드를 보고 같이 토론을 하면서 타이핑 실수나 알고리즘의 오류를 지적해 주었다.

결과적으로 저녁 7시 경에는 원하는 결과를 보여주는 코드가 완성되었다. 다만 아쉽게도 결과가 보여주는 내용을 객관적으로 설명하기가 쉽지 않을 듯해서(논리적으로는 설명이 가능하지만 다른 사람이 보았을 때 쉽게 수궁하는 전개가 아니라) 일단 그 날 하루만에 보고하는 것은 접기로 했다. 나중에 알았지만 출장 나가있는 상무님이 원하는 것이 아니라 랩장이 필요한 정보라는 것이었고, 당장 당일 필요한 내용도 아니었다고 한다. 그리고 또 다른 이유도 있고.

그 다음 날은 일단 결과를 리포트로 정리하여 보내고, 다시 여러 관련자와 함께 결과물에 대해 리뷰를 진행하여 부족한 점을 보완하였다. 이 과정에서 또 다른 3명이 코드 리뷰를 진행했고, 코드에는 큰 문제가 없음을 확인받았다.

결국 이틀에 걸쳐 2명이 설계/코딩하고, 3명이 코드 리뷰를 추가로 하고, 그 외 여러 명이 결과물에 대해서 리뷰를 진행한 이틀짜리 프로젝트가 성공적으로(?) 완성되었다. 개인적으로는 나름 형식을 갖춘 Pair Programming을 처음 해 본 재밌는 경험이었다. 덕분에 이번 주도 “보람찬” 한 주라는 느낌이 들었다 :-)


16
Feb 08

실천 Pair Programming

특별한 것은 아니고 회사에서 일하는 인도친구들이 expect를 사용해서 개발 서버에서 여러 호스트를 거쳐 타켓 보드에 이미지를 보내는 것을 보고 부러워하다 Python의 pexpect를 알게되어 비슷한 동작을 하는 프로그램을 만들었다.

파일을 보내는 것은 아니고(요건 따로 만들어 놓고) 로그인만 하도록 만들어 놨었는데 어떤 기능을 추가하다가 기존 동작도 안하도록 수정을 해버렸다.

고쳐야지 하면서 생각만 하다가 피일차일 미루고만 있었는데 알라딘 아저씨가 비슷한 이야기를 하면서 프로그램이 있냐고 하길로 제약 사항을 알려주고 소스 코드를 넘겨줬다.

그러더니 뚝딱 뚝닥 하더니 버그를 고쳐왔다.(코드가 워낙 간단해서 특별히 이해하는데 어려움은 없었고, 다만 실행 환경에 따라 다를 수 있는 부분에 대한 처리가 필요했다)

잘 동작한다. 와서 고친 부분을 설명해 줘서 듣고 나니 아이디어가 생각났다. 같이 이야기하면서 바로 고쳤다. 다시 소스 동기화.

알라딘 아저씨 자리에 가더니 아이디어가 생각이 났는 지 뭔가를 또 고쳤단다. 쓸만한 기능이 추가되었다. 그러면서 이런 이런 기능이 있으면 좋겠다고 한다.

마침 해당 기능을 쉽게 구현하는 코드를 본적이 있어 바로 방법을 이야기 하고 뚝딱 뚝딱 해서 코드를 고쳤다.

XP(Extreme Programming)에서 말하는 Pair Programming은 아니지만 같은 블럭을(기능을) 함께 고민하고, 함께 코딩하는 경험은 색달랐다. 서로가 가지고 있는 아이디어를 내놓고, 최적의 구현 방법을 논의하다 보니 코딩도 재밌지만 빠른 시간내에 쓸만한 프로그램을 만들 수 있었다.

이것이 진정한 Pair Programming의 장점이 아닐까?