The PairMaster 3000
Those that know and work with me know that I’m an advocate of collaborative programming techniques. Mobbing or pairing are fantastic for teams for numerous reasons that I won’t go into for this writing. This is about a pairing station setup that I’ve been refining and updating for over a decade and have finally taken the time to document. This setup has evolved from my work with many different teams that pair program almost exclusively, 80+% of the time. This setup combines the feeling of desk space “ownership”, leverage the power of dynamic teaming and of course pair programming.
I consider this as my current standard and hasn’t changed much over the last few years. Suffice to say that standard is always evolving as I discover new technology and techniques I run experiments and try out new things. This setup stands on the shoulders of everyone who I have worked with in the past as well as books, blogs and videos that have influenced me on my Code Crafter journey. I would like to highlight some key influences: the book Pair Programming Illuminated, a blog Mechanics of Good Pairing, a video Spooning by Bitbucket, and the paper by Laurie Williams and Alistair Cockburn “The Costs and Benefits of Pair Programming”.
In this section I’ll detail specific parts that I used for this setup. For all the parts I’ll describe the intent behind (timeless) them and in most cases will give a link (dated) to an example of what I am describing. As can happen with the internet, the links may break over time, but the intent behind the parts will remain relevant. Please substitute as necessary or to suit your needs. If you come up with something that adds to this setup, please leave me a comment. I’m always looking for ways to improve!
Overall the workstation itself is a stand-alone dev station that can mate up with at least one other workstation of similar setup. When disconnecting and setting up the amount of manual plug-in/out should be kept to a minimum. When pairing with someone you should need wheel your desk over, plug into power, plug in their video or your video and connect keyboard/mouse. When you come into work you should have one unified plug for your laptop or a docking station. Overall, the system has one unified plug to provide all power to the station, one video input connection, two video outputs and multi-channel Bluetooth peripherals for keyboard/mouse input.
Everything about this desk is that it’s a small, mobile and self-contained station for development. It is a space that has common interface portions, chalk full of nuanced conveniences and a small bit of space for individuals to customize and make their own.
At its foundation it’s a narrow sit/stand desk. I have tried 30” and 34” versions in this configuration and whereas the extra 4” can be nice, I like the intimacy that 30” offers and helps to keep the clutter down on the desk. Anything wider than 34” is just too much. We opted for the deluxe version with power and memory presets but could easily be crank or no memory options. (Jarvis Desks)
It also has features that include minor storage and provide convenience. Since this is a mobile station there needs to be consideration for it to be able to provide storage for common personal items. The desk has wheels, wire hooks, (magnetic is what we used), an attached swivel tray, and cable management tray. Wheels because this desk is meant to move around to facilitate dynamic re-teaming and promiscuous pairing. Two hooks, one for a bag and the other for jacket. The swivel tray may seem minor, however, it’s where you keep your Post-It notes and we all know we can’t do Agile without Post-It notes. The cable management tray isn’t completely necessary but does provide general support for wiring.
There also needs to be either an articulated monitor arm or a monitor post with fixed position high enough so the laptop screen can be used as a non-mirrored connection. This is key, because both host and visitor can do non-shared screen work for spikes, internet research and/or answering emails when on break.
Power is supplied by a multi-plug power supply that we’ve zip-tied to a non-moving leg sleeve of the desk. We for this setup we used five plugs, two of which had a transformer brick. Having a 6’ (2m) cord is what we recommend. In our setup the power strip slid a little, so we used some white packing foam that came with the desk to provide more friction and firm up the placement.
Included with power is a dedicated power supply or docking station for the laptop. This setup supports a MacBook so we have an 87W power supply connected to a USB Type-C adapter with USB, HDMI and pass-through power. This adapter also has Gig Ethernet, which we are not using but could.
Attached to the side is another small convenience, a multi-port USB smart charger. This provides us a lot of options for charging anything USB from our own phones, mice, keyboards or other USB power devices we might need during the course of our development. (Anker 6-Port)
This system needs to be able to output at least two video signals and receive at least two different video signals hence the HDMI Splitter and HDMI Switch. The splitter we used was HDMI that could split a 4K signal into 4. Fairly straight forward. We went with a three signal 4K HDMI switch to manage our video inputs. Essentially you need to be able to push out a video signal to your own monitor as well as your pair’s monitor. Conversely, you need to be able to switch and receive a signal from your pair on your monitor. All signals in our system are 4K HDMI. I’ll go into why 4K when I talk about the monitor.
Cabling can be however you want, we opted to play with color coding things. Everything internal to the desk was black. External video signal out was a colored cable. One system has red, and the other desk has blue. If I’m driving the pair with my partner, they will plug in my red cable into their switch, select input #2 and view my signal. If my pairing partner wants to drive, we plug in their blue HDMI cable to my switch and I switch it to #2 and see their screen.
These desks have effective space for one monitor, not to mention cabling/input management for two monitors gets messy. For our setups we favor one 28-32” 4K monitor. 28” feels too small and 32” feels a little too big and no one currently makes a 30” 4K monitor. We opt to err on the side of a larger. Monitor resolution pays for itself in productivity. 4K is the equivalent of 4 HD monitors at about half the price. Another possibility is using a wide curving monitor; however, this can have a detrimental effect on pairing formation.
I’ve played around with KVMs and inverse KVMs for input, which very quickly complicate the cabling and make headaches happen. Thankfully Bluetooth devices are currently trending to support multiple pairings. As an experiment we opted to get two sets of two keyboards and two mice. All Bluetooth and able to support up to three pairings. We quickly discovered that we could make do with only one keyboard and mouse per station and just pair the visitor’s keyboard and mouse with the hosting computer. Brand doesn’t matter, but we do know that Logitech makes quality products and supports binding to multiple computers.
We are talking pairing, what’s with the headset. We pair in person when we can. We also pair remotely when we can’t pair in person. USB headset is a nice to have and fits with the general philosophy of keeping plugs into laptop to a minimum.
Miscellaneous Odds and Ends:
Two-inch metal binder clips are super handy to help with cabling or offering hooks to hang headphones.
Double sided tape comes in helpful to permanently affix things to the desk, as seen with the HDMI Splitter to the Cable Management Tray.
Zip-ties to attach other parts to the frame such as the multi-port USB power supply and the 12-port power-strip.
Velcro cable ties are handy for general cable management and making things tidy.
Assemble the desk as per instructions.
Add swivel drawer and up/down desk control.
Affix the monitor arm, cable management tray and power strip as per your desk’s configuration.
Unpack and attach the HDMI Splitter, HDMI Switch and USB Type-C Adapter.
Shorter black cables.
Attach one as primary output on the HDMI Splitter (generally output #1) to one input on the HDMI Switch (generally input #1) for inner desk video.
Attach another from the USB Type-C adapter HDMI output to the HDMI Splitter input.
Longer color-coded HDMI cable/s connect to HDMI Splitter inputs and used for external visitors’ video.
Attach the multi-port USB power supply.
Add/connect notebook on-desk power supply or docking station.
Unpack keyboards and mice, pair them with your system.
Install arm plate to monitor, affix to arm and insert 4K HDMI switch output to monitor input.
Connect Laptop to power/video connection.
Turn on power to Bluetooth keyboard and mouse.
Connect Driver Video HDMI Cable to Visitor Cable Switch.
Select appropriate input source on Visitor Cable Switch.
Connect (activate and/or pair) Visitor Bluetooth keyboard and mouse to Driver computer.
So, we’ve been talking about this nifty and neat desk and seen it assembled. How can we use it? As described in the Mechanics of Good Pairing blog post, there are a number of different configurations now open to you with a pair of desks like this.
You could have these desks paired one in front of the other so that one person’s back (desk A) is next to the other pairing desk (desk B) so that Person B is looking at the back of Person A’s head. This is not pairing, and this is someone back-seat driving and generally annoying. I really don’t know why, with this setup, you’d configure this, but you could.
This is the most traditional version of pair programming, the defacto standard. This type of pairing is ok and the way that I’ve done a vast majority of my pairing. You get collaboration and it’s easy to point at your pair’s screen to things. It’s not perfect, though. After a day of pairing if you aren’t careful, you will have a crick in your neck from always turning to look at your partner. It’s working next to someone.
This is my new favorite type of pair programming. You are facing each other with a slight stagger. You can make eye contact with the other person and it feels like you are having a conversation with the person rather than speaking with someone just listening. Feels like a richer interaction and more rewarding. Pointing at the screen definitely does not work here, but you quickly learn to point with the mouse or line numbers.
I like the traditional version of Mobbing where there is one monitor, keyboard and mouse that everyone is focused on and working with. However, with these desks, you have an opportunity to try some new ways to Mob. You could form a triangle (with the back of the monitors/desk facing each other forming an empty triangle) for three people or a clover shape (again the backs of the monitors/desks forming an empty inner square) for four people to connect up and collaborate. With the setup outlined above you can do three people. The current configuration can handle video display for the clover configuration, but another keyboard and mouse need to be added if everyone is going to provide full input.
There you have it, the PairMaster 3000.
 This works for a collaboration of two and can also work for groups of more. The setup outlined provides video output for four, video input for up to three and peripherals input for three.
 Current setup actually has three total inputs, but only two are used.