The development division of cm4all has been using the agile approach successfully for quite some time now. But you never stop learning the process. And sometimes you stumble on something really useful without knowing that there’s already a name attached to it. So, this is my very un-scientific report about what "Mob Programming" means to our team.
Because developers in our company are organized in scrum teams, the team members share an office. This allows us to communicate with each other by simply speaking out loud. Often this works much better than e-mail (but what could possibly work worse than e-mail? Just kidding.) Sometimes, though, you need to stand up and walk over to your fellow team member and take a look at their screen. In time, the whole team is gathered around one single monitor, and you realize this does not work well. Especially if you feel the itch to work in parallel with your colleague on the same task at your own desktop.
It was on one of these occasions when a team member had had enough. He walked into one of the conference rooms, hijacked the digital projector and connected it to his machine. Suddenly, the team was watching him work on the big screen, making helpful comments and simultaneously working away on their own keyboards. The rather tedious task we were assigned to do just vanished.
Things went quickly from there. We soon got our very own projector and started to work this way very frequently. It was some time later that we learned from a colleague from the team next door that there is a word for this: it’s called "Mob Programming". We developed our own style of doing this and we really like it this way. We take some pride in the fact that the other teams saw what we did, liked what they saw and all added a digital projector as their trusted, new team member.
From our hands-on experience, I can say that from the outside it may sometimes look like just one guy is working, while the others are slacking. But that’s not the case. Depending on the task, we have been very productive using this method, not to mention that we automatically share our knowledge. It’s not like the projector is turned on all day, but a couple of times a week, someone gets up and turns the thing on in order to solve a problem at hand together with the team. For this to work, the projector needs to be permanently installed, the big screen needs to be viewable from every workplace in the room, and the projector needs to be networked as an extension of the team’s desktops, eliminating the need to switch cables. If you first need to get up and fiddle with hardware, you may not do it. The social aspect is interesting: The colleague on the keyboard and screen may experience a loud and very impatient team member in the audience who's shouting "good" advice with a know-it-all attitude. Actually, that would be me. Sorry, Team!
We never really looked up the "best practice" way of doing "Mob Programming," since we are very happy with the way this works for us. But as I stated at the beginning, you never stop learning the process, and there is always room for improvement. We will continue to see whether we can improve our way of doing things. And eventually we may stumble upon something even more useful.