Mob programming is software development that focuses on teamwork. It involves several developers working together on the same product.
Pros and cons of mob programming in brief
✔ Uncomplicated training for new team members
✘ Requires time and personnel
✔ Expertise provided by various specialists
✘ Different opinions can lead to disagreements
✔ Shared responsibility
✘ Difficult to implement for remote workers
✔ High-end code
✔ Creative and target-oriented solutions
✔ Tested by a team
What is mob programming?
Mob programming is a relatively new software development method that relies on particularly organized teams. Inspired by agile software development, hierarchical structures that often stand in the way of fast and efficient decision-making are dissolved. The strong focus on collaboration is inspired by other agile software development methods.
Mob programming’s collaborative approach can also be looked at as an advancement of pair programming. While in pair programming developers follow the motto “four eyes are better than two”, in mob programming the team size is increased to five to ten developers.
But there are still more characteristics that make mob programming stand out from traditional teamwork. Instead of working on several computers simultaneously via collaboration tools, like GitHub, in mob programming only one terminal is used. This is often projected onto the wall by a projector for all developers to see. In addition, system components aren’t distributed to individual, possibly specialized developers. Instead, the entire team works on the same code simultaneously. Even the list of requirements catalogs, or the finished software’s testing and deployment are a team effort.
Roles in mob programming
Firstly, team members are assigned different roles, but these roles are by no means static. On the contrary, after a certain period (usually 15 to 30 minutes), roles are switched. In each team there is a driver and several navigators:
- Driver: The driver is the person who ultimately types in the code. The driver puts the concepts and ideas developed in the team into practice.
- Navigator: All other team members are referred to as navigators, who develop the ideas collaboratively.
Depending on the mob programming approach, there may be other roles among the navigators:
A destinated navigator structures the approaches and ideas of others, acting as a mediator, so that the driver doesn’t have to decide between different implementation variants. They often simultaneously assume the role of timekeeper, who ensures that the roles within the team change after a certain period.
In addition, team members can also be researchers. In case of ambiguity or uncertainty, they research and gather information for the entire team. This team may also include people who cannot contribute anything concrete to the development phase, but merely observe the entire process and ask follow-up questions. They are referred to as learners.
Rules of mob programming
The rules of mob programming aren’t defined. Instead, the process depends on the development purpose and team dynamics. Nevertheless, there are guidelines that contribute to successful mob programming.
For example, it makes sense to connect the driver’s computer to a shared, large screen or a projector, so that all team members can follow the code’s status. Physical proximity therefore also plays a role in mob programming: Ideally, the entire team is in the same room as to benefit from direct, personal communication.
The assignment of roles within the team is also an important prerequisite for successful mob programming. In particular, the timekeeper initiating role change, is indispensable. The constant change between roles ensures constant new input.
What are pros and cons of mob programming?
Mob programming has many pros. The mix of experience and expertise between team members ensures creative and goal-oriented software creation. Having said that, mob programming is a great way of gradually introducing new employees to projects. The learner role exists specifically for this purpose and is an integral part of the mob software development model.
In mob programming, the responsibility that comes with developing software is shared, minimizing the pressure on individual developers. Shared formulation of code makes it less error-prone and of higher quality. In addition, joint tests help ensure code quality. Of course, this is also improved by the fact that the entire team works on the same code at the same time; errors that otherwise would arise when software components come together are spotted straight away.
Nevertheless, mob programming also has its cons. The most notable is probably the considerable amount of time and personnel needed to implement the agile approach. Mediating between different opinions on the same issue can also cause problems when programming code. In addition, mob programming doesn’t work as well for remote workers. Although there are approaches to virtual mob programming, direct personal exchange is an important cornerstone of the software development approach.