Mob Programming | Whole Team Collaboration Guide
Implement mob programming for complex problems and knowledge sharing. One keyboard, whole team approach with driver/navigator roles and rotation timers.
10 min read
One keyboard, whole team. GitScrum helps coordinate mob sessions and track their impact on quality and team capability.
Mob Programming Basics
How It Works
MOB PROGRAMMING EXPLAINED:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β THE SETUP: β
β ββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β LARGE SCREEN β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β β² β
β β β
β ββββββ ββββββ΄βββββ ββββββ β
β β π§ β β π§βπ» β β π§ β β
β β β β DRIVER β β β β
β ββββββ βββββββββββ ββββββ β
β Navigator Types Navigator β
β only β
β ββββββ ββββββ β
β β π§ β β π§ β β
β β β β β β
β ββββββ ββββββ β
β Navigator Navigator β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ROLES: β
β ββββββ β
β DRIVER: Types code, doesn't decide what to type β
β NAVIGATORS: Direct the driver, discuss solutions β
β β
β "For an idea to get into the computer, it must go β
β through someone else's hands." β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Session Structure
Running a Mob
MOB SESSION FLOW:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β SESSION STRUCTURE (2 hours): β
β ββββββββββββββββββββββββββββ β
β β
β 0:00 - 0:05 SETUP β
β β’ Define goal for session β
β β’ Ensure everyone can see screen β
β β’ First driver at keyboard β
β β
β 0:05 - 0:50 MOB WORK (Block 1) β
β β’ Rotate driver every 10-15 min β
β β’ 3-4 rotations β
β β’ Navigators guide work β
β β
β 0:50 - 1:00 BREAK β
β β’ Stand, stretch, bio break β
β β’ Quick sync on progress β
β β
β 1:00 - 1:50 MOB WORK (Block 2) β
β β’ Continue rotating β
β β’ 3-4 more rotations β
β β
β 1:50 - 2:00 WRAP UP β
β β’ What did we accomplish? β
β β’ What's left? β
β β’ How did session work? β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β TIMER: β
β ββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β π Driver rotation: 12:00 ββ
β β ββ
β β Current driver: Alex ββ
β β Next up: Jordan ββ
β β ββ
β β [Time visible to everyone] ββ
β β [Strict rotation, no exceptions] ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
When to Mob
Best Use Cases
WHEN MOB PROGRAMMING SHINES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β β
HIGH VALUE CASES: β
β ββββββββββββββββββββ β
β β
β COMPLEX PROBLEMS: β
β "This is too hard for one person" β
β β Multiple perspectives find better solutions β
β β
β KNOWLEDGE TRANSFER: β
β "Only Sam knows how this works" β
β β Everyone learns by doing together β
β β
β ONBOARDING: β
β "New team member joining" β
β β Learn codebase, team practices, relationships β
β β
β CRITICAL CODE: β
β "This absolutely cannot have bugs" β
β β Multiple reviewers in real-time β
β β
β DESIGN DECISIONS: β
β "We need to agree on architecture" β
β β Build consensus while building β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β β LESS EFFECTIVE FOR: β
β ββββββββββββββββββββββ β
β β
β ROUTINE WORK: β
β Simple, well-understood tasks β
β β Solo work is more efficient β
β β
β PARALLEL TASKS: β
β Independent work with no overlap β
β β Split up and mob only on integration β
β β
β DEEP RESEARCH: β
β Initial exploration phase β
β β Research individually, mob on synthesis β
β β
β BALANCE: Not everything, not nothing β
β Mob strategically, solo when appropriate β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Driver/Navigator
Role Dynamics
DRIVER AND NAVIGATOR ROLES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β THE DRIVER: β
β βββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β RESPONSIBILITIES: ββ
β β β’ Type what navigators direct ββ
β β β’ Ask clarifying questions ββ
β β β’ Stay focused on current task ββ
β β ββ
β β DON'T: ββ
β β β’ Make decisions about what to type ββ
β β β’ Go off on tangents ββ
β β β’ Ignore navigator input ββ
β β ββ
β β THE DRIVER IS A "SMART KEYBOARD" ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β THE NAVIGATORS: β
β βββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β RESPONSIBILITIES: ββ
β β β’ Think ahead about solution ββ
β β β’ Direct driver clearly ββ
β β β’ Discuss approaches among navigators ββ
β β β’ Catch errors in real-time ββ
β β ββ
β β COMMUNICATION LEVELS: ββ
β β ββ
β β INTENT (high level): ββ
β β "Let's add a method to validate the email" ββ
β β ββ
β β LOCATION (medium): ββ
β β "In the User class, after the constructor" ββ
β β ββ
β β DETAILS (low level, when needed): ββ
β β "Type: function validateEmail opening paren..." ββ
β β ββ
β β Start at intent level, get detailed if driver stuck ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β HEALTHY DYNAMICS: β
β βββββββββββββββββ β
β Everyone takes turns as driver β
β Navigators discuss, driver implements β
β Respectful disagreement is productive β
β Quiet voices are drawn in β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Mob Challenges
Common Issues
OVERCOMING MOB CHALLENGES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β CHALLENGE 1: DOMINANT PERSONALITY β
β βββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β SYMPTOM: One person directing everything ββ
β β ββ
β β SOLUTIONS: ββ
β β β’ Rotate "navigator lead" role ββ
β β β’ Facilitator asks quiet people directly ββ
β β β’ "What do others think before we proceed?" ββ
β β β’ Written idea sharing when needed ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β CHALLENGE 2: FEELS SLOW β
β ββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β SYMPTOM: "I could do this faster alone" ββ
β β ββ
β β REALITY: ββ
β β β’ Less rework (caught errors early) ββ
β β β’ No code review delay ββ
β β β’ Knowledge shared immediately ββ
β β β’ Fewer bugs in production ββ
β β ββ
β β MEASURE: Total time to production, not just coding ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β CHALLENGE 3: ENERGY DRAIN β
β βββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β SYMPTOM: Team exhausted after mobbing ββ
β β ββ
β β SOLUTIONS: ββ
β β β’ Regular breaks (every 45-60 min) ββ
β β β’ Limit mob time (not all day) ββ
β β β’ Comfortable room setup ββ
β β β’ Mix mob and solo work ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β CHALLENGE 4: REMOTE MOBBING β
β βββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β TOOLS: ββ
β β β’ VS Code Live Share ββ
β β β’ mob.sh CLI tool ββ
β β β’ Tuple/Pop for pairing ββ
β β ββ
β β TIPS: ββ
β β β’ Cameras on (helps read the room) ββ
β β β’ Good audio essential ββ
β β β’ Clear hand-off rituals ββ
β β β’ More frequent breaks ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Measuring Impact
Mob Effectiveness
TRACKING MOB RESULTS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β QUALITY METRICS: β
β ββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β COMPARISON: Mob vs Solo Work ββ
β β ββ
β β METRIC MOB SOLO ββ
β β ββββββ βββ ββββ ββ
β β Bugs found in review 0.5 2.3 ββ
β β Bugs in production 0.2 1.1 ββ
β β Rework rate 5% 18% ββ
β β Time to production 3 days 5 days ββ
β β ββ
β β Mob code tends to be higher quality on first pass ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β KNOWLEDGE METRICS: β
β ββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BEFORE MOB SESSIONS: ββ
β β "Only 1 person can work on payment system" ββ
β β ββ
β β AFTER 4 WEEKS OF MOBBING: ββ
β β "3 team members can work on payment system" ββ
β β ββ
β β Bus factor improved from 1 to 3 ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β TEAM HEALTH: β
β ββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Survey: "How well do you understand the codebase?" ββ
β β ββ
β β Before mobbing: 3.2/5 average ββ
β β After 6 weeks: 4.3/5 average ββ
β β ββ
β β Survey: "How comfortable asking for help?" ββ
β β ββ
β β Before: 3.0/5 ββ
β β After: 4.5/5 ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Getting Started
Introducing Mobbing
STARTING MOB PROGRAMMING:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β PHASE 1: EXPERIMENT (Week 1-2) β
β ββββββββββββββββββββββββββββββ β
β β’ Schedule 2-hour mob session β
β β’ Pick a real but low-stakes problem β
β β’ Explain roles before starting β
β β’ Retro after session β
β β
β PHASE 2: REGULAR PRACTICE (Week 3-6) β
β ββββββββββββββββββββββββββββββββββββ β
β β’ Weekly mob session (standing time) β
β β’ Vary what you work on β
β β’ Adjust timing/structure based on retros β
β β
β PHASE 3: INTEGRATE (Week 7+) β
β ββββββββββββββββββββββββββββ β
β β’ Mob is a tool in your toolkit β
β β’ Use strategically, not everything β
β β’ Team decides when to mob β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β FIRST SESSION CHECKLIST: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BEFORE: ββ
β β β Large screen everyone can see ββ
β β β Comfortable seating arrangement ββ
β β β Timer for rotations ββ
β β β Clear problem to solve ββ
β β β Everyone knows roles ββ
β β ββ
β β DURING: ββ
β β β Strict rotation timing ββ
β β β Everyone participates ββ
β β β Breaks every 45-60 min ββ
β β ββ
β β AFTER: ββ
β β β Quick retro (10 min) ββ
β β β What worked? ββ
β β β What to try differently? ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ