Featured image of post [Pair Programming] 페어 프로그래밍 안티 패턴들

[Pair Programming] 페어 프로그래밍 안티 패턴들

페어 프로그래밍은 애자일 개발 방법론 중의 하나로 하나의 개발 가능한 PC 에서 두 명의 개발자가 함께 작업하는 것을 말합니다. 네비게이터(navigator)가 전략을 제시하고 드라이버(driver)가 실제 코드를 작성하며, 이 열할을 각자 번갈아가며 수행합니다.

네비게이터

  • 오류들을 너무 빨리 체크하는 것
    • 드라이버가 문법에러와 오타를 수정 할 시간을 주기
    • 너무 작은 에러를 계속 지적하는건 흐름을 끊고, 페어가 타인의 시선을 의식하게 됨
    • 당신의 임무는 틀린 단어를 바로 지적하는게 아니라 큰 그림을 고려하는 것
  • 로우레벨한 지시 하기
    • 운전자에게 제안할 사항이 있으면, 운전자가 이해할 수 있는 가장 높은 수준의 추상화로 전달할 것
    • 코드를 불러주는 것 같다면(심하면 각 키입력까지), 잠깐 멈추고 더 상위 레벨에서 얘기할 수 있는지 볼 것
    • 그게 실패하면 아이디어 스케치를 위해 잠시 drive 해달라고 요청할 것
  • 자신의 키보드를 사용하지 않는 것
    • 모든 페어링 세션에 자신의 키보드 가져와서 시작 전에 꼽기
    • 이러면 서로 역할 변경이 쉽고, 말 대신 보여주는게 가능
    • 자기 마우스가 있는 것도 좋지만, 필수는 아님

드라이버

  • 너무 빨리 드라이빙 하는 것
    • 에디터에 아주 능숙한 경우, 숙련된 네비게이터 조차 따라가기 힘들만큼 빨라지기 쉬움
    • 페어가 따라오고 있다는 확신이 없다면, 당신의 최고 속도로 코드를 조작하지 말 것
    • 하는 일을 입으로 얘기하면서 하면 좋음
  • 체크아웃된 네비게이터를 허용하는 것
    • 너무 빨리 하거나, 이해하지 못하는 일을 하면 내비게이터의 주의를 잃기 쉬움
    • 페어의 주의가 흐트러지고 있다면 멈추고 동기화 할 것
    • 나쁜 질문 : “이거 이해하는거 맞죠?”
    • 좋은 질문 : “어떤 부분이 팔로잉하기 어렵나요?”
    • 페어링은 지속적인 쌍방 커뮤니케이션이 이뤄져야 함. 당신이나 당신의 네비게이터가 조용하다면, 멈추고 체크인하게 만들기
  • 동등하지 않은 스크린 접근
    • 모니터가 두 사람 사이에 있게 하고, 둘 다 똑같이 보이는지 확인할 것(폰트를 키우는 것도 고려)
    • 한 사람이 옆으로 치우치면, 잠재의식 속 불평등 계층이 만들어짐
    • 페어는 하나의 단위임. 둘 중 누구도 더 중요하지 않음
  • 휴식하지 않는 것
    • 페어링은 소모하는 것. 일반적인 프로그래밍 보다 훨씬 더
    • 적절한 휴식을 취하는 좋은 방법은 뽀모도로 테크닉을 사용하는 것
    • 시작하기 전에 선호하는 작업/휴식의 길이에 대해 동의해둘 것
  • 경청하지 않고 듣기
    • 듣는 것과 타이핑을 동시에 하는 것은 어려움
    • 네비게이터가 제안을 할 때는, 키보드에서 손을 뗄 것. 더 좋은 건 몸을 돌려서 아이 컨택 을 할 것

둘 다 에게

  • 비생산적인 산만함을 허용하는 것
    • 페어링 시작하기 전에 모든 알림을 끌 것(컴퓨터와 폰 모두)
    • 세션 동안에는 어떤 알림/문자 메시지도 받으면 안됨. 혹시 놓쳐서 받게 되면, 사과하고 그 다음에는 안 울리게 할 것
    • 다른 모니터에 이메일 열어두기 않기
    • (페어링 안할 때도 이렇게 해야함. 생산성을 증대시키는 가장 빠른 방법은 인터럽트를 줄이는 것)
  • 역할을 바꾸지 않는 것
    • 드라이빙과 네비게이션은은 서로 다른 이유로 소모됨
    • 역할을 바꾸면 뇌의 피곤한 부분을 쉬게 하고, 쉬던 부분을 활성화 할 수 있음
    • 드라이버를 교체하는 것은 페어링 세션에 활력을 불어넣을 수 있는 좋은 방법. 전환해야할 때 마다 알려주도록 타이머 설정해 두기
  • 기술이라는 것을 잊어버리는 것
    • 페어프로그래밍은 배워야 하는 “기술” 임
    • 처음엔 잘 하기 힘들지만, 꾸준히 연습하면 향상 될 것
    • 어려운 첫 경험후에 포기하지 말기. 숙련된 개발자라고 좋은 파트너일거라고 단정하지 말기. 연습없이 잘 되기를 기대하지 말기
    • 각 세션후에 페어와 함께 피드백하고 반영하기. 어떻게 하면 더 잘할 수 있었을까 ?
Licensed under CC BY-SA 4.0