ETC/IT 이야기

개발 방법론 - 페어 프로그래밍

코딩의성지 2023. 2. 18. 02:17

 

기존에 대기업을 다니다가 스타트업으로 이직을 했다. 개발 문화나 제품을 만들어 내는 프로세스 등 모든 것이 기존과 달랐다. 스타트업이라 배울 점도 많았고 부족한 점도 많았다. 그 중에서도 내가 재직 중인 스타트업 팀에서 사용하는 개발 방법론을 소개해보도록 하겠다.

 

페어 프로그래밍

 

나는 현재 현 회사의 백엔드 개발 업무를 맡고 있다. 프로젝트를 할때 코틀린 기반으로 진행하기로 모든 팀원들과 협의를 했는데, 나는 자바나 C# 의 경험만 있어서 과연 내가 잘 할 수 있을까하는 고민이 많았다. 그러다 빠르게 구현해야할 서비스 하나가 있었는데 혼자 진행하기에는 무리다는 판단을 했고, 약 2년정도 연차가 높으신 옆에 계신 동료에게 도움을 요청했다. 그 분께서는 본인이 조금 여유가 있으니 이번에 진행할 프로젝트는 페어프로그래밍으로 해보자고 제안해주셨다.

 

이전부터 이론적인 얘기만 들어왔던 그 방법론을 실제로 써본다고 생각하니 조금 설레기도 하고 긴장되기도 하였다. 오늘은 페어 프로그래밍을 하면서 필자가 느낀 여러가지 장단점을 정리해 보겠다.

 

간단하게 페어프로그래밍의 방식을 설명드리자면 개발환경이 갖춰진 한대의 pc에서 두명의 개발자가함께하는 작업을 의미한다. 키보드를 잡고 있는 사람을 드라이버, 옆에서 다양한 방향을 제시하고 의견을 내는 사람을 네비게이터라 하고, 이 역할을 시간에 맞춰 번갈아 수행한다. 팀 동료분과 약 30분씩 번갈아가면서 페어프로그래밍을 진행했고 괜찮은 결과를 만들어 내고 있다.

 

장점

 

페어프로그래밍을 쓰면서 내가 느낀 여러가지 장점이 있다. 

 

첫번째 '업무 몰입'이 가능하다. 직장인을 대상으로 하루동안 평균적으로 몰입하는 시간을 조사해보니 겨우 1~3시간 가량이라고 한다. 그만큼 직장인의 업무 몰입은 어렵다. 하지만 페어프로그래밍을 하면 다른 얘기가 된다. 서로 끊임없이 대화를 주고 받고, 토론하고, 개발에 몰두하니 자연스럽게 업무에 집중하게 된다. 실제로 요즘 페어프로그래밍을 하고 집에 가면 바로 잠들정도로 피곤하다. 그만큼 집중을 많이하게 된다. 

 

두번째  '동반 성장' 이다. 함께 작업하는 분과 나는 확실하게 경험해본 경험이 달랐다. 나는 이전의 회사에서 프론트 쪽도 어느정도 경험이 있었지만 코틀린으로 구현하는 백엔드 경험이 없었고, 동료분은 코틀린 경험은 풍부하지만 프론트 쪽을 다뤄본 적은 없으셨다. 프로젝트 내에 프론트와 백엔드를 둘 다 해야할 부분이 있다보니 우리는 서로 잘 알고 있는 기술을 계속 공유했고 서로가 몰랐던 부분에 대해 많은 배움을 얻을 수 있게 되었다. 너무 큰 실력차만 나지 않는다면 페어프로그래밍은 서로의 기술을 배우며 동반성장할 수 있는 좋은 기회가 된다.

 

세번째  '빠른 문제 해결' 이다. 개발을 하다 보면 다양한 부분에서 에러가 발생하고 이슈가 생겨난다. 하지만 혼자가 아니라 같이 고민하게 되니 자연스럽게 문제해결은 빨라진다. 또한 실시간으로 코드리뷰를 하니 작은 실수로 인해 생길 수 있는 결함을 미리 예방하여 코드 퀄리티를 높일 수 있다. 또한 실제 장애 상황이 발생해도 해당 코드를 아는 사람이 2명이상이니 빠르게 문제가 해결 될 수 있다.

 

네번째 '동료를 정확하게 이해' 할 수 있다. 실제로 같이 프로그래밍을 하다보니 동료분의 성격이 어떤지, 어떤 코딩 스타일을 가지고 있는지, 동료의 장단점은 무엇인지 등 동료에 대한 이해를 높일 수 있는 시간이었다. 동료분도 마찬가지 였을 것이다. 이렇게 작업을 통해 서로를 이해하는 과정은 앞으로의 팀워크에 좋은 영향을 줄 것이라고 생각한다.

 

단점

 

페어프로그래밍도 만능은 아니다.

 

일단 생산성이 그리 좋지 않다. 혼자 해야할 일을 어찌보면 2명이 하다보니 생산성은 반으로 줄어든다. 업무는 몰입하게 되지만 생산성은 반으로 떨어진다니 참 아이러니 하다.

 

두번째는 감정을 소모할 수 있다. 나의 케이스는 아니지만 페어프로그래밍을 경험해본 다양한 사람들의 얘기를 들어보면 마음이 맞지 않거나 코딩 스타일이 완전히 다른 사람과의 페어프로그래밍은 큰 스트레스로 다가온다는 것이다. 또한 경험차이가 너무 많은 시니어 - 주니어 개발자가 함께 페어프로그래밍을 하면 (실제로 다양한 기업에서 주니어 온보딩 목적으로 시니어에게 페어프로그래밍을 시키기도 한다.) 시니어는 마치 주니어가 옆에 없는 것처럼 혼자서 뚝딱뚝딱 코드를 작성하고, 주니어는 코드를 이해하지 못한채로 멀뚱멀뚱 쳐다만 보고 있을 수도 있다. 

 

세번째는 체력 소비이다. 페어프로그램을 온종일 하다보면 굉장히 피곤하다. 그냥 친구들과 웃고 떠드는 것도 피곤한데 하루종일 업무관련 이야기를 한다고 생각해봐라. 얼마나 피곤한 일인가. 만약 여러분이 페어프로그래밍을 할 기회가 생긴다면 체력을 아끼기 위해 적절한 휴식을 꼭 병행하길 바란다.

 

반응형