Mob programming (informally mobbing) (aka. ensemble programming) is a software development approach where the whole team works on the same thing, at the same time, in the same space, and at the same computer (or virtually, using screen sharing)
Wikipedia
Mobbing (also known as ensemble programming, apparently) is a step beyond focusing the team on the same epic. It’s focusing the team on the same ticket. Nobody’s allowed to work on a ticket without the majority of the team there.
And it’s not limited to just coding. It could also mean testing, writing docs, deploying, investigating, writing new tickets, etc. Whatever the work is, there’d be one person driving and the rest of the team navigating.
A Scrum Book has a great chapter on it (but they call it swarming instead of mobbing):
Working on too many things at once can radically reduce individual effectiveness, team velocity, or enterprise well-being. It can cripple velocity and can sometimes reduce it to zero. If everyone is working on their own thing individually, they are unlikely to help each other and, in the long term, learn from each other.
[…] Therefore, focus maximum team effort on one item in the Product Backlog and complete all known work as soon as possible. Whoever takes this item is Captain of the team. Everyone must help the Captain if they can and no one can interrupt the Captain. As soon as the Captain is Done, whoever takes responsibility for the next backlog item is Captain.
A Scrum Book
There are some huge, gigantic, enormous, undeniable benefits to mobbing:
- You don’t really need code review anymore, since entire team helped write that code.
- Bus factor issues are nonexistent – everyone learns everything by default.
- Less dumb mistakes, less bugs, less rework.
- The bare minimum of partially done work: only one thing is in progress, ever.
- No handoffs and no waiting between stages of the development workflow.
- Laser focus: you’re not going to be distracted by Slack or Reddit during a mobbing session.
- All of that means that the cycle time for a ticket is ridiculous.
It all boils down to eliminating waste. Lean software development defines some common types of waste:
- Partially done work
- Extra features
- Relearning
- Task switching
- Waiting
- Handoffs
- Defects
- Management activities
The bold/italics ones are minimized or eliminated by mobbing. That is some silver bullet insanity.
So why isn’t it everywhere? It’s not a new concept; it’s been around for decades. Here are the common objections I see:
“There’s no way we’ll get as much done if we have everyone doing the same thing. For example, a five-person team would have to have 5x productivity when mobbing vs. working alone, and that’s impossible.” This is short term thinking. Sure, you won’t hit 5x productivity in the first week. But think about the compounding gains from learning from each other all day every day, minimizing bugs and rework, killing delays from waiting/handoffs, and removing code review.
“To get promoted at my company, I need to lead projects and accomplish things as an individual. It’s hard to show individual accomplishment when I’m always mobbing.” There are other ways to show individual accomplishment. Help other teams. Share knowledge widely. Improve culture. Own the vision for something. Become a subject matter expert. Execution isn’t the only option.
“Mobbing leads to groupthink and removes individual creativity.” This smells like an un-jelled team to me. A team with high psychological safety will encourage people to throw out wild ideas and contradict each other and try stuff out, no?
“Some tasks aren’t a good fit for mobbing, such as grunt work or writing docs.” Mobbing on grunt work prevents lots of stupid mistakes. That said, some tasks may not be a good fit for whatever reason, and that’s fine. Maybe you want to keep writing blog posts alone so that your writing doesn’t lose your voice or tone. No problem. Mobbing is great as a “default unless there’s a good reason not to” setup. It doesn’t have to be an all-or-nothing thing.
“I don’t like working with other people all day. I like digging into problems alone.” This one holds water. Who am I to tell someone they are wrong about what they enjoy? I’d only say two things. 1) Give it a fair try (as in, for multiple weeks until it becomes “normal”) instead of assuming you’d hate it. 2) If you really want to work alone, then you shouldn’t be on a mobbing team, and that’s OK.
Thanks for reading! Subscribe via email or RSS, follow me on Twitter, or discuss this post on Reddit!