Mob pro­gram­ming is software de­vel­op­ment that focuses on teamwork. It involves several de­vel­op­ers working together on the same product.

Pros and cons of mob pro­gram­ming in brief

Pros Cons
Un­com­pli­cat­ed training for new team members Requires time and personnel
Expertise provided by various spe­cial­ists Different opinions can lead to dis­agree­ments
Shared re­spon­si­bil­i­ty Difficult to implement for remote workers
High-end code  
Creative and target-oriented solutions  
Tested by a team  

What is mob pro­gram­ming?

Mob pro­gram­ming is a rel­a­tive­ly new software de­vel­op­ment method that relies on par­tic­u­lar­ly organised teams. Inspired by agile software de­vel­op­ment, hi­er­ar­chi­cal struc­tures that often stand in the way of fast and efficient decision-making are dissolved. The strong focus on col­lab­o­ra­tion is inspired by other agile software de­vel­op­ment methods.

Mob pro­gram­ming’s col­lab­o­ra­tive approach can also be looked at as an ad­vance­ment of pair pro­gram­ming. While in pair pro­gram­ming de­vel­op­ers follow the motto “four eyes are better than two”, in mob pro­gram­ming the team size is increased to five to ten de­vel­op­ers.

But there are still more char­ac­ter­is­tics that make mob pro­gram­ming stand out from tra­di­tion­al teamwork. Instead of working on several computers si­mul­ta­ne­ous­ly via col­lab­o­ra­tion tools, like GitHub, in mob pro­gram­ming only one terminal is used. This is often projected onto the wall by a projector for all de­vel­op­ers to see. In addition, system com­po­nents aren’t dis­trib­uted to in­di­vid­ual, possibly spe­cial­ized de­vel­op­ers. Instead, the entire team works on the same code si­mul­ta­ne­ous­ly. Even the list of re­quire­ments catalogs, or the finished software’s testing and de­ploy­ment are a team effort.

Roles in mob pro­gram­ming

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 nav­i­ga­tors:

  • Driver: The driver is the person who ul­ti­mate­ly 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 nav­i­ga­tors, who develop the ideas col­lab­o­ra­tive­ly.

Depending on the mob pro­gram­ming approach, there may be other roles among the nav­i­ga­tors:

A des­ti­nat­ed navigator struc­tures the ap­proach­es and ideas of others, acting as a mediator, so that the driver doesn’t have to decide between different im­ple­men­ta­tion variants. They often si­mul­ta­ne­ous­ly assume the role of time­keep­er, who ensures that the roles within the team change after a certain period.

In addition, team members can also be res­earchers. In case of ambiguity or un­cer­tain­ty, they research and gather in­for­ma­tion for the entire team. This team may also include people who cannot con­tribute anything concrete to the de­vel­op­ment phase, but merely observe the entire process and ask follow-up questions. They are referred to as learners.

Rules of mob pro­gram­ming

The rules of mob pro­gram­ming aren’t defined. Instead, the process depends on the de­vel­op­ment purpose and team dynamics. Nev­er­the­less, there are guide­lines that con­tribute to suc­cess­ful mob pro­gram­ming.

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 pro­gram­ming: Ideally, the entire team is in the same room as to benefit from direct, personal com­mu­ni­ca­tion.

The as­sign­ment of roles within the team is also an important pre­req­ui­site for suc­cess­ful mob pro­gram­ming. In par­tic­u­lar, the time­keep­er ini­ti­at­ing role change, is in­dis­pens­able. The constant change between roles ensures constant new input.

What are pros and cons of mob pro­gram­ming?

Mob pro­gram­ming has many pros. The mix of ex­pe­ri­ence and expertise between team members ensures creative and goal-oriented software creation. Having said that, mob pro­gram­ming is a great way of gradually in­tro­duc­ing new employees to projects. The learner role exists specif­i­cal­ly for this purpose and is an integral part of the mob software de­vel­op­ment model.

In mob pro­gram­ming, the re­spon­si­bil­i­ty that comes with de­vel­op­ing software is shared, min­i­miz­ing the pressure on in­di­vid­ual de­vel­op­ers. Shared for­mu­la­tion 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 com­po­nents come together are spotted straight away.

Nev­er­the­less, mob pro­gram­ming also has its cons. The most notable is probably the con­sid­er­able amount of time and personnel needed to implement the agile approach. Mediating between different opinions on the same issue can also cause problems when pro­gram­ming code. In addition, mob pro­gram­ming doesn’t work as well for remote workers. Although there are ap­proach­es to virtual mob pro­gram­ming, direct personal exchange is an important cor­ner­stone of the software de­vel­op­ment approach.

Go to Main Menu