Mob programming: a better way to manage work

Mob programming is an approach to software development in which the whole team works on the same project simultaneously. It’s usually explained from the engineering perspective, but what if this technique could address major challenges in project management as well?

Traditional ways of working in both project management and software engineering involve breaking projects into individual tasks, assigning them to their respective disciplines to work on independently, and then merging the finished work together.

However, that style of project management results in a 70% failure rate for projects worldwide, with failed development projects costing approximately $260 billion per year in the United States alone.

The mob programming methodology challenges this approach by bringing the whole team together for mob programming sessions that focus on a specific goal.Let’s explore how traditional mob programming works and how to use the same tactics in project management.

Mob programming challenges the flawed individualistic approach to work

While many development teams use an approach that originates from “The Principles of Scientific Managementby Frederick Winslow Taylor, that methodology relies on being able to precisely measure the time required to complete individual tasks. But to make accurate predictions, you need a predictable process with tasks that have very low variation.

Imagine how a furniture factory produces wooden chairs. Building a chair involves set tasks like cutting pieces to exact lengths and joining pieces together with screws — repetitive, low variation tasks with predictable timelines.

But in the real world, tasks are rarely that predictable. In software development and many other industries, tasks tend to have a high degree of variation, making it difficult to estimate timelines and even harder to deliver on them.

Mob programming avoids these issues by bringing the whole team together to tackle tasks.

How mob programming works

In a mob programming session, you use the driver-navigator framework. One person acts as the "driver" who controls the keyboard and types the code, while the rest of the team serves as "navigators," who provide guidance on what to type. The driver role is often rotated among team members on a regular basis, such as every 15 minutes. The idea is to tap into the collective knowledge and skills of the team, solving problems collaboratively and reducing the time taken to transfer knowledge between individuals.

In mob programming, there is no waiting time or other forms of coordination waste, as the entire team focuses on solving a single problem simultaneously. This approach results in minimal lead time.

Leveraging the benefits of mob programming in project management

By acknowledging that software development involves tasks with a high degree of variation, mob programming reduces technical debt caused by inefficient workflows. You’ll have fewer surprise delays, less rework, and better access to all the expert knowledge your team offers. The same benefits can be realized by applying the mob programming methodology to project management.

Let’s say your company wants to launch a new landing page. The project requires input from copywriters, designers, and developers. With the traditional, Tayloristic approach to project management, each discipline works independently of the others — copywriters write the words, designers create the design assets, and developers build the page — and merge their work later. With the high degree of variation involved in these tasks, you’ll have a hard time predicting when “later” will be.

Plus, if designers create the design before the copy, the text might not fit into the design. Similarly, if developers start building while the designers and copywriters are still working on their individual tasks, they could miss important functionality or even key sections and end up reworking a lot of things.

Conversely, the mob programming approach would allow them to all share their expert knowledge and work on the landing page together more effectively. You could bring all three disciplines into one room (virtual or physical) to work on the landing page project simultaneously.

Mob programming practices encourage continuous learning and knowledge sharing

Mob programming offers an optimal environment for learning, as research demonstrates that people tend to learn more effectively in groups. By providing all the necessary conditions for successful collaborative learning, mob programming ensures that the entire team's attention is directed towards a single task, allowing any knowledge gaps to be promptly identified and resolved.

Furthermore, there is a robust scientific agreement that transitioning from individual to collective team reasoning and decision-making considerably enhances problem-solving capabilities.

In the landing page example, taking the mob programming approach would enable copywriters to learn about design constraints, designers would learn about the importance of the copy-image connection, and developers would learn about the goals of the page and be able to build functionality to align with those goals.

Apply the mob programming approach to improve your project management

Mob programming not only enhances the development process concerning speed but also improves quality, facilitates knowledge sharing, and increases problem-solving efficiency. The same benefits apply to project management — mob project management can streamline collaboration and help address problems more efficiently by bringing more knowledge and focus to each task.

If you’d like to learn more about mob programming, I recommend viewing Woody Zuill's talk from the 2019 Goto conference.

References: