Few programming tools and workflows are as productive and live changing as pair programming. I work as a freelancer for Ruby on Rails, Phoenix and WebPerformance. That means that I have to change work environments very often. I work with very different companies and teams. Some of them use pair programming or let’s say they use a little bit of pair programming. But some of them do it right and it is breathtaking to see what difference a good setup makes. In this post I’d like to share that knowledge.
Pair programming doesn’t work if you share one laptop with two keyboards. It’s a childish way to tackle the problem. You need a proper setup. Get two monitors, two keyboards and two mice. Set the monitors up in a way that they’ll mirror each others content. The keyboards and mice have to work parallel (no switch which has to be turned to active one side). It can be done with any major operating system.
And sit across of each other. The monitors are back to back. You want to look the other person in the face while discussing something. You want to see his/her reaction while they watch you coding.
A pairing user account and setup
Take some time to decide which software and setup you are using while pair programming. Both parties should feel comfortable with the used editor, IDE and debugging tool. No need to fight vim vs. emacs during a pairing session. It’s a waste of working time. Use the one which is OK for both (maybe that’s Atom).
If you want to pair properly you should create an own pairing account on the pairing computer. Don’t use your personal account where a new email pops up every 5 minutes.
You can fiddle around in your .bashrc all day long on your personal account but not on the pairing account which gets used by the whole team.
A separate desk
Have a pairing station which only gets used for pairing. Thereby the mind can change context when you go to that desk. You can forget your other todos while being at that station.
Bonus points for an extra pairing office. So that you can talk to each other without interrupting others.
Physical proxymity is king!
Remote pairing in 9 out of 10 times doesn’t work. The main reason is network latency and low bandwidth. Too big a latency means that you will not see/feel what your pairing partner does right now. It will take a couple of hundred milliseconds and every now and than you’ll run into audio issues. The audio of the keyboard klicking will not match the video of the screen.
While pairing you need to feel how the other person reacts. That’s best done while standing or sitting at the same desk.
Tidy up your workspace
No Facebook, no Twitter and no email! Put away you iPhone.
Your pairing account should make sure that no pop up alarms disturb you either.
Pair programming is very intense. Don’t push it! Maybe you are on a roll but your partner is already a bit tiered.
Create rules for regular breaks and follow them by setting an alarm.
Not all pairs work well together
Newsupdate: We are all humans and sometimes two humans can’t work together. No big deal. Don’t push them to pair programm. Nothing good will come out of that.
If you want your pair programming session to be productive you have to create the right setup. Otherwise don’t even bother trying.