How is mob programming different from pairing?
With mob programming the whole team is working on the same problem at the same time on the same screen. Not just programmers and not just 2 people.
Isn’t it wasteful having everyone working on the same thing?
We’ve found mobbing particularly effective on greenfield work and it has brought us a number of benefits we wouldn’t normally get, even with 2-person pairing:
- Knowledge of the codebase is spread quickly and evenly across the team
- Experience of more people means architecture decisions are made more quickly and (hopefully!) unanimously
- Junior members of the team quickly get exposure to different perspectives; the cognitive load of pairing is spread around more people
- There is a strong incentive to move the problem along. We’re lean.
How does this work remotely?
The mob git tool helps us share code between mobbers. It quickly commits and pushes branches, stops CI builds running automatically and keeps track of whose turn it is next. This way each of us gets to work in our familiar local environment. We’ve been setting a 10 minute timer for each person’s turn which gives enough time to push the problem along and is short enough to keep the momentum going.
Are there any other benefits to the mob tool?
Even when there’s just 2 of us pairing we’ve been using the mob tool to run our pairing sessions. The tooling is just as helpful for managing our git flow. We’ve also been using the timers to switch turns instead of the more traditional ping-pong flow - it gives each person a little more breathing room to explore the problem.
Next time you're starting something new, why not give mobbing a go?