What is Mob Programming?
Mob programming is a highly collaborative way of working that involves three or more people working on the same thing, at the same time. Most commonly used for software development, mob programming is effective for other work as well. Mob programming is gaining adopters across the world, thanks to its product and people benefits.
How mob programming works
In practice, mob programming involves three or more people working on the same code, on the same computer. Each mob member takes on a different role, like in a rally car. One person takes the driver position, operating the keyboard and mouse, while another takes the navigator role, calling out the next maneuver. Additional teammembers are actively observing and giving input.
Teammembers switch positions at a consistent rhythm. Many teams switch after a specific amount of time, ranging from 3-15 minutes. Some teams switch after a specific unit of work, such as after a step in test-driven development. A variety of mob programming timers can be used to track the interval.
What mob programming looks like
Mob programming is most commonly done in-person. Three or more people gather in the same space, typically in front of a large screen(s). Some teams also effectively mob remotely. In either case, it’s important to setup a dedicated environment for mob programming.
There are several best practices to follow to setup your mobbing station. Most importantly, the mobbing station must be comfortable. Displays should be set to the proper height, and several sitting and standing options should be available. It’s also important to work in a space that is not completely enclosed. These practices support the team in working together for multiple hours at a time, most days of the week.
The benefits of mob programming
There are many benefits of mob programming. Several of them relate to the product. Mob programming significantly improves quality, thanks to having several sets of eyes on the same product. Mob programming also reduces wait time, thanks to having multiple stakeholders engaged at the same time. And this is just the beginning.
Mob programming also has organizational benefits. Among them is knowledge sharing. With several people versed on the same code, risk is significantly reduced. Another one of the benefits of mob programming is that it accelerates learning. Integrating new hires and junior developers into a mob is a great way to get them up to speed. Furthermore, mob programming enhances team cohesion and drives retention.
Applications of mob programming
Rather than being exclusive, mob programming is complementary to existing agile software development methodologies. As such, mob programming can be applied within scrum and lean software development. In essence, mob programming can be thought of as a hands-on way of working within agile frameworks.
Furthermore, the mob way of working can be used for more than programming. It easily extends to product design work, for example. Product teams are mobbing to strategically assess assumptions, and to select product features for MVP. These mobs typically include product owners, business analysts, and UX designers, in addition to software engineers. This versatility reveals the broad-reaching value of mob programming.
Takeaways from mob programming
At its core, mob programming is a highly effective teamwork method. It drives benefits ranging from enhanced product quality to highly-engaged people, and can be applied to work beyond programming. To get the most out of mob programming, it is important both to setup a proper mobbing station, and to follow best practices that support flow. For more on these topics, browse the resources below.