[코드스테이츠 Day 1] Pair Programming 페어 프로그래밍

Strawberry Oolong Tea·2021년 8월 23일
0

TODAY I LEARNED

목록 보기
4/51
post-thumbnail

🤝 페어 프로그래밍이란?

페어 프로그래밍(짝 코딩)은 말 그대로 페어(짝)과 함께 프로그래밍하는 것을 말한다. 페어 프로그래밍을 통해 커뮤니케이션 능력을 향상시키고 협업하는 방법을 익힐 수 있다.

✍️ 애자일 방법론 유형

페어 프로그래밍은 애자일 방법론 유형 중의 하나라고도 할 수 있다.

XP(Extreme Programming)의 5가지 가치

  • 용기 Courage : 용기를 가지고 자신감 있게 개발
    • 코드를 작성하기 전에 테스트,
    • 빠르게 피드백,
    • 테스트에 부합하지 못하는 코드를 리팩토링할 수 있는 용기
  • 단순성 Simplicity : 필요한 것만 하고 그 이상의 것들은 하지 않음
  • 의사소통 Communication : 개발자, 관리자, 고객 간의 원활한 소통
  • 피드백 Feedback : 의사소통에 대한 빠른 피드백
  • 존중 Respect : 팀원 간의 상호 존중

XP(Extreme Programming)의 12가지 기본 원리

  • 짝 프로그래밍 Pair Programming
  • 공동 코드 소유 Collective Ownership
  • 지속적인 통합 CI; Continuous Integration
  • 계획 세우기 Planning Process
  • 작은 릴리즈 Small Release
  • 메타포어 Metaphor
  • 간단한 디자인 Simple Design
  • 테스트 기반 개발 TDD; Test Driven Develop
  • 리팩토링 Refactoring
  • 40시간 작업 40-Hour Work
  • 고객 상주 On Site Customer
  • 코드 표준 Coding Standard

✍️ 네비게이터와 드라이버

네비게이터와 드라이버가 팀을 이룬다. 네비게이터는 전체적인 방향을 제시하고 드라이버는 화면을 공유하며 직접 코드를 작성한다.
문제마다 또는 일정 시간마다 역할을 번갈아가며 네비게이터와 드라이버 모두 수행해본다.

네비게이터는?

  • 숲을 보는 역할
  • 문제를 해결하기 위한 전체적인 방향을 제시
  • 질문 위주의 제안으로 드라이버가 스스로 해답을 찾을 수 있도록 도와주는 역할
  • 하지만 오타나 Syntax 에러 등의 경우는 바로 바로 피드백

드라이버는?

  • 나무를 보는 역할
  • 네비게이터와 함께 문제를 해결할 수 있는 방향을 고민
  • 네비게이터가 제안하는 방향에 따라 구체적인 방법을 생각해 보고 코드로 작성
  • 작성하는 코드에 대해 설명할 수 있어야 한다.
  • 네비게이터의 의견에 동의하지 않더라도 커뮤니케이션을 통해 합의점을 찾을 수 있도록 충분히 소통한다.

💎 좋은 페어 프로그래밍이란?

💯 아이스 브레이킹

어색한 분위기를 아이스 브레이킹으로 환기시키는 것도 방법이다.

💯 협업해서 문제 해결하기

네비게이터는 전체적인 흐름을 파악하고 드라이버는 네비게이터의 의견에 무조건 따르는 것이 아닌, 같이 논의하며 코드를 작성해 나간다.

💣 나쁜 페어 프로그래밍이란?

🚫 결정의 순간에 협의없이 진행

네비게이터는 드라이버가 코드를 작성하는 역할이라고 해서 무작정 드라이버에게 일방적으로 지시하는 것은 좋지 않다. 네비게이터가 파악한 방향성에 대해서 제시하고 이에 대해 어떻게 하면 좋을 지 의논해야 한다.

🚫 드라이버의 의견을 묻지 않음

드라이버가 잠자코 있다고 해서 네비게이터가 의견을 전혀 묻지 않는 것도 좋지 않다. 찬성을 하든 반대를 하든 적극적인 소통 필요하다.

🚫 페어의 주장을 존중하지 않음

각자 주어진 역할에 충실하기 위해서는 소통이 필수이다. 서로의 주장을 존중하고 충돌이 있더라도 합의와 논의를 거쳐 최대한 완만하게 해결해보자. 내가 더 많이 안다고 해서 혹은 모른다고 해서 그에 따른 주장이 무조건 옳거나 옳지 못한 것은 아니다.

profile
Der Vogel kämpft sich aus dem Ei 🥚🐣 목표를 위해 끊임없이 자신의 세계를 깨뜨릴 수 있는 용감한 개발자가 되고 싶습니다.

0개의 댓글