ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 페어 프로그래밍
    개발지식 2022. 2. 23. 16:38

    페어 프로그래밍이란?

    대화를 통해 서로의 생각을 공유하는 방법이며, 현업에서 적용하지 않는 곳이 많은데 그 이유는 효과가 즉시 나타나지 않으며, 한대의 컴퓨터에 두 명의 개발자가 함께 하는 것이 말처럼 간단하지 않아서 많은 개발자들이 불편함을 느낀다.

     

    이러한 이유가 있지만 경험을 해본 개발자들의 입장에서는 팀워크와 고품질 소프트웨어 개발에 많은 도움이 된다고 생각하는 개발자들도 있다. 간단하게 페어링이라 부르며, 코드를 함께 작성하는 것이 아니라 작업에 대한 계획을 세우고 아이디어를 명확히 하여 접근방식에 대햇 논의해서 더 나은 해결책을 제시하게 된다. 이러한 과정으로 페어 프로그래밍은 많은 의사소통과 협업이 필요하다.

     

    페어 프로그래밍 방식

    Driver Navigator

    Driver는 키보드를 소유하고 있는 사람으로 현재의 목표를 완수하는데 집중하고, Driver는 Navigator가 흥미를 잃지 않게 계속해서 자신이 하고 있는 일에 대해 이야기를 해야한다.

     

    Navigator는 Driver가 코드를 작성하는 동안에 관찰자의 입장으로서 코드를 검토하며 지식을 전달하는 역할을 한다. Navigator는 코드의 세부사항을 Driver에게 맡기고 Driver보다 더 넓은 관점으로 설계, 구조에 대한 문제와 버그를 파악하는데 집중을 한다.

     

    Navigator는 Driver의 흐름을 방해하지 않도록 목표가 끝난 뒤 아이디어나 잠재 위험요소에 대해서 토론을 한다. Driver는 좀 더 기술적인 것과 세부사항 등을 정리하고, Navigator는 관찰자 입장에서 설계, 구조적인 부분과 큰 그림을 생각해야 한다. 

    시간관리

    뽀모도로기법은 페어 프로그래밍을 더 쉽게 할 수 있도록 도와주는 도구들 중 하나이다. 뽀모도로기법은 일을 짧은 시간 단위로 분배하면서 관리도 하고, 시간당 효율을 높이는 시간관리 방법이다. 이 기법은 거의 대부분의 페어링 방식에 적용될 수 있으며 계속해서 집중을 할 수 있도록 도와준다.

     

    뽀모도로 기법 사용 방법 예시

    1. 작업 결정
    2. Driver와 Navigator의 역할 선정
    3. 타이머를 합의된 적정시간으로 설정 (보통 25분)
    4. 외부의 방해 없이 1에서의 정의된 작업을 수행하며 각자의 역할을 수행
    5. 타이머가 울리면 작업을 일시 중지
    6. 짧은 휴식(5-10분) 후 Navigator와 Driver를 교대하여 다시 시작
      • 이 때 휴식을 하는데 사용을 하고, 다른 작업에 시간을 사용하지 않아야 한다.
    7. 3-4번 반복 후 15-30분 정도의 긴 휴식시간을 갖는다.

    Ping Pong Pairing

    이 방식은 Driver가 테스트 초안을 작성하며 Navigator에게 이를 구현하도록 요청하고 키보드 소유권을 넘겨 Driver와 Navigator를 교대하는 방식이다.

     

    새로운 Driver가 된 기존의 Navigator는 테스트를 성공하도록 구현 후 현재의 Navigator가 구현할 테스트 초안을 작성한다. 이 흐름은 TDD 방식으로 명확하게 정의된 작업이 있을 때 완벽하게 동작을 한다.

     

    Ping Pong Pairing

    1. Ping - 개발자1은 실패하는 테스트 코드를 작성한다.
    2. Pong - 개발자2는 테스트 코드를 성공하도록 구현한다.
    3. Ping - 개발자2는 다음 Pong을 위해서 실패하는 테스트 코드를 작성한다.
    4. Pong - 개발자1은 이전 Ping에서 작성된 실패하는 테스트 코드를 성공하도록 구현한다.
    5. Ping - 개발자1은 다음 Pong을 위해서 실패하는 테스트 코드를 작성한다.
    6. Ping과 Pong을 반복한다.

    이 방식은 매번 Pong 과정에서 실패하는 테스트 코드 작성 전에 함께 코드 리팩토링을 진행한다. 이 과정은 TDD의 Red-Green-Refactor를 따르는 것이다.

    Strong-Style Pairing

    이 방식의 기본 아이디어는 머릿속에서 컴퓨터로 아이디어를 전달하려면 반드시 다른 사람의 손을 거쳐야 한다는 것이다. 지식 전달에 특히 유용한 방식은 Driver는 Navigator가 지시하지 않은 어떤 작업도 수행하지 않는 방식이기 때문에 Navigator는 작업에 대해 훨씬 많은 경험을 갖고 있고 Driver는 언어나 도구에 대한 초심자일 때 유용하다.

     

    이 방식의 핵심은 Driver가 Navigator를 전적으로 신뢰하고 불완전한 이해 상태를 편안하게 생각해야 한다는 것이다. 또한 구현 중 발생한 이유에 대한 질문은 목표 구현 후 논의되어야 한다.

     

    이 방식은 마이크로 매니징에 가깝지만 수동적으로 보는 것을 통한 학습이 아닌 능동적인 수행을 통한 학습으로 초기 지식 전달을 위한 온보딩 도구가 될 수 있다. 하지만 지나치게 이용되면 안되고, 나중에는 역할을 전활할 수 있어야 하며, 마이크로 매니징을 벗어나는게 목표라는 것을 인지해야한다.

    페어 프로그래밍 주의점

    • 산만함
      • 페어링을 할 때는 메일을 확인하거나 전화를 사용하는 것을 지양한다.
      • 정말로 무언가를 확인해야 한다면 파트너에게 양해를 구하고 무엇을 하고 있는지와 왜 그런지 투명하게 밝힌다.
    • 마이크로 매니징 모드
      • 파트너가 생각할 여지를 남겨두지 않고, 지시를 계속한다면 그것은 파트너에게 좌절감을 주는 경험이다.
    • 조바심
      • 페어링을 진행하는 동안 5초 규칙을 적용한다.
      • Navigator가 Driver에게 잘못된 행동 혹은 코드를 보고 얘기를 하려할 때 5초 정도 텀을 두고 얘기를 한다.
    • 키보드 독점
      • 이 행동은 파트너와 페어링 과정에서 적극적인 참여를 방해하며 집중하는데 어려움을 겪을 수 있다.

    출처: https://idea-sketch.tistory.com/70

Designed by Tistory.