Manuel Pérez

Mob Programming

A team programming together in front of large screens in an office; one person types while the others watch and discuss.

Mob Programming is a way of developing software in which a group of professionals work on the same problem, at the same time and in the same environment.

It is a way of working that makes the most of collaboration to create an environment of growth and learning.

Roles

As in Pair Programming, this way of working has two roles:

The Driver role is held by a single person at a time, who follows the directions of the Navigators. The Navigators propose ideas, look up information and guide the Driver.

Separating the two roles reduces the cognitive load of thinking up a solution and implementing it at the same time, which is what we do when we work alone. This way we have more room to think, learn and reach a better result.

Ideally these roles rotate often, to reduce fatigue and change the point of view, which always enriches the sessions.

Another important point is planning those rotations and the breaks. Once the members of the group agree on them, they have to be respected. That is why you need a way to share the code quickly, or else some kind of remote control tool.

Feedback

The great advantage of this methodology is its instant feedback loop: we get immediate feedback on the solution we are implementing, along with better code quality.

On the other hand, we have to watch out for the problems we may run into. One of the most dangerous is groupthink, which stops new ideas from coming up.

Next I will share some interesting ideas I learned from Agile New England in their webinar on 25 June 2020.

Sometimes we run into problems such as one person taking over the whole session because they can come up with lots of ideas, and that is not negative in itself. The problem is that the Mob mindset is about everyone taking part, which is what enriches the session. So sometimes someone needs to take on the role of moderator or facilitator. This person, usually the most experienced, can make the sessions more dynamic so that everyone has a voice.

Another important point is changing roles often. That way every participant is forced to switch mental frame. And if a driver has an idea they want to try out, they give up their seat, become a navigator and guide its implementation.

Having the person with the ideas also act as driver loses part of what makes Mob and Pair Programming valuable. As a rule, the driver is the one who has to make the effort to follow and understand the navigators, and that is how the driver learns.

In general, the driver is the one who learns the most, because in that moment their concentration and commitment to the problem are higher. That is why the seat needs to rotate.

A good practice at the end of every Mob session is a short retrospective on what was learned and suggestions to improve the next sessions.

There are moments when the session is not as productive as we would like, and then it helps if someone takes the role of “navigator of navigators”, suggesting paths and ideas to the navigators to get the session unstuck.

There are also times when two team members suggest two solutions to the same problem. In that case it is best to apply the more junior person’s solution first. This lets us iterate between ideas faster and learn from mistakes.

A great advantage of this kind of practice is the sense of community and tribe that comes from collaborating towards a common goal. It creates a very strong sense of community among the members, in proportion to how committed they are.

If everyone knows how to solve the problem, there is no point in working as a group. The harder a problem is, the more Mob makes sense.

Working in a Mob should be optional. If the team or a person does not want to work in a Mob, there is no point in forcing them. Otherwise the practice would not deliver all its benefits.

Conclusion

Discovering Mob Programming has been a pleasant and unexpected surprise for me. During my training I had always worked alone, and I have to confess that I still find teamwork hard, but I am doing my best to get better at it. I have always felt more comfortable working alone, but that was because I was not really aware of the great advantages of teamwork and the virtuous circle it can create. So my intention is to keep working with Mob Programming and make the most of its strengths.

I recommend visiting https://www.remotemobprogramming.org/ for more information.