"원격 페어 프로그래밍" 시작 전 당신이 알아야 할 모든 것

이진영

gina1404@codingworldnews.com | 2021-07-28 15:58:57

페어 프로그래밍(pair programming, 짝 코딩)은 소셜 프로그래밍의 한 형태로 한 개발자가 코드를 입력하는 동안 다른 개발자도 코드를 함께 입력하며 문제를 공동으로 해결하고 코드를 개발하는 방법이다. 두 명의 개발자가 한 컴퓨터로 코드를 작성하는 개발 방법으로 다른 사람의 기술과 경험을 공유하며 자신의 기술을 확장할 수 있는 장점이 있다. 개발자는 각자 한 부분을 맡고 정기적인 협력을 하며 서로 지식을 나누고 도메인에 깊숙이 파고들며 소프트웨어 솔루션의 효율성을 높일 수 있다.

페어 프로그래밍은 잘 활용하면 매우 강력한 도구가 될 수 있지만, 모든 프로젝트에 적합한 것은 아니다. 페어 프로그래밍을 적용하기 위해선 조직, 기술 컨텍스트, 변경 사항에 적응할 수 있는 충분한 시간이 필요하다. 또한 개발자의 성향에 따라 페어 프로그래밍에 대한 선호도가 다를 수 있다. 페어 프로그래밍은 유용한 도구로 사용되어야 하며, 적합하지 않다고 생각될 경우 강제로 사용하지 않아야 한다.

페어 프로그래밍 또는 원격 페어 프로그래밍은 팀 내에 좋은 커뮤니케이션이 필수적이다. 그리고 아래에서부터 시작되는 솔루션으로 수행하는 것이 가장 적합하다. 팀은 조직의 모든 지원을 해야 하고, 이는 많은 것을 의미할 수 있다. 사무실에서 페어 프로그래밍을 할 때에는 코드 베이스에 대한 모든 접근 권한과 보안 요구사항이 준비되어있다. 하지만 원격으로 페어 프로그래밍을 할 때는 더 많은 설정과 도구가 필요하다.

그렇다면 페어 프로그래밍, 특히 원격 페어 프로그래밍을 시작하고 싶다면 어떤 것을 확인해야 할까? 15년 이상의 중소기업 및 대기업 소프트웨어 개발 경험을 보유하고, 2021년 3월 "실용적인 원격 페어 프로그래밍(Practical Remote Pair Programming)"이라는 서적을 출판한 개발자 아드리안 볼보아체(Adrian Bolboacă)는 소프트웨어 개발 뉴스 및 트렌드 전문지 InfoQ를 통해 원격 페어 프로그래밍 시작 전에 확인해야 하는 사항과 사용 방법에 대해 소개했다.

원격 페어 프로그래밍을 시작하기 전 확인해야 하는 주요 질문은 아래와 같다.
- 원격 페어 프로그래밍을 사용해야 하는 이유는 무엇인가?
- 원격 페어 프로그래밍이 어떤 도움이 될 것인가?
- 우리에게 원격 페어 프로그래밍이 가진 장점은 무엇인가?
- 우리에게 원격 페어 프로그래밍이 가진 단점은 무엇인가?
- 충분히 분배되었는가? 사무실을 갖추었나? 여러 개의 사무실이 있는가?
- 원격 페어 프로그래밍이 비즈니스 목표를 달성하는 데 어떤 도움이 되는가?
- 페어링해야 하는 태스크 유형이 무엇인가?
- 페어링 세션은 얼마나 자주 해야하는가?
- 얼마나 자주 짝을 지어야 하는가?
- 어떤 도구를 사용하는가?

원격으로 페어 프로그래밍을 시작하기 전 주요 질문에 확인하고, 소규모 테스트 그룹에서 모의 실행 세션을 실행하면 좋다. 이를 통해 설정의 한계를 확인하고 적절한 도구를 선택했는지 이해할 수 있기 때문이다. 또한 테스트 후 팀 전체에 맞게 조정하고, 기술 설정에 대한 피드백을 받는 것이 중요하다.

그렇다면 페어 프로그래밍을 시작하는 목표는 무엇일까? 페어 프로그래밍을 시작하려는 이유는 여러 가지가 있을 수 있는데, 대표적으로 지식을 정리하거나 새로운 지식(새로운 비즈니스 영역, 새로운 도구, 방법)을 소개할 때, 기존의 제품, 프로젝트 또는 팀에 새로운 인력 또는 다른 팀을 추가할 때 페어 프로그래밍을 활용한다. 제품 또는 프로젝트를 시작하거나 결점을 최소화하고 개발 및 테스트, 배포 기간 최소화, 사용자 환경 개선, 팀 결속력 향상, 전문화 간의 사일로를 제거하기 위해서도 사용된다.

원격 페어 프로그래밍을 하기 위해선 도구가 필수적이다. 최소한 화면을 공유하는 응용 프로그래밍이나 원격 데스크톱을 통한 화면 공유가 필요하다. 원격 데스크톱의 페어링 지연이나 연결 끊김을 보완할 방법으로 코드 투게더(Code Together), 플로빗(Floobit), 유스 투게더(Use Together), 튜플(Tuple), 라이브 공유 기능을 갖춘 비주얼 스튜디오 등 보다 적합한 도구를 사용할 수 있다. 이러한 도구는 상황에 맞게 선택해야 한다.

이 밖에도 상황에 따라 소스 제어가 필요하다. 원격 페어 프로그래밍을 하는 동안의 소스 제어는 다른 용도를 가지고 있는데, 새로운 브랜치, 메인 브랜치, 짝의 로컬 브랜치, 당신의 로컬 지점 등이 여기에 해당한다. 특히 중요하거나 규제되는 제품을 개발하는 경우 보안이 유지되지 않는 도구를 통해 코드를 이동하거나 표시하지 않도록 주의해야 한다.

페어 프로그래밍의 주기는 목적과 팀의 성숙도에 따라 달라진다. 숙련된 프로그래머로 구성된 팀의 경우 하루에 몇 시간씩 페어 프로그래밍을 진행하는 것이 좋다. 숙련된 프로그래머와 중간급, 하위급 프로그래머가 섞여 있는 경우 비즈니스 영역에 대한 지식 수준을 높이고, 비즈니스 영역 및 코딩 기법에 대한 지식을 나누는 것에 집중한다. 경험이 적은 프로그래머와 페어 프로그래밍을 할 때는 다른 규칙이 필요하며, 논의를 통해 페어링 빈도를 결정해야 한다.

한편 페어 프로그래밍이 적합하지 않은 경우도 있다. 혼자서 프로그래밍을 잘하고 능률적인 독립적인 성향이 강한 프로그래머에게 페어 프로그래밍을 강요해서는 안 된다. 예를 들어 내성적인 사람, 어려운 분야의 깊이 있는 전문가, 다른 사람들과 협업에 익숙하지 않은 사람들은 짝을 지어 일하고 싶지 않아 할 수 있다. 페어 프로그래밍은 강요되어서는 안 되며 천천히 적용해야 한다

조직 전체의 협업을 강하게 압박하는 경우 (원격) 페어 프로그래밍은 작동하지 않을 수 있다. 평가를 위해 근로자는 각자의 업무에 대한 평가를 받아야 하는데, 조직에 따라 회계, 평가, 업무 관리를 작성해야 하는 경우가 많을 수 있다. 이러한 환경에서는 페어 프로그래밍이 작동하지 않는다.

강력한 사일로가 있는 조직의 경우, 좁은 전문화를 통해 페어 프로그래밍을 진행할 수 있지만, 다른 분야에 대해서는 작업할 수 없다. 예를 들어 자바 프로그래머와 자바스크립트 프로그래머를 짝을 지을 수 없다. 두 개의 사일로가 대립하고 있다면 어떤 작업을 담당할지, 청구 가능한 시간을 어떻게 기록할지에 대한 문제가 생기고, 조직 내부의 협업에 대한 강력한 압박이 있을 수 있다. 이러한 경우 페어 프로그래밍을 포함해 몹 프로그래밍, 코딩 도장과 같은 앙상블 프로그래밍이 동작하지 않는다.

따라서 페어 프로그래밍은 팀이 새로운 예제에 대한 새로운 아이디어, 개념, 움직임을 흡수할 시간과 에너지가 있을 때 시작하는 것이 좋다. 납품이나 개발 일정이 빡빡하거나 마감일 전에, 새로운 것을 배우거나 시도할 때 시작해서는 안 된다. 새로운 예제, 새로운 접근, 새로운 작업 방식을 한 번에 하나씩 구현해야 하며 그렇지 않을 경우 제대로 동작하지 않을 확률이 높다.

페어 프로그래밍은 작업이 어느 정도 이상 복잡할 때 의미가 있으며, 두 프로그래머가 함께 효율적으로 작업할 수 있다. 반면 간단한 작업이 많을 경우 페어 프로그래밍은 시간 낭비가 될 수 있다. 팀은 페어 프로그래밍을 통한 효율성을 높이기 위해 복잡한 작업에 대해서만 짝을 짓고 간단한 작업은 단독 프로그래밍을 하도록 분배해야 한다. 물론 학습이 초점이라면 주니어 프로그래머에게 페어 프로그래밍을 통해 간단한 작업을 수행하는 방법을 교육해야 한다.

페어 프로그래밍은 팀이 스스로 결정할 수 있는 능력이 있고, 새로운 도구나 관례를 발견할 수 있을 만큼 성숙한 환경에서 매우 유용하다. 또한, 이러한 환경에서도 팀은 페어 프로그래밍을 자유롭게 수락하거나 거부할 수 있는 선택권을 가져야 한다.

[ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]

WEEKLY HOT