Mob Programming
In short
Mob programming is a practice in which a whole team works on the same task, at the same time, on one shared computer, taking turns at the keyboard.
What is mob programming?
Mob programming is a way of working in which the whole team, typically three to six people, works on the same problem at the same time on a single computer or shared screen. One person, the driver, types, while everyone else acts as a navigator, discussing the approach and telling the driver what to write. Woody Zuill and his team popularized the practice in the early 2010s, and it is also known as ensemble programming or software teaming.
Roles rotate on a short timer, often every 5 to 15 minutes, so everyone takes regular turns at the keyboard. Many mobs follow strong-style navigation: for an idea to go from your head into the computer, it must go through someone else's hands, so the driver doesn't type their own ideas and the group must explain and agree before code is written. Remote mobs share a screen and hand the code over through a shared branch when the driver changes. Mobs often include testers, designers, or the Product Owner so that questions are answered on the spot.
Mob programming is like a band writing a song together in one room instead of each member recording a part alone and mailing it in. Knowledge spreads quickly, there are fewer handoffs and less waiting for code reviews, and decisions benefit from everyone's expertise, which makes it useful for complex problems, critical code, and onboarding new team members. It can be tiring, so many teams mob for only part of the day and take regular breaks.
Mob programming is often compared with pair programming. Pair programming puts two people at one workstation, while mob programming extends the same idea to the whole team. Both provide continuous code review, but mobbing trades the number of tasks in progress for shared understanding and smoother flow. It is also different from a meeting where one person codes and others watch passively: in a mob, everyone navigates.
Key takeaways
- The whole team works on one task at one computer at the same time.
- A driver types while navigators decide what to write.
- Roles rotate every few minutes so everyone takes turns.
- It spreads knowledge fast and removes waiting for code review.
- Pair programming involves two people; mob programming involves the whole team.
Example
Mob session: 10:00-12:00, one shared screen, 10-minute rotations
10:00 Driver: Ana Navigators: Ben, Chen, Dee
10:10 Driver: Ben Navigators: Chen, Dee, Ana
10:20 Driver: Chen Navigators: Dee, Ana, Ben
10:30 Driver: Dee Navigators: Ana, Ben, Chen
...
11:50 Five-minute retrospective: what helped, what to change next time
Rule: the driver types only what the navigators decide (strong-style).Readers ask
What is the difference between mob programming and pair programming?
Pair programming involves two developers sharing one workstation. Mob programming involves the whole team, often including testers and product people, working together on one task with rotating drivers.
Isn't mob programming inefficient?
It looks inefficient because several people work on one task, but teams report fewer bugs, less waiting for reviews and answers, and faster knowledge sharing. Whether it pays off depends on the complexity of the work and how often a team would otherwise be blocked.
What is ensemble programming?
Ensemble programming is another name for mob programming, chosen by some teams because it sounds more collaborative. Software teaming is a newer name for the same practice.
See also
- Pair ProgrammingTeams & Process, p. 15Pair programming is an Agile technique in which two developers work together on the same code, with one typing while the other reviews and guides the work.
- Extreme ProgrammingTeams & Process, p. 9Extreme Programming is an Agile method built on engineering practices such as pair programming, test-driven development, and continuous integration.
- Code ReviewVersion Control, p. 4A code review is the practice of having other developers check code changes before they are merged, to catch bugs, improve quality, and share knowledge.
- Bus FactorTeams & Process, p. 4The bus factor is the smallest number of people who would have to leave a project suddenly before it stalls because nobody left knows its critical parts.
- RetrospectiveTeams & Process, p. 20A retrospective is a team meeting held at the end of each sprint to reflect on how the team worked and agree on concrete ways to improve next time.
- AgileTeams & Process, p. 2Agile is an approach to software development that delivers working software in small, frequent increments and adjusts plans based on regular feedback.
Spotted a mistake or something missing on this page?Suggest an edit