First introduction to mob programming
In June 2015 I attended Agile Roots - a regional agile conference held in Utah that I highly recommend. While there I had the privilege of spending a day at Pluralsight with one of their engineering teams (Allan, Eric and David) doing a team tourism day. It was one of the funnest day’s I have had in my professional career and while at the time I didn’t realize it - I learnt a technique of collaboration that has had a fundamental impact on how I develop software.
So what did we do? In a nutshell, the four of us stood around a large screen (60”) with a single keyboard, working together on a single user story for the entire day. Every ten minutes we would swap who was typing on the keyboard, while those not typing remained engaged in solving the problem by giving their insights. By the end of the day I was thoroughly exhausted but hooked - it was my first introduction to mob programming.
Flow utilization vs. resource utilization
Prior to my day at Pluralsight I had spent a fair amount of my time reading up on flow utilization vs. resource utilization and how these two different views of productivity contrasted in software development. I immediately recognized mob programming as an extreme form of flow utilization. Looking at my day with the Pluralsight team, regardless of who in the ‘mob’ had to quickly pop out for a meeting or a phone call - the most important thing had been worked on continuously for the entire day - the work had just flowed. Not only did work flow, the social aspect of mobbing had made the day extremely fun!
Introducing mobbing at my work place
Having been exposed to mobbing and seeing how it made work flow AND how much fun it was, I decided that I would try and get it embedded into my own team. On my return to South Africa I met with our manager to pitch the idea - fortunately for me, he was amazingly supportive of the idea and gave the thumbs up to do a trial run with two requirements.
1) It had to be an opt in model - nobody in the team should be forced to mob
2) We couldn’t incur any expenses on hardware like screens until we had proven that it was an effective approach
Having gotten the green light from the powers that be, the next week I set up a temporary mobbing station. First, I cleared a small area in our workspace where a small group could stand comfortably. Then I brought my 40” TV with a stand from home and set it up in the middle of the area hooked up to my work pc.
After having the physical layout sorted, I invited two of my colleagues to join me at the mobbing station to work on a problem. As we worked and interacted during the day, other members of the team began to pass by the mobbing station and casually gave their input. Some team members when taking breaks on their own work, would come and stand by the mobbing station to chat and watch what we were doing. It was the most social form of coding I have seen.
After few weeks of ‘mobbing’ as a group we identified additional benefits to mobbing that I had not initially thought of. These included:
1) Collective understanding of the problem (a radically reduced key man dependency)
2) Common coding standard (the mob developed a common style)
3) Extremely effective way of up skilling less experienced developers (we saw a massive jump in skills for newer members)
Making mobbing a daily practice
Having had a positive experience with mobbing during our trial phase, our manager had enough confidence in the technique and enough support from team members to allocate funds to support the practice more formally.
We ordered 2 large 60” screens and a large desk where 4 people could sit comfortably side by side. We then re-organized our office layout to give us enough space so that we had a proper mobbing corner. At the mobbing station we had a 20 port hub installed which allowed us to have various keyboards plugged in that we could swap depending on who was typing (I use an ErgoDox that my colleagues are unable to use). We also began asking the question each day in our daily stand up - “what’s the mob going to work on today?”. Once the most important thing was identified, as a group we would meet at the mobbing station to work on that one thing.
It’s now been almost a year since we first introduced mobbing to the team. It has had a profound impact on how we do work. Over the year we have mobbed every day for about 6 hours a day (I have semi-forgotten what desks are assigned to my colleagues since they are usually at the mobbing station).
Over the year we have seen our mobbing technique evolve. We are less formal about who ‘holds the space’. It has become a natural thing - we lean on the person in the mob that has the deepest knowledge at that particular point in time about the problem we are working on. I’ve also noticed several interesting side effects.
Work in progress limits naturally decrease
For years we have been trying to consciously reduce our work in progress (we know there are real benefits to reduced context switching etc.). In the past we would try techniques like breaking stories up into smaller parts and assigning it to pairs but it had never really worked - while we would push quite hard to try and reduce our work in progress, as a team we would stay roughly around a active work in progress equal to the number of members in the team +-2.
When we began mobbing we stopped worrying about work in progress limits. I don’t remember it ever being discussed or being an issue. One day at stand up after mobbing for a few months I suddenly realized that we had been at a work in progress limit of 1 for about a week without even being conscious about this - this would have been unheard of before! While as a team we don’t always stay at a wip limit of 1 all the time, we are finding with the size team we have we have capacity for one mob, which means our work in progress hovers naturally around one.
Continuity in work when team members are absent
Another interesting effect we have seen is that there is a continuity in our work. Individuals may be absent for periods of time (sick leave, vacations or even meetings), but as a group we generally can keep on working on the ‘most important’ thing all the time. This has meant we deliver maximum value to our organization. As a team that focusses on delivering value this is very important to us.
Making work fun & social
As mentioned previously, mob programming done right is fun. We have found even with the most boring of work we still get to have fun interacting. Waking up each morning and wanting to go to work is important. In having fun I have gotten to know my teammates a lot better than I knew them previously which has also helped me to stay engaged in what I do.
Mentoring less experienced developers
A final item I want to make mention about related to the benefits of mob programming is that it is an extremely effective mentoring technique. In our team we have two relatively new members who are early on in their careers. We have been conscious about growing their skill set, however when we began mobbing we noticed a significant jump in their confidence and ability to contribute to the team as software developers. Simply put, they fed off the more experienced developers picking up techniques and approaches that have taken me years to personally learn and adopt. Mobbing is a really powerful teaching technique.
Time lapse of an average day as a mob
For those that are struggling to visualize how a group of developers can work on one item simultaneously, I’ve recorded a time lapse video of an average day of our mob. I understand this is our implementation of mobbing and that there could be many variations of this technique but this is how we do it.
Where to from here?
We are going to continue experimenting with mobbing. We have a hunch that we can accelerate delivery and grow the team a lot larger than we have previously been able to do using mobbing compared to techniques like pairing and code reviews.
Whether this is in fact possible is still to be seen, we may hit some social boundaries, but it will be an interesting experiment. Who knows, we may finally be able to figure out a way to break Fred Brook’s mythical man month theory.
Till then happy mobbing!