Journeyman: MittMedia

For an excellent writeup in Swedish from the perspective of the MittMedia development team, see Mathias Nylén's blog post.

Satisifed with the last few adjustments to the presentation, I glanced out of the window at the landscape speeding by. What had I actually gotten myself into when I agreed to get on this morning train to Sundsvall and MittMedia? When Mathias Nylén approached me back at Agila Sverige it seemed like a good idea. A few mails later and it was agreed that I would spend a day and a half with his growing team of Ruby developers. As those days got closer, we got back to discussing the what.

Introduce mob programming to the team. Facilitate three mobs. And while at it, pitch Elixir.

Now, I've facilitated simultaneous mobs before, but then it was a matter of having them solve the same problem in Elixir. This time I would get three mobs up and running with not a lot of time at my hands. The week before we had had a short phone call to determine a few good problems to work on and I had provided the usual list of preparations, but still, it would be an interesting challenge to convey the details of how and why. Incidentally, the need for this begot a journeyman's photographic guide to mob programming.


A brief introduction

Upon arrival I met and greeted the development team, shaking more hands and repeating more names than I could immediately memorise. Luckily, mob programming entails writing the names of a mob's members on a whiteboard so I effectively would have cheat sheets the next day when the actual mobbing would commence.

After introducting the concepts of mob programming and answering a few questions, we moved on to the next topic: Elixir. It had been asked of me to talk a little about the language and its ecosystem. While I pontificated that I wasn't trying to sell the language to the team, I apparently did a poor job as several wanted to give it a try on an upcoming hackday.

Nevertheless, for now the main point was giving mob programming a try and as soon as we had finished the introductory talks, the mobs assembled to sketch a few ideas on whiteboards so that they could get a running start the day after.

Preparing

Preparing

Commence mobbing

And a running start they got! When I came into the office the next morning, two mobs were already under way with the third soon following. The displayed eagerness to try something new was truly inspiring and very gratifying.

Previously I have had the luxury of gently introducing the overarching concepts of mob programming followed by gently guiding and suggesting adjustments and experiments given the context of the mob. This time I found myself darting in and out of the three mobs, staying for a rotation or two before moving on to the next in line.

Mob 1

Mob 2

As the day went by, the mob that didn't have to switch conference rooms or mob computers likely got the most done and experienced the best flow. The other two mobs certainly weren't left without learnings and insights though. By the end of the day we had rolling retrospectives on a per-mob basis, starting with the mob that had a participant that had to leave early. The overall feeling was that mob programming had been fun, interesting, and good for learning. Most of the thoughts on what to do differently were centered on how and when to use it in the future rather than completely refute it. At the end of the day at least another session was planned for later in the week. I personally found it very gratifying and heartening to visit a team with so many open-minded souls that freely dove in and gave mob programming an earnest chance.

And with that, just as swiftly as it had begun, it was time to head back home.

Happy mob programmers

Satisfied with the last few notes on the past two days, I glanced out of the window, not really seeing the landscape speeding by out there in the darkness outside the train. It turned out that this tour stop not only had seemed like a good idea. It was a great idea.