Mob programming is a software development approach where the whole team works on the same thing, at the same time, in the same space, and at the same computer. This is similar to pair programming where two people sit at the same computer and collaborate on the same code at the same time.
A lot of things are being said on the benefits of mob programming and in my opinion they are probably all true. Given a team with similar values and individuals with the ability to put aside their personal preferences in order to move forward* you’ll see interesting results when you adopt it. Sure, you might feel you’re going slower but you’re being the turtle, not the hare.
I’m not going to dive into the benefits, plenty of people do that. I just want to present my team’s set up for remote mob programming. We’ve had one person permanently remote for the past 3 months and I sometimes call in from home as well. Our team is The Perfect Size of 4.
We’ve got a mob station which is an adjustable standing desk, one stationary computer with two monitors, a really good microphone, a headphone splitter, one keyboard and one mouse.
Having an adjustable desk means that you can switch between sitting and standing. If you have tried standing at work, you’ll know that you’re feeling more awake and that after a while your back will be stronger. We’re happy to have the option to stand while we’re working.
The monitors are mirroring each other so that it’s easier for everyone to see regardless of where you are standing around the table. There is less of a need to have a huge font size and some programs don’t even give you the option to increase the font size on the menus so having the monitor closer makes it a bit easier.
We use Teamviewer to share our mob station’s screen and it also lets the remote party have control of the mouse and keyboard. This makes for seamless rotation when switching driver. When you’re the one remote, it’s almost as typing live.
The audio hardware
Our microphone is a Blue Yeti which is a good quality usb microphone. It has a recording pattern which picks up sound primarily from the front of the microphone (and not all the way around) which helps a bit when you’re remote and the rest of the office is chatty.
We used to not use headphones but because of sound quality we would crank up the volume on the speakers to hear the remote party properly and that would disturb the rest of the office. So we wanted to switch to headphones.
In order to do so we started using a headphone splitter which allows us to connect up to five people to the same computer.
The Blue Yeti offers the ability to hook your headphones into the microphone which means that you can hear yourself speak as well.
This is very important because if you’re three people around a table all wearing good headphones, you actually won’t hear what the two others next to you are saying. You’ll only hear the remote party. By hooking in your headphone splitter into the microphone, you’ll hear everyone equally well.
To get this to work, make sure that the Yeti is both the recording device and the audio output in your call settings.
The audio software
Being a .Net shop we’ve switched from Slack to Microsoft Teams :O
It’s working well for us and we create a Teams meeting whenever someone uses the mob station and remote people can join the meeting if they want. It’s basically Skype but embedded in Teams and it does its job.
It’s taken us some time to find our set up. We started off with working on someone’s machine and each day had a bit of set up time to get things correct. The microphone had to be moved around, etc. Getting the headphone splitter made a huge difference for us (and the office) and getting the mob station also made a big impact.
By now, getting started is quick and easy and being remote for whatever reason isn’t an obstacle for team work.
PS. The Cucumber team is another remote team doing mob programming, here’s a article about their set up: https://cucumber.io/blog/2015/12/21/the-mob-rules-ok
* in one team the first conflict to arise was “-that’s not way you write nice code! – yes, it is! – no, it isn’t! – yes it is!” kindergarten style… and no one budged.