Masha Reko - Apprenticeship Blog

What we have to learn to do, we learn by doing. (Aristotle)

Day 14: Going the Distance

One thing I love the most about this apprenticeship is the fact that I get to do something I’ve never done before literally every day. It is so great to have your comfort zone challenged on a regular basis. It simply never gets boring. Actually, if I say that trying new things became a routine of mine, that will not be an oxymoron. As weird as it sounds, it actually makes sense.

In that spirit, today I had my first encounter with Mob Programming.

Mob Programming is an approach to development where a group of people works on the same task, in the same room, and on the same computer. One person is always typing, while others are giving suggestions. Once the timer goes off (usually after a couple of minutes), the computer goes to the next person. It’s kind of like pair programming, but with many more eyes checking what you write, and many more voices giving you ideas on what to do.

For our first session, my fellow apprentices and me chose to do a Mars Rover kata in Scala, and I absolutely loved it. True, we didn’t accomplish much for the 50 minutes, but I had so much fun that I wished it lasted way longer. Things that would make me fume with rage while developing alone (such as random IDE errors that show up for no reason, and then disappear - again, for no reason), actually made the session more enjoyable. We laughed so much trying to figure out how to go about the problem at hand. And I think we learned a lot about each other, too. All in all, it was a great experience that I hope to repeat again soon.

After we were done with it, I took a couple of minutes to reflect and think about the benefits that Mob Programming brings to the table. Honestly, as fun as it was, I’m not sure if Mob Programming has a place in development for production. I feel like having so many people on the same task can create as many problems as it solves. Individual development is just way faster, and perhaps even cleaner. Sometimes having a single, solid idea that you stick to consistently, is better than having many, perhaps contradicting ones. A hundred people have a hundred opinions, and when faced with that many choices it is so easy to get lost.

With that said, I by no means think that Mob Programming doesn’t have a place in a company setting. It might be less productive and somethimes even chaotic, but I’m pretty sure that its purpose actually lies somewhere else.

Mob Programming helps a team to bond.

It improves communication and collaboration, and brings a team closer by putting its members in a completely no-judgement setting. Nobody is going to blame you if you make a mistake. Nobody is going to laugh if you don’t know something. The whole point of Mob Programming is helping each other; making up for what others lack, and having others make up for what you lack. It is about understanding that we are all in this together, and that no one will make it to the finish line, unless we all do.

Maybe I’ll change my opinion after some time, but my first impression is that Mob Programming is not so much about results that are visible, such as increasing productivity, or the quality of code, or what have you. It’s benefits are much more deeper than that. It creates a sense of security and trust in your teammates, and helps the team focus on a common goal. Long-term, that certainly must have an impact.

Besides, you know how they say: if you want to go fast, go alone.

But if you want to go far, go together.