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.”
In our book, Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams, we note a less obvious use of the technique. We share David Vydra‘s interviewing rule of thumb,”Pair programming for half an hour during an interview will save everyone’s time.”
And as for pairing remotely, 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 nonprofit tech organization 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. (Vivek is speaking at the Emerging Tech SIG on Thurs, June 13, 2013, in SF.) 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 not only all the cool tools but 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.
A lot of great stuff, including updates on tmux, Google Hangouts and MadEye, SublimeText 2, solving Skype challenges, and more. In his two-year-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.
We use Pair Proframming for the last step of our interview process and it has worked really well. We give people three tasks to work on and as much as the quality of the code, it tells us a lot about the dev including how well she might fit culturally. The whole thing takes well over 1.5 hours but its well with it.