Why Mob Programming? Here are 5 reasons…

March 23, 2019

First, you developed on your own. Then you paired. Now comes mob programming. Mob programming is an approach where you get your team together around a single workstation to work through a task from beginning to end. Many minds, many perspectives, one keyboard. There is no cost, no expensive training needed. It is simple; it works.

There are three roles: one driver, one navigator, and one-to-many back seat passengers. Everyone rotates through all three roles. The obvious analogy here is that you are driving with friends through a foreign country. The most important role is that of the navigator as she is holding the map and giving direction. The driver is a follower of instructions. The people in the back seat observe, chat, ask questions or offer opinions. Or take a breather! Up to them! > # “For an idea to go from your head into the computer it MUST go through someone else’s hands” > # Llewellyn Falco

So why bother? Well, there are many challenges to having a successful software team. Most relate to people, not technology. Getting a group to work happily together, all the while learning and growing and delivering is no small effort. Below I describe how mob programming can make this process easier, helping the team to align, communicate, and collaborate better with each other.

Navigate!Photo by Tabea Damm on Unsplash

Limiting your Work in Progress

Work in Progress (WIP) is a key measure for any Lean team. The lower the teams WIP, the higher the teams’ throughput. 

l = λw

Little’s Law

We all know this. We strive to keep it low. But entropy kicks in. A few bugs later, a couple of urgent requests and you have a disjointed team with no focus.  

Mob programming is a great technique to pull everyone together again. The team must come together and: 1. Make the tough decision on what task is highest priority 2. Mob until it is complete 3. Repeat

Your WIP is all of a sudden at one, with your team aligned and delivering on what is most important to them.

Onboarding new team members

It is tough joining a new team. It takes time getting to know each teammate. What are they into? How do they work? What is their personality? It is a minefield. Then you watch how they interact with each other, which is a whole other level of complexity. > # Onboarding, or organisational socialisation, is the process through which new employees move from being organisational outsiders to becoming organisational insiders. > # Bauer and Erdogan

This takes months if everyone is off doing their own thing. Pair programming, induction meetings and documentation help speed up this process. But if you want to move forward fast, then mobbing is a great idea. You observe so much.   From the navigatior: * Does he shout instructions at the driver without pausing for breath?  * Does she seek input and involve the rest of the group?

From the driver:  * Does she use her keyboard shortcuts?  * Does she get frustrated with a less experienced navigator?

From the team: * Do they apply TDD, DRY (insert other coding acronyms here…)?  * Is their style strict or loose?  * Do they joke a lot or are they more reserved?  * Do they adopt a questioning or telling approach? 

This works in the other direction, too. Your new team mates get to know your strengths and style too. This all has a massive bonding effect. With the mob rolling on, soon it will seem like you were always part of the team.

Feedback

Giving feedback is tricky. Even with the upmost skill, you can still get defensive or negative reaction. People shy away from open feedback on teams that kills the growth of that team.

Mobbing is a social activity. The driver takes instruction from the rest of the team. This means that someone is always talking, asking a question, or verbalising an idea. It puts people in the right open mindset to give and receive feedback.

A good navigating style is the key to this dynamic. When it comes time for you to navigate adopt a questioning rather than telling approach. Focus on open-ended questions. “What could go wrong if we tried this?”. Remember to invite feedback. “What could we do different here?”, “How could we do that faster the next time?”. This sets a tone that others will follow. Some team members can be more introverted or anxious than others. But when you engage others with openness and trust, they will take on this behaviour as a model for their own behaviour.

As each team member rotates through the 3 roles in the mob:

  1. Driving (listening)

  2. Navigating (questioning)

  3. Back seat passenger (observing/reflecting)

The collective self-awareness of the team will increase. Growth and performance will take off as a consequence.

Cross Functional Teams

Gone are the days when engineers build products in isolation. Cross-functional teams are now the norm.

Cross-functional teams have become ubiquitous because companies need to speed innovations to market, and they’re essential for connecting the right people across an organization.

Putting people of different backgrounds and experience together and hoping it will all work out is not enough. Without a conscious effort, people will drift back to those individual roles in which they are most comfortable. Working on mutually exclusive tasks defeats the purpose of having cross-functional team in the first place!

Mobbing is great to bring people together. Take a recent example I had was where my team had a shared goal with our SRE team. Rather than an asynchronous back and forth for weeks via JIRA, we grabbed a TV and a space and started to work. Each discipline brought its own viewpoints and strengths. We formed a shared understanding of the task and an appreciation of the value the various members brought.

Another benefit is that there are no prerequisites. You need not code. All you need is to type and ask questions! So the next time someone in Product, or perhaps Support, comes to your team with a problem, don’t tell them you’ll get back to them when you have it sorted. Invite them to sit with the team and work with and solve it together. I bet it will surprise you both what you will learn from each other.

Staleness

Teams can get stuck in a rut. Fall into mindless patterns. Have your planning meeting, do your stand-ups, burn through your tasks and your enthusiasm. > # “A change is as good as a rest”

Not feeling the energy? Then change things up with some mobbing! Get hands on with a tech or task that you have little experience in. You might end up teaching your teammates something new. Or learning something about them. It can be very spontaneous and fresh and bring some lift into your week.

So try it…

If you are curious about mob programming, I urge you to give it a go and see how you find it. You will learn more about your team in a few hours than in weeks of the normal day-to-day work and one-to-one meetings.

You will see beyond preconceptions and stereotypes. It will help with team alignment and team spirit.you will gain empathy. Your team gets to know you too.

The mob keeps rolling through the day, everyone gets their turn and their say. You will see levels of understanding, communication and collaboration rise and you will emerge a happier, smarter and more productive unit because of it.