Whoever gave Mob Programming its name clearly wasn’t in marketing. Who would want to be in a mob? The word mob conjures images of smashed glass and looted stores — the population of Springfield lined up with pitchforks and torches.
Mobs really are the opposite of what you would want from a successful programming session. Mobs are disorganised, prone to rash decisions, angry and unwilling to compromise. Mob programming however is none of these things.
So What is Mob Programming?
So what exactly is mob programming? Put simply: 3 (or more) developers, one keyboard. No, that’s not something weird that you’ve seen on the internet. It’s about working collaboratively towards delivering high quality software.
Given that most programmers get in hot sweats just thinking about the idea of working with other people, I’ll delve into more detail as to what that looks like. Imagine we have a developer, Steve. Steve works on an app where users can view recipes. One day Steve is tasked with adding a ‘favourite’ feature to the app. With this feature users are able to save recipes to a a private list called ‘my favorites’. If they want to view a saved recipe again, they can simply open the favorite list and select the recipe.
Steve wants to use mob programming to implement his feature, so he books a meeting room and asks his colleagues John and Sarah to join him in a mob. John and Sarah show up to the meeting laptops in hand, ready to take on the challenge of the favorites feature.
So at this point, Steve needs to lay down some rules (yes mobs have rules). The rules might be something like this:
- At any given time one person is the ‘Driver’. The driver is the person with the keyboard and mouse, the driver is the only person allowed to modify the code.
- Everyone else takes the role of the ‘Navigator’. Whilst the driver spends a lot of their time occupied with the physical task of typing, the Navigator has all the time they need to think, review, discuss, describe. And that’s exactly what the navigator should do.
- Everybody swaps roles — often. No, this isn’t some ‘everybody gets to play’ stuff you heard in primary school. If people stay in one role for too long they can become fatigued. if they have a favourite role then when they’re not in it they can become bored.