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, – proof reading if you will, 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. This is typically when the codebase is so complex that a single individual cannot process enough to be efficient. In this situation Mob programming can be of use.
Across all industries software complexity is on the rise, increasingly industry is relying 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 solve problems (inefficiently) resulting in a better product but at an unjustifiable cost when used as anything other than at an occasional brainstorming session.
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 (assuming located in the same building), 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.
This day to day management of thousands of co-dependent artifacts must be solved with the use of software development tools, a collaboration tool that is not dependent upon the developer in question to be working in that particular position (*what if this individual decides to quit or is sick?).
Therefore complete traceability and transparency on all artifacts and their dependencies through all stages of development is required, it is also essential for standards auditing. This is only available within an integrated development environment provided by Agile Application Lifecycle Management Software (Agile ALM Software) such as codeBeamer ALM.