Here at Mashion, we pair program a lot. We’ve been iterating through a handful of pairing setups and have finally settled on what I’m happy to call a masterpiece. But first, a little bit about how we got there.
We decided that having a dedicated pairing machine wasn’t practical, partly for price but also because we’d have to maintain another machine and the data on it. Instead, we opted to use our own laptops to power all of our pairing rig iterations. This also makes for a smooth transition from pairing to soloing since you’re able to plug and unplug and the only thing that changes is your screen size.
Originally, we paired side-by-side using a shared single monitor. This worked reasonably well. It’s simple to get started and offers a balanced environment between the two partners. But being off to the side of the monitor is bad ergonomics and having a face-to-face conversation doesn’t work very well. Noticing that your partner is trying to type is also harder and you bump chairs a lot more often than you’d think because both partners tend to lean toward the shared display.
Then we switched to face-to-face pairing on a single desk. This worked better, but since we still only used one display, one coder would be on their laptop. This mismatch was awkward and again not great ergonomics. In exchange, we got good face-to-face discussion, easier non-verbal cues and no chair bumping. Although we did get occasional games of footsie. If you’re setting up pair programming with limited time or resources, I’d definitely go this route first. The desk here is an Ikea Galant, which I’ve seen at a number of offices in the past couple years.
At this point we really wanted to address the environment parity problem. We wanted two monitors, but how could we mirror two displays off of one MacBook? Most solutions to this were expensive and bulky. Thankfully Jason Garber joined the team around this time and had a stroke of genius: Use HDMI splitters which were small, cheap and easy to attach to a laptop. This was the key that let us drive two identical environments off of one standard laptop.
To really put the icing on the cake, we took a cue from Pivotal Labs’ tete-a-tete pairing article and started working on ways to offset the pair to get better communication. The solution that Greg Sterndale came up with was also genius. He noticed out that you can use a Galant extension as a single desk. Put two of these together and you have two individual desks that take up a little less space than the single larger Galant desk. Total win! Also a lot less footsie
Finally we finished it off with easily-movable monitor mounts, wireless input devices and some cable clips to make a pairing rig that’s there when you need it and gets out of the way when you don’t.
This setup is by far our best setup yet. The closer seating makes for easy conversation even when the floor gets busy. Each coder gets their own space which is just big enough to get the job done. Having the monitors mounted on the outside also makes them easy to move aside when splitting off to do some research or other solo task. And we get some epic high-five action when the test suite goes green.