I have been doing a lot of pair programming remotely for my latest client. We use join.me for screen sharing and either the VOIP provided by join.me or the telephone for voice. It works very well for collaboration. I am a big proponent of pair programming. Its benefits are often not immediately apparent. The book Pair Programming Illuminated is useful for understanding some of the ‘synergies’ of the activity. Most of the objections to it that I have read are by people who haven’t tried it. Some programmers like to go off into a quiet corner and concentrate on solving a problem. There are many reasons this is counter-productive. The main one is that a single developer will struggle with a problem for a much longer period of time before asking for help than will a pair of programmers. Another is that the lone programmer develops personal idioms that will not be well understood when the next developer has to maintain the code. Pair programming works best in an agile process where code is not ‘owned’ by any developer. The days of ‘divide and conquer’ where programming tasks were divided up and assigned by an overseeing manager to individuals should come to an end. I consider myself to be a very good programmer, but when I pair with another person of more or less equal experience, I always find that the other person has an insight or a technique to share that I would have missed. The resulting software is higher quality, when two heads work together on it.
I would like to offer my experience as a pair programmer to new teams on new projects. Such work would only entail screen and voice sharing. There would be no need to have project source code available to my computers. There could be many advantages to adding me as a remote pairing member of your software team. Please contact me, if you are interested.