Remote Pair Programming
by Ron Lichty
I've been enamored of remote pair programming since briefly leading development at Socialtext, where no three developers were in the same locale. Socialtext was committed to agile approaches including pair programming (but not including colocation, I might note!). Being distributed, remote pairing was the way forward.
Pair programming is controversial in being possibly the most difficult agile engineering practice to inculcate into development teams - we've heard of programmers quitting companies rather than signing on. But there's also plenty of evidence that it's well worth doing: Mike Cohn, in Succeeding with Agile, says, "if you're in a hurry this is the time you need pair programming the most… Although most studies show a slight increase in the total number of person-hours used when pairing, this is offset by a decrease in the total duration of the effort. That is, while pairing takes more person-hours, fewer hours pass on the clock…. Pair programming has also been shown to improve quality…. Additionally, pair programming facilitates knowledge transfer and is an ideal way to bring new developers up to speed on the application. It is also an effective practice for working in uncharted territory or solving difficult problems in known parts of the system."
Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams, we note a less obvious advantage of the technique. We share David Vydra's interviewing rule of thumb, which states, "Pair programming for half an hour during an interview will save everyone's time."
Of remote pair programming, we also share the pleasure I saw programmers at Socialtext experience transitioning from physical to virtual pairing. (pp. 133-4)
While proximal pairs typically share a single screen and often a single keyboard and single monitor, virtual pairs each sit square to their own monitor, keyboard and mouse, sharing a virtual single screen. For screen sharing, developers at Socialtext typically used a version of VNC (e.g., Chicken or RealVNC).
As a co-chair of the Emerging Technology SIG of SVForum, I've recently been looking at collaboration tools of various kinds, led there in part by the amazing advances in sharing Web research that Vivek Agarwal at Surfmark is doing. That led me to consider that screen sharing in general might have taken a leap forward.
I didn't find anything startling, when I went looking for an update on remote pairing tools, but David Vydra, who seems to know and have worked with all the cool kids, pointed me to a wonderful resource, Joe Moore's blog, which is focused on remote pairing tools. Not surprisingly, Joe is part of Rob Mee's Pivotal Labs, known for its XP engineer practices.
The blog covers a lot of great stuff, including updates on tmux, Google Hangouts and MadEye, SublimeText 2, solving Skype challenges, and more. In his two-years-ago assessment of remote pairing technology, Moore concluded, "using Apple’s built in Screen Sharing.app (aka SSA) combined with Skype has proved to be the best remote paring technology combination."
For those who are distributed - or just working from home - remote pairing is alive and well.