페어 프로그래밍(Pair Programing)

bareum park·2021년 10월 5일
16

페어 프로그래밍이란?

페어 프로그래밍이란 애자일 소프트웨어 개발 중 하나로 하나의 컴퓨터에서 두 사람의 프로그래머가 작업하는 방법이다. 동료 프로그래밍, 쌍 프로그래밍, 짝 프로그래밍이라고도 한다. 네비게이터(navigator)가 전략을 제시하고 드라이버(driver)가 실제 코드를 작성하며, 이 열할을 각자 번갈아가며 수행한다.

네비게이터(navigator)

문제 해결 방법을 논리적으로 생각하고, 그 과정을 상대에게 말로 설명하는 역할이다. 이때 코드를 직접 말하거나 키보드를 잡아서는 안된다. 이 역할의 핵심은 '어떤 식으로 문제를 해결할 수 있는지 명확히 설명하는 것'이다. 네비게이터는 드라이버가 코드를 작성하는 동안 관찰자의 입장으로 코드를 검토하고 지식을 전달하며 생각을 공유한다. 코드의 세부사항은 드라이버에게 맡기고, 드라이버보다 넒은 관점으로 설계, 구조에 대한 문제와 버그를 파악하는데 집중한다.

드라이버(driver)

드라이버는 키보드를 소유하고 있는 사람으로, 네비게이터가 설명한 논리적 방식대로 실제 코드를 작성하는 역할을 한다. 드라이버는 네비게이터와 논의 할 수 있도록 작성하는 모든 코드에 대해 말로 설명해가며 작업을 진행한다. 또한 드라이버는 네비게이터의 질문과 의견에 적극적으로 응해야 한다. 네비게이터의 가이드를 이해하려고 노력하며 현재의 목표를 완수하는데 집중해야 한다.

역할을 둘로 나누는 이유는 각 역할에 따라 코드에 대해 서로 다른 두 관점을 가지게 하기 위함이다. 드라이버는 기술적인 것과 세부사항 등을 생각하고, 네비게이터는 관찰자 입장에서 설계, 구조적인 부분과 큰 그림을 생각해야 한다. 상황에 맞춰 키보드의 소유권을 교대하면서 이와 함께 역할도 교대한다.

페어 프로그래밍 장점

1. 지식 공유

서로 가지고 있는 지식이 다르기 때문에, 서로의 지식을 공유하고 새로운 방식을 배워가며 문제를 해결해 나갈 수 있다. 기술적인 스킬 뿐만 아니라 페어가 가지고 있는 좋은 습관도 배울 수 있는 기회가 된다. 팀에 새로운 멤버가 합류 할 경우, 페어 프로그래밍을 통해 팀의 개발 스타일, 환경 등을 공유 할 수 있다.

2. 목표에 집중

페어 프로그래밍을 할 때는 각자 자신이 어떤 생각으로 작업을 하고 있는지를 분명히 전달해야하기 때문에 목표에 집중 할 수 있다. 또한, 페어와 함께 개발을 하고 있기 때문에 메신저를 보거나 핸드폰을 보는 등 불필요하게 사용하던 개인적인 시간을 최소화하고 개발에 집중 할 수 있다.

3. 실시간 코드 리뷰

페어링을 하게 되면 작업 중에 크고 작은 오류를 잡아낼 수 있다. 페어와 함께 작업하기 때문에 문제 접근 방식이나 변수명을 정할 때 논의하며 진행 할 수 있어 코드 개선이 수월하다. 페어가 서로 질문하며 더 나은 해결책을 찾아 갈 수 있다.

4. 두가지 사고방식 연습

드라이버는 작은 목표를 해결하는데 집중하고, 상세한 코드를 생각한다. 네비게이터는 더 넓은 시야를 설계, 구조에 대한 문제와 버그를 파악하는데 집중한다. 정기적으로 드라이버와 네비게이터의 역할을 전환하면서 두가지 사고방식을 연습할 수 있다.

페어 프로그래밍시 유의 할 점

1. 산만하지 않기

페어 프로그래밍을 하는 동안에는 메신저를 확인 한다던가 휴대전화 사용을 자제해야 한다. 이러한 행동은 페어가 무례하게 느낄수도 있고, 집중력을 흐트러트릴 수 있다. 집중력을 잃었을 경우, 네비게이터와 드라이버가 협의하여 충분한 휴식시간을 가진 후 진행하는 것이 좋다.

2. 마이크로 매니징 모드는 금물

페어가 생각할 여지를 남겨두지 않고 지시를 계속한다면 그것은 페어에게 좌절감을 주는 경험이 될 수 있다. "지금 변수 a를 선언하세요", "console.log를 찍어보세요"와 같이 코드 한줄 한줄 읊어주거나 지시하지 않아야한다. 드라이버가 네이게이터의 가이드 안에서 스스로 생각하여 코드를 작성 할 수 있도록 해야 한다.

3. 조바심 내지 말자

페어 프로그래밍을 진행하는 동안 5초 규칙을 적용해보자. 네비게이터가 잘못된 행동이나 코드를 보고 얘기 하려고 할 때는 적어도 5초 동안 기다린다. 드라이버가 이미 알고 있는 상황이라면 오히려 네비게이터가 드라이버의 흐름을 방해 할 수 있다. 네비게이터는 오류가 있다고 판단되면 약간의 텀을 두고 기다렸다가 말하는 것이 좋다.

4. 키보드 정복자가 되지 말자

페어 프로그래밍은 드라이버와 네비게이터가 역할을 바꿔가며 진행해야 하는 개발 방식이다. 한명이 생산성이 떨어진다고 판단되거나, 답답함을 참지 못하여 키보드를 독점하게 되면 함께하는 페어는 타이핑 하는 것을 두려워 하게 된다. 결국 이는 두명이 함께 개발하는 페어 프로그래밍이 아니라 한명이 개발하는 것에 그치게 된다.

"페어 프로그래밍에서 가장 중요한 것은 서로에 대한 존중과 이해다."

VScode에서 페어 프로그래밍 하는 방법

  1. Extenstions에서 'Liveshare'를 검색하여 설치한다.
  1. 다음과 같이 설치가 된 것을 확인 할 수 있다.

  2. 사용하기 위해서는 로그인을 해야 한다. 하단의 Live Share 버튼을 클릭하면 로그인 하라는 메시지가 뜨고, github 아이디로 로그인 가능하다. 게스트로 로그인 할 경우, 읽기 전용으로만 프로젝트에 참여 할 수 있다.

  3. 공유하고자 하는 프로젝트를 열고, 다시 하단의 버튼을 클릭하면 초대 링크를 복사 할 수 있다.

  4. 공유 받은 사용자도 VScode에서 1-4번과 같은 과정을 거쳐서 로그인 한 후, 공유받은 링크를 클릭하면 공유 작업이 가능하다.

'Liveshare'에서 제공하는 대표 기능

  1. 코드를 동시에 편집 할 수 있다.
  2. 웹 프로그래밍 시 편집된 내용을 내 PC에서 url로 접속하여 확인 가능하다.
  3. 채딩, 음성통화 등 커뮤니케이션 툴을 제공한다.

위와 같은 기능을 제공하기 때문에 Liveshare를 활용하면 같은 공간이 아니어도 패어프로그래밍이 가능하다. 공간의 제약을 넘어 페어프로그래밍 할 수 있기때문에 유용하게 사용 가능 한 툴이다.


참조
위키백과 : 페어 프로그래밍
https://martinfowler.com/articles/on-pair-programming.html
https://medium.com/@weblab_tech/pair-programming-guide-a76ca43ff389

0개의 댓글