Programming is typically a solitary business, requiring extreme concentration for long periods. Hence, programmers tend to enjoy their quiet, and generally prefer to work in smaller teams and so in many ways, the very idea of Mob Programming is counter-intuitive, akin to back seat driving.
What Is Mob Programming Exactly?
Mob programming is based upon the concept that many sets of eyes and brains are much better than a single solitary individual when dealing with complex programming problems, and by adding more units, – scaling up focused brain power, you can improve upon pair programming. We all need a fresh set of eyes to catch obvious mistakes, – proofreading that, within the programming world, is addressed by pair programming and continual testing and the role of the testing engineer. As projects scale up and as the codebase gets bigger, things get rather more complex, and as complexity increases the architecture becomes harder to maintain and understand. The effort required for testing also rises exponentially as complexity rises. Dirty coding is not compatible with at scale. Inevitably as the pressures upon the development team increases, patterns of communication around the project change and inevitably efficiency falls as it becomes just too much to handle.
Why Is Mob Programming Increasingly Popular?
The reasons why Mob Programming is increasingly popular is that to some degree it addresses the communication challenges that arise with increased complexity. Where codebase is so complex that a single individual cannot process enough to be efficient. Across all industries software complexity is on the rise as the demands upon it to add features to products that add value for consumers, – this is the new order of things. Concepts such as the Internet of Things and big data are symptoms of this increasing complexity issue for developers.
The weak link here is programmers and their mental capacity, I am not having a go at programmers here but rather the limitations of the humans in general, we are just unable to deal with massive complexity within a high-pressure environment. Mob Programming is not the answer to this business efficiency problem. Mob programming is a way for programmers to destress, decompress and unwind while allowing the creativity to flow and thus potentially resulting in a better product but at an unjustifiable cost when used at anything other than at an occasional brainstorming session.
Mob Programming should be considered similarly to a code review session, but as a weekly team meeting of sorts to address those particularly complex tasks.
How to Deal With Software Complexity?
So no, Mob Programming is not a fad but rather a new weekly meeting to deal with complexity as it arises, to make sure the entire team is on the same page regarding how to deal with the complexity. It is also useful to co-write those particularly tricky complex areas of the application, but what it is not is a way to improve efficiency of individuals working for the most part independently within a team. It does little to help manage complexity and collaboration issues when programmers retreat into their independent workspaces.