🤝 페어 프로그래밍이란?
페어 프로그래밍(짝 코딩)은 말 그대로 페어(짝)과 함께 프로그래밍하는 것을 말한다. 페어 프로그래밍을 통해 커뮤니케이션 능력을 향상시키고 협업하는 방법을 익힐 수 있다.
✍️ 애자일 방법론 유형
페어 프로그래밍은 애자일 방법론 유형 중의 하나라고도 할 수 있다.
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 에러 등의 경우는 바로 바로 피드백
드라이버는?
- 나무를 보는 역할
- 네비게이터와 함께 문제를 해결할 수 있는 방향을 고민
- 네비게이터가 제안하는 방향에 따라 구체적인 방법을 생각해 보고 코드로 작성
- 작성하는 코드에 대해 설명할 수 있어야 한다.
- 네비게이터의 의견에 동의하지 않더라도 커뮤니케이션을 통해 합의점을 찾을 수 있도록 충분히 소통한다.
💎 좋은 페어 프로그래밍이란?
💯 아이스 브레이킹
어색한 분위기를 아이스 브레이킹으로 환기시키는 것도 방법이다.
💯 협업해서 문제 해결하기
네비게이터는 전체적인 흐름을 파악하고 드라이버는 네비게이터의 의견에 무조건 따르는 것이 아닌, 같이 논의하며 코드를 작성해 나간다.
💣 나쁜 페어 프로그래밍이란?
🚫 결정의 순간에 협의없이 진행
네비게이터는 드라이버가 코드를 작성하는 역할이라고 해서 무작정 드라이버에게 일방적으로 지시하는 것은 좋지 않다. 네비게이터가 파악한 방향성에 대해서 제시하고 이에 대해 어떻게 하면 좋을 지 의논해야 한다.
🚫 드라이버의 의견을 묻지 않음
드라이버가 잠자코 있다고 해서 네비게이터가 의견을 전혀 묻지 않는 것도 좋지 않다. 찬성을 하든 반대를 하든 적극적인 소통 필요하다.
🚫 페어의 주장을 존중하지 않음
각자 주어진 역할에 충실하기 위해서는 소통이 필수이다. 서로의 주장을 존중하고 충돌이 있더라도 합의와 논의를 거쳐 최대한 완만하게 해결해보자. 내가 더 많이 안다고 해서 혹은 모른다고 해서 그에 따른 주장이 무조건 옳거나 옳지 못한 것은 아니다.