Today I tweeted this, rather polemic, tweet about mob programming:
I think mob programming is torture. Don't @ me.— Kolja (@dumdidum) August 14, 2021
One reply asked me to explain why and replied with a couple of thoughts on it. This post sums them up once more and adds more details.
But first a little disclaimer: This is my personal view based on personal experience and how I feel about mob programming. I’m not saying mob programming, in general, shouldn’t be done or is useless. What I’m saying is: it’s not for me.
Let’s jump into the reasons why I don’t like it.
Creating code is one of the last steps in how I approach problems. Programming is the manual labor that I need to do to transition an abstract solution to a problem into something that can be executed as software.
Think of it as going on a road trip with friends. Before you go on a road-trip you make some sort of plan. You try to understand which places you want to visit, you might plan the order in which you visit them, and depending on how familiar you are with the area you might even plan parts of the route on Google Maps. Of course, this plan is influenced by your previous experience in driving. You might prefer a certain route because you previously experienced traffic jams on another. All this planning happens together with your friends because everyone wants to understand what the road trip is about. But none of this involves actual driving.
Then there is a road trip itself where you then drive. Which is a pretty unexciting task most of the time. You don’t need all your friends to drive the car and you most certainly don’t want all three manipulating the steering wheel. What you do is follow the plan.
During the road trip, you might encounter unforeseen problems. Some of them you solve yourself, taking a detour because of construction or avoiding a traffic jam. None of these problems compromise the overall plan.
And then there are the problems you don’t solve alone. The car breaks down or you can’t make it to a certain destination because of a natural disaster. That is where you consult your friends and change plans for the road trip together.
For me creating code is the actual driving. I don’t need help to drive if I understand what the goal of the road trip is.
OK let’s get more concrete: The interesting part, understanding the problem and finding an abstract solution to it, that’s what works awesome in a group. Where in a safe environment you challenge each other’s ideas and understanding to get to a better solution. But that doesn’t happen in code. For me, as an introvert, these sessions consume lots of energy but are usually worth it. Over the years I have created my own toolbox to deal with these situations. How to behave to not offend others, and to have a respectful competition of ideas. I enjoy a healthy dose of conflict in these sessions as long as they advance the discussion and understanding.
I think it’s obvious that to me social interaction in a group consumes lots of energy. The energy I would like to put towards “getting stuff done” when I create code. When I write code I want to ignore I want to disconnect from my environment as best as I can to get into a state of flow.
Everyone has their own creative process to turn an abstract solution to a problem into the implementation of that solution in code. I want to work my own terms and not on the ones decided by a committee.
And finally, I learn from my own failures, not from somebody else’s. Programming is largely “try and error” for me. I avoid the errors I did in the past, make new ones and learn from them. I don’t learn if I don’t fail.
That said, exactly that causes a conflict for me when being with others. I can try to intervene in an unfolding mistake and take away the chance to learn for the person doing it. Or I can watch a car accident unfold which I could prevent. Both feel wrong.
All in all, I would say for me personally the trade-off isn’t worth it. Being a smart input device sucks for me, having to verbalize what somebody else should input feels utterly inefficient.
If mob programming is something that works for you and you enjoy it. I’m not trying to convince you otherwise. It’s a tool and as with tools they work for some and don’t work for others.
If you liked the content consider subscribing to the email newsletter below. The newsletter delivers all posts directly into your inbox. For feedback on the topic feel free to reach out to me. You can find me on Twitter @dumdidum or write a mail to email@example.com.