Game Dev/Article

짝 프로그래밍의 장단점

AKer 2009. 8. 4. 23:44
반응형
대부분의 회사에서 작업을 배분할 때 작업과 프로그래머의 비율을 1:1로 정하고 있습니다. 가장 쉬운 예로, 해야할 작업이 2가지이고 프로그래머가 2명일 경우 프로그래머 각각 하나의 작업을 수행합니다. 

물론 작업의 양과 프로그래머의 능력에 따라 이 비율은 N:1, 1:N, N:M 등이 될 수도 있겠지만, 프로그래머들은 (그 습성상 그리고 경영진의 압박으로) 개인적으로 작업을 진행합니다. 설령 매우 큰 하나의 작업을 여럿이서 진행한다 할지라도 독립적인 모듈로 나누어 작업한 후 통합합니다. 

Pair Programming 흔히 말하는 짝 프로그래밍은 위와 같이 개인적으로 작업을 진행한 후 통합하는 방식이 아니라 2인 이상의 프로그래머가 한 조가 되어 같은 작업을 진행하는 방식을 말합니다. (물론 짝 프로그래밍에서도 완성된 결과물의 통합은 필요합니다.)

약 3-4년의 경력 기간 동안 "두명이 같은 자리에서 작업을 한다면 한 명은 놀고 있다"는 편견, 혹은 "잡담을 할 수 있다"는 편견이 경영진 분들에게 자리잡고 있었기 때문에 짝 프로그래밍을 직접 해 볼 기회는 없었습니다. 디버깅할 때 잠깐씩 해보긴 했군요. 

개인 작업이 나쁘다는 말은 아닙니다만, 키보드를 치는 사람만 코딩을 하고 작업을 한다는 생각은 짝 프로그래밍이 생소하고 이점을 너무 모르기 때문에 생기는 잘못된 인식이 아닌가 생각합니다. 따라서 짧은 기간이나마 짝 프로그래밍을 하면서 느낀바를 기술해보도록 하겠습니다. (참고로 현재 프로젝트에서는 모든 작업을 짝 프로그래밍으로 진행하고 있습니다.)



장점

1. 팀워크 향상 

짝으로 맺어진(?) 2인의 프로그래머는 업무 기간동안 서로 같은 일을 하기 때문에 개인적으로 쉽게 친해질 수 있습니다. 이는 중장기 프로젝트를 진행할 경우 팀원 이탈이나 분쟁을 막아주는 좋은 방패 역할을 하며, 팀의 분위기에도 좋은 영향을 줍니다.

2. 오류 최소화

최소 2명이 작업을 한다는 것은 어떠한 소스 코드의 수정 등에 2명 이상의 동의가 필요하다는 뜻 입니다. 물론 이것은 2명의 짝이 최소한 작업에 대해서는 동등한 권한을 가져야 한다는 전제가 깔려있습니다. 혼자서 작업을 할 경우 자기 자신도 모르는 코드가 짜여질 때가 많은데 짝 프로그래밍을 하면 자기 뿐만 아니라 자신의 짝도 이해할 수 있는 코드를 작성해야 하기 때문에, 심플하고 나중에 오류가 발생해도 고치기 쉬운 결과물이 작성이 됩니다. 

3. 자연스러운 기술 이전 

2명의 프로그래머는 같이 작업을 하면서 서로가 몰랐던 점들을 배우며 알려줍니다. 상대에게 무엇을 설명해 주면서 자신이 알고 있던 것도 새롭게 환기될 수 있으며, 이 과정을 통해 구지 인수인계 등을 의도하지 않더라도 자연스럽게 기술이 이전됩니다. 

4. 기술의 평준화 

이는 자연스러운 기술 이전과도 일맥상통하는 내용으로 하나의 작업을 최소 2명 이상 진행하였으므로 그 작업에 대해 알고 있는 사람이 여럿 존재합니다. 개인적인 작업만 진행했을 경우 핵심 모듈을 작성한 사람의 부재시 그 모듈을 바로 이해하고 수정하는 것은 불가능에 가깝습니다. 하지만 짝 프로그래밍을 오래 진행한 그룹은 이러한 걱정이 필요가 없 많이 줄어들 수 있습니다.

5. 업무에 집중 

프로그래밍 Pair는 동료이기도 하지만 역설적으로 한명의 감시자가 될 수도 있습니다. 여러분이 업무에 집중하지 않고 인터넷 서핑을 할 때는 주로 언제인가요? 남들이 여러분의 컴퓨터를 주시할 때 입니까? 아니면 주변에 감시하는 사람이 아무도 없을 때 입니까? 저 같은 경우 메신져를 통해 대화가 걸려와도 사적인 내용이 유출(?)될 까봐 짝 프로그래밍 중일 경우 보기가 꺼려지더군요.



단점

1. 주도권에 따른 방관

사람인 이상 2명의 프로그래머 사이의 실력차는 분명 존재합니다. 이 경우 당연히 업무에 대해 더 잘 아는 사람이 업무 주도권을 쥐게 되고 반대의 사람은 방관할 위험이 있습니다. 이를 방지하기 위해서는 주기적으로 업무나 짝을 변경하거나, 같은 짝 내에서도 직접 타이핑 하는 사람을 하는 사람을 바꾸도록 합니다.

2. 개인적 시도의 어려움

혼자 작업을 할 경우 다른 사람의 동의를 구할 필요가 없기 때문에 어떠한 생각이 나면 바로 실행해 볼 수 있습니다. 하지만 짝 프로그래밍을 할 경우 상대의 동의를 구해야 하는 작업이 있기 때문에 이러한 개인적 시도를 바로하기에 어려움이 있을 수 있습니다.

3. 막연한 효율 기대

2명이 같은 작업을 하기 때문에 명목적으로 개발을 진행하는 시간이 최소 2배 이상은 될 것이라는 기대를 할 수 있습니다. 하지만 산모가 10명이라고 아이를 한달만에 낳을 수 없듯이, 사람 수에 따른 급격한 코드 작성시간 단축은 없습니다. 다만, 더 안전하고 견고한 코드가 작성되므로 디버깅과 유지보수를 고려한 전체 개발 시간은 줄어들 것 입니다.

4. 실행의 어려움

3번의 예에서 든 것이나 위에서 밝힌 것처럼 많은 편견이 존재하기 때문에 짝 프로그래밍을 시도한다는 것 자체가 큰 어려움이 될 수 있습니다. 하지만 설득하십시오!


반응형