Pair Programming Organization | Sessions & Roles
Organize effective pair programming with driver-navigator roles. Session structure, remote pairing tools, and GitScrum tracking for collaborative coding.
9 min read
Pair programming produces better code and spreads knowledge. GitScrum helps teams coordinate pairing sessions and track collaborative work.
Pairing Benefits
Why Pair
PAIR PROGRAMMING BENEFITS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β CODE QUALITY: β
β βββββββββββββ β
β β’ Two sets of eyes catch bugs earlier β
β β’ Better design decisions β
β β’ Built-in code review β
β β’ Fewer defects reach production β
β β
β KNOWLEDGE SHARING: β
β ββββββββββββββββββ β
β β’ Skills transfer between devs β
β β’ No single points of failure β
β β’ Faster onboarding β
β β’ Team learns together β
β β
β FOCUS: β
β ββββββ β
β β’ Accountability keeps both on task β
β β’ Less distraction (harder to check email) β
β β’ Momentum through difficult problems β
β β
β TEAM: β
β βββββ β
β β’ Builds relationships β
β β’ Improves communication β
β β’ Collective code ownership β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β WHEN TO PAIR: β
β ββββββββββββββ β
β β
Complex or unfamiliar code β
β β
New team member onboarding β
β β
High-risk changes β
β β
Design decisions β
β β
Debugging difficult issues β
β β
Learning new technology β
β β
β WHEN NOT TO: β
β βββββββββββββ β
β β Simple, routine tasks β
β β When both are exhausted β
β β Individual research/reading β
β β Administrative tasks β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Pairing Structure
Driver-Navigator Model
DRIVER-NAVIGATOR ROLES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β DRIVER NAVIGATOR β β
β β ββββββ βββββββββ β β
β β β β
β β β¨οΈ Has keyboard π Watches screen β β
β β π Types code πΊοΈ Thinks ahead β β
β β π§ Implements π‘ Suggests direction β β
β β π― Focuses on now π Sees big picture β β
β β β β
β β "I'm typing the "We should probably β β
β β function now" think about error β β
β β handling here" β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SWITCHING: β
β ββββββββββ β
β β’ Every 15-30 minutes β
β β’ At natural breakpoints β
β β’ When navigator has idea to implement β
β β’ When driver gets stuck β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β TIPS: β
β β
β FOR DRIVER: β
β β’ Think out loud β
β β’ Ask "What do you think?" β
β β’ Don't just type silently β
β β’ Accept suggestions gracefully β
β β
β FOR NAVIGATOR: β
β β’ Stay engaged (don't check phone) β
β β’ Give space to think β
β β’ Suggest, don't dictate β
β β’ Watch for bigger issues β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Session Planning
PAIRING SESSION STRUCTURE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BEFORE SESSION: β
β βββββββββββββββ β
β β
β SCHEDULE: β
β β’ Book 2-4 hour blocks β
β β’ Don't schedule back-to-back sessions β
β β’ Morning often better (fresher minds) β
β β
β PREPARE: β
β β’ Clear goal for session β
β β’ Relevant context shared β
β β’ Environment set up β
β β’ No other meetings during β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SESSION PLAN: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β PAIR-SESSION: Auth Refactoring ββ
β β ββ
β β PARTICIPANTS: @alex (driver first) + @jordan ββ
β β DURATION: 3 hours ββ
β β TASK: STORY-789 - Refactor auth module ββ
β β ββ
β β GOAL: ββ
β β Refactor authentication to support SSO ββ
β β while maintaining current login flow ββ
β β ββ
β β CONTEXT NEEDED: ββ
β β β’ Current auth flow diagram ββ
β β β’ SSO provider documentation ββ
β β β’ Test accounts ββ
β β ββ
β β STRUCTURE: ββ
β β 0:00 - Review current code together ββ
β β 0:30 - Design new approach ββ
β β 1:00 - Implement (switch every 25 min) ββ
β β 2:30 - Write tests ββ
β β 3:00 - Wrap up, document decisions ββ
β β ββ
β β BREAKS: 5-10 min every hour ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DURING SESSION: β
β βββββββββββββββ β
β β’ Set timer for role switches β
β β’ Take breaks (pomodoro works well) β
β β’ Stay on task β
β β’ Communicate constantly β
β β
β AFTER SESSION: β
β ββββββββββββββ β
β β’ Update task status β
β β’ Note what was completed β
β β’ Document any decisions β
β β’ Quick retro: "What worked? What didn't?" β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Remote Pairing
Tools and Setup
REMOTE PAIRING SETUP:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TOOLS: β
β ββββββ β
β β
β SCREEN SHARING: β
β β’ VS Code Live Share (best for code) β
β β’ Tuple (purpose-built for pairing) β
β β’ Zoom/Meet (screen sharing) β
β β
β COMMUNICATION: β
β β’ Video ON (see reactions, stay engaged) β
β β’ Good microphone β
β β’ Headphones (avoid echo) β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β VS CODE LIVE SHARE: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BOTH CAN: ββ
β β β’ Edit code simultaneously ββ
β β β’ Navigate independently ββ
β β β’ Run terminal commands ββ
β β β’ Debug together ββ
β β ββ
β β FEATURES: ββ
β β β’ Follow mode (see what partner sees) ββ
β β β’ Shared terminals ββ
β β β’ Shared localhost ββ
β β β’ Works cross-platform ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β REMOTE PAIRING TIPS: β
β βββββββββββββββββββββ β
β β
Video on (engagement, non-verbal cues) β
β β
Verbalize more (can't see body language) β
β β
Share screen with low latency β
β β
Take more breaks (screen fatigue) β
β β
Use follow mode intentionally β
β β Don't let one person take over β
β β Avoid multitasking on other screen β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Pairing Patterns
Different Approaches
PAIRING STYLES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β EXPERT-NOVICE: β
β ββββββββββββββ β
β Purpose: Learning, onboarding β
β β
β β’ Novice drives, expert navigates β
β β’ Expert guides but doesn't take over β
β β’ Novice asks questions freely β
β β’ Switch when novice comfortable β
β β
β CAUTION: Expert should not just dictate β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β PEER PAIRING: β
β βββββββββββββ β
β Purpose: Collaboration, shared ownership β
β β
β β’ Equal skill levels β
β β’ Regular role switching β
β β’ Discuss approaches together β
β β’ Both contribute ideas β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β PING-PONG (with TDD): β
β βββββββββββββββββββββ β
β Purpose: Test-driven development β
β β
β 1. Person A writes failing test β
β 2. Person B writes code to pass β
β 3. Person B writes next failing test β
β 4. Person A writes code to pass β
β 5. Repeat... β
β β
β Good for: Focused TDD, keeping tests first β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β MOBBING: β
β ββββββββ β
β Purpose: Whole team on complex problem β
β β
β β’ 3+ people, one driver β
β β’ Rotate driver frequently (5-10 min) β
β β’ Everyone contributes as navigator β
β β’ Good for design decisions, complex bugs β
β β
β CAUTION: Expensive - use for high-value problems β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Common Challenges
Pairing Problems
PAIRING CHALLENGES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β "ONE PERSON DOMINATES": β
β ββββββββββββββββββββββββ β
β Problem: Driver never switches, navigator passive β
β Fix: Strict timer for switching β
β Fix: Navigator should drive more β
β Fix: Use ping-pong style β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β "EXHAUSTING AFTER FEW HOURS": β
β ββββββββββββββββββββββββββββββ β
β Problem: Pairing is intense β
β Fix: Take regular breaks (pomodoro) β
β Fix: Don't pair all day β
β Fix: Mix pairing with solo work β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β "WE DISAGREE ON APPROACH": β
β ββββββββββββββββββββββββββ β
β Problem: Conflict about how to solve β
β Fix: Discuss before coding β
β Fix: Try both approaches briefly β
β Fix: Get third opinion β
β Fix: Default to simpler solution β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β "SKILL GAP TOO LARGE": β
β βββββββββββββββββββββββ β
β Problem: Expert frustrated, novice lost β
β Fix: Expert explains more β
β Fix: Novice drives β
β Fix: Pair on appropriate complexity β
β Fix: Pre-session context sharing β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β "FEELS SLOWER": β
β βββββββββββββββ β
β Problem: Manager thinks pairing wastes time β
β Reality: Often faster overall β
β - Fewer bugs to fix later β
β - Less rework β
β - Built-in code review β
β - Knowledge doesn't get stuck β
β β
β Measure: Time to done (including bugs), not just coding β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ