Mob Programming Sessions | Team Coding Guide 2026
Run effective mob programming sessions with driver/navigator roles and rotation timers. GitScrum coordinates mob work for complex problems and onboarding.
9 min read
Mob programming brings the whole team together on complex problems. GitScrum helps coordinate mob sessions and track their outcomes.
Mob Programming Basics
What is Mobbing
MOB PROGRAMMING CONCEPT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TRADITIONAL DEVELOPMENT: β
β βββββββββββββββββββββββββ β
β 4 developers β 4 different tasks β merge β review β
β β conflicts β bugs β rework β
β β
β MOB PROGRAMMING: β
β βββββββββββββββββ β
β 4 developers β 1 task together β done right first time β
β β no review needed β no knowledge silos β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β THE MOB: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β π€ π€ π€ π€ β Navigators (thinking, guiding) ββ
β β β ββ
β β βΌ ββ
β β βββββββββ ββ
β β β β¨οΈ β β Driver (typing only) ββ
β β βββββββββ ββ
β β β ββ
β β βΌ ββ
β β βββββββββββββββββββββββββββββββββββββββββ ββ
β β β BIG SCREEN β ββ
β β β (everyone sees) β ββ
β β βββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DRIVER: Types what navigators tell them β
β NAVIGATORS: Think, discuss, direct the driver β
β ROTATE: Driver changes every 5-10 minutes β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
When to Mob
GOOD USES FOR MOBBING:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BEST FOR: β
β βββββββββ β
β β
β COMPLEX DESIGN DECISIONS: β
β "How should we architect this feature?" β
β Team reaches consensus while coding β
β β
β DIFFICULT BUGS: β
β "No one can figure this out alone" β
β Multiple perspectives help β
β β
β ESTABLISHING PATTERNS: β
β "How will we do X across the codebase?" β
β Everyone learns the pattern together β
β β
β ONBOARDING: β
β "New person needs to learn our codebase" β
β They observe and participate β
β β
β HIGH-STAKES CODE: β
β "This is critical and risky" β
β Collective ownership and review β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β NOT GOOD FOR: β
β βββββββββββββ β
β β Simple, routine tasks β
β β Independent research β
β β When team is too large (max 5-6) β
β β All-day every day (exhausting) β
β β When quick feedback loops exist anyway β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Running a Mob Session
Session Structure
MOB SESSION STRUCTURE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BEFORE (5-10 min): β
β ββββββββββββββββββ β
β β’ Clear problem statement β
β β’ Relevant context shared β
β β’ Environment ready β
β β’ Big screen / projector / shared screen β
β β
β DURING: β
β βββββββ β
β β’ Rotate driver every 5-10 minutes β
β β’ Navigators discuss approach β
β β’ Driver types what mob agrees β
β β’ Take breaks every 50-60 minutes β
β β
β AFTER (5-10 min): β
β βββββββββββββββββ β
β β’ Quick retrospective β
β β’ Document decisions made β
β β’ Identify follow-up work β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β MOB SESSION TASK: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β MOB-001: Design payment processing flow ββ
β β ββ
β β PARTICIPANTS: @alex, @jordan, @pat, @sam, @taylor ββ
β β DURATION: 3 hours (with breaks) ββ
β β ββ
β β PROBLEM: ββ
β β Design and implement the new payment processing ββ
β β flow with multiple providers and retry logic. ββ
β β ββ
β β GOAL: ββ
β β Working implementation + team consensus on pattern ββ
β β ββ
β β SCHEDULE: ββ
β β 9:00 - Context and problem review ββ
β β 9:15 - Design discussion (whiteboard) ββ
β β 9:45 - Start coding together ββ
β β 10:45 - Break (10 min) ββ
β β 10:55 - Continue coding ββ
β β 11:45 - Wrap up, document decisions ββ
β β ββ
β β DRIVER ROTATION: Every 10 minutes ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Driver Rotation
ROTATION MECHANICS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TIMER: β
β ββββββ β
β Set visible timer for 5-10 minutes β
β When timer goes off, rotate driver β
β No exceptions (keeps everyone engaged) β
β β
β ROTATION ORDER: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β 10:00 10:10 10:20 10:30 10:40 ββ
β β βββββ βββββ βββββ βββββ βββββ ββ
β β @alex β @jordan β @pat β @sam β @taylor β ββ
β β ββ
β β 10:50 11:00 11:10 ... ββ
β β βββββ βββββ βββββ ββ
β β @alex β @jordan β ... ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DRIVER RULES: β
β βββββββββββββ β
β β’ Type only what navigators tell you β
β β’ Don't make decisions alone β
β β’ Ask if unclear: "Where should I put this?" β
β β’ Trust the mob β
β β
β NAVIGATOR RULES: β
β ββββββββββββββββ β
β β’ Give clear instructions β
β β’ One voice at a time β
β β’ Higher-level guidance (not character by character) β
β β’ Discuss amongst yourselves first β
β β
β TIP: Use "strong-style" pairing β
β "For an idea to go from your head to the computer, β
β it must go through someone else's hands." β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Remote Mobbing
Virtual Setup
REMOTE MOB SETUP:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TOOLS: β
β ββββββ β
β β
β VS CODE LIVE SHARE: β
β β’ Everyone can see and edit β
β β’ Driver has cursor control β
β β’ Shared terminal β
β β’ Works great for mobbing β
β β
β VIDEO: β
β β’ Cameras on (engagement) β
β β’ Gallery view (see everyone) β
β β’ Good audio (essential) β
β β
β TIMER: β
β β’ mob.sh (open source mob timer) β
β β’ cuckoo.team (web-based) β
β β’ Simple phone timer β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β REMOTE MOB FLOW: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β 1. Everyone joins video call ββ
β β 2. Host starts VS Code Live Share ββ
β β 3. All join the shared session ββ
β β 4. Current driver has keyboard focus ββ
β β 5. Timer runs for rotation ββ
β β 6. On rotation, new driver takes focus ββ
β β 7. Git handoff: mob.sh handles commits ββ
β β ββ
β β mob start β work β mob next β next driver ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TIPS: β
β βββββ β
β β’ Designate a facilitator β
β β’ Shorter rotations (5 min) helps engagement β
β β’ Take more breaks than in-person β
β β’ Mute when not speaking (background noise) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Making Mobbing Work
Facilitation
FACILITATING A MOB:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β FACILITATOR RESPONSIBILITIES: β
β βββββββββββββββββββββββββββββ β
β β
β β’ Keep timer running β
β β’ Call out rotations β
β β’ Keep mob on topic β
β β’ Ensure everyone participates β
β β’ Call breaks β
β β’ Manage disagreements β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β HANDLING CHALLENGES: β
β β
β SOMEONE DOMINATES: β
β "Let's hear from others. @pat, what do you think?" β
β "We've heard that perspective. Other ideas?" β
β β
β SOMEONE IS QUIET: β
β "We haven't heard from @sam. Any thoughts?" β
β Next driver rotation often helps β
β β
β DISAGREEMENT: β
β "Let's try option A for 15 min, then reassess" β
β "Can we do a quick experiment to see?" β
β β
β GOING OFF TRACK: β
β "That's interesting, but let's park it" β
β "How does this help solve our current problem?" β
β β
β DRIVER TYPING THEIR OWN IDEAS: β
β "Remember, navigators direct. What does mob want?" β
β Gentle reminder about strong-style β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β KEEP ENERGY UP: β
β βββββββββββββββββ β
β β’ Celebrate small wins β
β β’ "Yes, and..." mindset β
β β’ Regular breaks (every 50-60 min) β
β β’ Snacks help (if in person) β
β β’ End on time β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Measuring Value
Mob Outcomes
EVALUATING MOBBING:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BENEFITS TO TRACK: β
β ββββββββββββββββββ β
β β
β IMMEDIATE: β
β β’ Problem solved in session β
β β’ Team aligned on approach β
β β’ No review cycle needed β
β β’ Fewer bugs in code β
β β
β LONGER TERM: β
β β’ Knowledge spread across team β
β β’ Patterns established β
β β’ Better onboarding β
β β’ Team cohesion β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β MOB RETRO (End of session): β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Quick check: ββ
β β ββ
β β β Did we achieve our goal? ββ
β β β Did everyone contribute? ββ
β β β Was mobbing the right approach? ββ
β β β What would we do differently? ββ
β β ββ
β β LEARNINGS: ββ
β β β’ Shorter rotations kept energy up ββ
β β β’ Needed more context upfront ββ
β β β’ Design discussion before coding helped ββ
β β ββ
β β NEXT TIME: ββ
β β β’ 5 min rotations instead of 10 ββ
β β β’ Prepare design beforehand ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β WHEN MOBBING ISN'T WORKING: β
β βββββββββββββββββββββββββββ β
β Signs: People disengaged, one person doing all thinking β
β Fixes: Shorter rotations, better facilitation, smaller mobβ
β Maybe: Mobbing isn't right for this problem β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ