Pair programming represents one of the practices of agile software development. Traditionally the two developers work on the same physical workstation. This requires that they’re at the same location.
During the last few months I paired with my colleague Grzegorz Wdowiak while we were about 1000 miles away. How was this possible? Technology to the rescue…
We shared the computer through RealVNC. Greg had the server running on his laptop. The viewer allowed me to view his screen, type through my keyboard, and use the mouse. However, in spite of the large nunber of bits pushed across (particularly when rendering bitmaps like XML Spy’s splash image) this is the “low bandwidth” part of the deal.
The side of pair programming that brings the most value is human communication–more precisely, verbal communication. Instant messaging won’t do. You have to be quick: “no, here, this is the method we should refactor.” Traditionally people far apart used the telephone to talk to each other. However, since pair programming sessions last a few hours the telephone doesn’t provide a cost effective solution–not unless someone else is paying for it. Therefore we used Skype: the quality is amazing (VoIP tends to sound better than many mobile phones), and you can’t beat the price 🙂 In addition, most of today’s (decent)laptops have built-in speakers and a microphone, which means that you don’t need anything else.
Oh and by the way, both of us were untethered thanks to WiFi. Telecommuting got a bit closer, and it doesn’t look like the telecoms will make fortunes off it. It would be interesting if IDEs like Eclipse and Visual Studio .NET would support remote pair-programming out of the box.