Mob programming is an emerging agile development approach for creating software. The whole development team gets in a room and works together on the same problem, at the same time, on a single computer.
I spent a full week doing mob programming with my current team and I’d like to share my impressions and experience.
1. Improve team spirit
The first and most important thing is how it made me feel. Having the entire team working towards the same problem at the same time gave me a fantastic feeling of being part of that team. I felt connected with every team member and I learnt more about them personally and professionally. I also enjoyed the discussions and the debates, as well as celebrating little wins like working together to make a test pass. I even enjoyed the shared frustration when things didn’t turn out as expected and we banged our heads against the wall.
From my limited experience, I think this is certainly the biggest advantage of mob programming.
Another very important benefit is focus. There is no space for procrastination, checking emails, going on Slack, or doing any other kind of shallow work. It’s also less likely you’ll be using your phone. Being together, focused on a single task, helps to stay in the zone and make progress towards a common goal. Regardless of how much you produce, you feel a great sense of accomplishment at the end. You know you worked hard, and you know the whole team worked hard with you.
3. Stimulate interesting discussions
Interesting discussions can emerge during a mob programming session. Some might not be related to the work at hand, some might be diversions on how to use a feature of the language or what’s the best way to organize something. Those discussions are useful to relax a bit and help to learn about your team members. The focused nature of mob programming also stops digressions going on for too long as there is always someone who will help to get back on track. Of course, the discussion might carry on at lunch.
4. More discipline and quality
Writing code with all the team watching at you can be intimidating at first. We found it useful to adopt the driver/navigator approach where the person at the computer gets told what to do by the rest of the team. A lots of interesting things happens at this stage. You have thought-provoking discussions about design, code quality, naming. You talk about keyboard shortcuts, how to do things, what tools to use and so on. The final code and design tend to be better because it’s the result of many minds combined. You also learn a lot along the way about different ways of thinking and coding. I strongly believe everyone can benefit from this sort of approach. The brainstorming effect is formidable. You can use the whiteboard to think deeply about possible paths or techniques to take that it is simply impossible to do individually. It’s amazing.
5. You learn a lot
Mob programming is the ultimate learning experience. You learn by doing. You learn from others. You learn new tips about coding and design, new ways of approaching a problem, new tools, new practices, new processes and so many things. It’s a constant knowledge-sharing experience.
6. More willingness to experiment
It’s my impression that mob programming helps the team to be more courageous, to experiment more with the code to find better solutions and to quickly identify problems that need to be fixed. It’s more likely the team will push harder to solve a problem than doing it individually. On the other hand, it’s also more likely the team will stop you wasting time if it’s clear your solution will not work. It can be difficult not to take it personally, but the simple fact that you need to convince the team your approach might work helps to find the best approach. During the week, we did a lot of experiments, some failed and some worked, we identified bottlenecks and things that could be improved. Mob programming definitely helps to experiment more.
7. It’s hard work
Mob programming is mentally exhausting. It’s hard work. The focused nature, the constant discussions with people, the attention required to listen, following instructions and learning new things every day can be overwhelming. We quickly found we had to stop after more than five hours together, so we did two hours in the morning and three hours in the afternoon.
8. Room setup is important
I believe that the room setup is very important for mob programming. We used a single projector with a low resolution and I constantly missed my three-screen setup on my desk. If we decide to carry on with mob programming, we all agreed that a setup with two high-resolution projectors is required in order to have a better experience. Having a few separate laptops can also be useful to carry on some relevant research.
9. An emotionally safe environment is a must
A mobbing session will probably expose team issues or interpersonal problems. The good news is that the presence of the entire team helps in resolving small conflicts, and it’s likely a facilitator role will emerge during a heated conflict of opinions. We only had one small conflict during the week and I think it was resolved nicely. Respecting and treating everyone well is a prerequisite in order to be able to have successful mobbing sessions although healthy conflicts are a good thing! Mob programming can help to identify people/team issues more quickly and make the team more effective. It’s important that everyone in the team can feel safe to express their emotions and opinions. Everyone will benefit from it and I strongly believe it’s a must to create a highly effective team.
My first impression of mob programming was very positive. It’s tiring and demanding but very rewarding. I love interacting with people and learning from others so I’m not surprised I like it. The feeling of achievement, the focus, the constant learning and the increased discipline in doing a great job are the main reasons.
If you’ve never tried mob programming before, I certainly recommend you give it a try. I’m sure you’ll learn something new about you and your team. Obviously, it’s too early to come to conclusions, so my observations are only initial impressions. I’ll share more in the future if my team decide to use mob programming again.