Search
💻

페어 프로그래밍/ 페어 워크로 똑똑하게 성장하기

페어 프로그래밍

협업의 가장 기본적인 단위는 2명입니다. 그래서 2명이 함께하는 페어 프로그래밍을 적극적으로 해본다면 훌륭한 협업 경험을 해볼 수 있습니다. 페어 프로그래밍은 2명이 함께 1개의 컴퓨터로 개발해나가는 과정입니다. 얼핏 들으면 굉장히 비효율적일것 같지만, 페어 프로그래밍은 많은 논문에서도 검증한 많은 장점을 가진 협력적인 프로그래밍 방식입니다. 페어 프로그래밍을 하면 아래와 같은 장점들이 있습니다.

3-1. 시간 감소

‘둘이 하면 더 오래 걸리지 않을까?’라는 예상과는 다르게 짝 프로그래밍을 하면 실제로는 하나의 앱을 만드는데 소요되는 시간이 감소합니다. 시간이 감소하는 이유는 ‘버그 감소'와 ‘통합 시간 단축’ 덕분입니다. 하나의 앱을 만드는데 있어서 항상 고려해야하는 것은 버그를 수정하는 시간입니다. 사실 서비스를 운영하다보면 앱 자체를 개발하는 시간보다 버그를 수정하고 리팩터링 하는 시간이 더 많이 들기도 합니다. 그런데 이런 버그와 결함을 개발하는 단계에서 2명이 함께하면, 한 사람이 보지 못하는 것을 다른 사람이 함께 봐줄 수 있어서 결함이 절반 이상 줄어들 수 있습니다. 그리고 처음부터 함께 개발을 하다보니 각자 개발하고 통합하는 것보다 시간이 훨씬 줄어들 수 있습니다.

3-2. 팀원의 전문성 전이

팀원별로 각자 잘하는 부분이 개발 안에서도 나뉠 수 있습니다. 이런 전문성을 효과적으로 배우는데 페어 프로그래밍은 굉장히 효과적입니다. 보통 페어 프로그래밍과 같은 과정이 없다면 잘하는 사람이 다 작성하고 난 마지막 결과물을 보고 “와 잘한다!”라고 생각할 수 있습니다. 그런데 진짜 중요한건 그 ‘잘한다!’라는 감탄이 나오기 위한 ‘과정’입니다. 어떤 과정을 통해서 설계하고 코딩을 어떤 식으로 진행하며 디버깅은 어떤 도구를 활용하는지 변수명을 지을 때는 어떤 곳에서 힌트를 얻는지 등 효과적으로 개발하기 위한 방법들이 개발하는 동안 사소한 행동 패턴들에 녹아들어있습니다. 이런 노하우들은 결코 구현된 결과물인 코드만 가지고는 알기가 어렵습니다. 하지만 페어 프로그래밍을 하면 이런 과정을 실시간으로 서로 볼 수 있다보니 팀원 각자가 잘하는 전문성에 대해 자연스럽게 알고, 배울 수 있는 기회가 됩니다.

3-3. 빠르게 드러나는 갈등

보통 갈등이 없는게 좋다라고 생각하는 경우가 있는데, 다른 사람과 함께 일하면서 갈등이 없을수는 없습니다. 때문에 작은 단위로 갈등을 빠르게 드러내고, 그 갈등을 해소함으로써 신뢰를 쌓아가는 과정이 중요합니다. 페어 프로그래밍은 작은 단위에서부터 같이 협력하고, 서로 다른 생각을 공유하면서 각자의 스타일을 마주하다보니 자연스럽게 작은 갈등이 드러날 수 밖에 없습니다. 하지만 ‘작은’ 갈등이기 때문에 서로 더 마음의 여유를 가지고 그걸 해소해나갈 수 있습니다. 팀워크가 와장창 무너지는 팀의 특징 중 하나는 이런 작은 갈등일 때 해소하지 못하고 마음속에 묻혀두었다가 한번에 터지는 경우입니다. 그런데 페어 프로그래밍을 통해 서로 ‘이 사람이 뭘 좋아하고 뭘 싫어하는 구나’, ‘이런 부분에서 생각이 다를 수 있구나’를 계속 인지하다보면 서로가 어떻게 해야 더 호흡이 잘 맞을지도 자연스럽게 체득할수가 있는 것입니다. 그래서 신뢰를 쌓아가는 중요한 경험을 할 수 있습니다.

3-4. 페어 용기

같이 하기 때문에 어려운 문제를 해결할 수 있다는 ‘용기’가 생깁니다. 아무리 회사일이어도 시작하기에 막연하고 어려운 일에는 손이 잘 가지 않기 마련입니다. 하지만 페어 프로그래밍을 하면 어렵지만 이 막막함을 함께 분석하고 접근하기 위한 용기가 생깁니다. 이건 별거 아닌것 같으면서 매우 훌륭한 효과입니다. 이 막연함 때문에 문제를 해결하기 시작하는데까지 많은 에너지와 시간이 들기 때문입니다. 그래서 준과 슬의 경우도 항상 어려운 문제를 마주하면 그 문제에 대해 함께 이야기할 동료를 구하려고합니다. 물론 다른 동료가 어려울 때도 당연히 함께 해결하려고도 합니다. 서로 어려운 문제를 마주했을 때 그 막연함을 해결하기 위해 도움을 주면 상호간에 신뢰도 더 쌓이고, 각자 개인 수준에서는 해결할 수 없는 더 어려운 문제들을 함께 해결해나갈 수 있습니다. 그렇다면 시도해보지 않을 이유가 없겠죠?