The Remote Pair Programming Tour
Pair programming is the most fulfilling experience I’ve tried and want to try over and over again. It helped me in many ways: learning from my pair, fixing potential issues with the code quickly, making programming a fun social endeavour.
Inspired by Corey Haines‘ pair programming tour, I’ve decided to start a remote pair programming tour since I cannot travel as much as Corey did. If you want to pair with me for 2-3 hours in an evening during the week, just drop me a message.
And now, for some details:
The main purpose of the session will be practicing and learning. We can practice TDD on a training problem (e.g. from here), refactor some of your code, write tests on some of your code or anything else you might think you want to learn.
My main language is C#, but I’ve programmed for customers or with other people in C, C++, Java, Javascript, PHP, Python and recently tried Ruby. I’d love to see some Haskell, Erlang or Scala, but didn’t get there until now. The language doesn’t matter – actually we will learn much more from one another if we use different languages day by day.
The best setup is with the following tools:
Some tool for remote screen sharing – CrossLoop is the one I’m typically using, but I’m open to alternatives
The development environment set up for both of us
Skype for voice (and video) communication
A git or svn repository where we can get and push the code to
From my experience, writing code on a remote screen is annoying because there’s always a delay. So, ideally, the person writing code should be always using his own computer. This means every time the driver switches, the code needs to be committed (or pushed) on the repository, the new driver pulls the code and he becomes the presenter. It sounds more complicated than it is, and it only takes a minute, but avoids many annoyances.
What happened until now
(Thanks to Yves Hanoulle for suggesting this section)
Done sessions:
FlaviusStef, on Thursday, July 8th – talked about NHibernate, automapping between database and entities, automapping between DAOs and DTOs, Inversion of Control, MVVM for WPF. Did some TDD on the Sql string generator problem. Learned that String.Join(strings, “,”) can be used for concatenating strings from an array separated by comma. Tried the dynamic keyword from C# 4 and managed to greatly simplify tests.
Eric (France), on Tuesday, July 20th – worked on some Java code, with tests in place and added a new feature. The first remark is that it’s extremely easy to start being productive in a project if it has tests and if you do pair programming. It took me 15 minutes to understand what we were trying to do and to start developing. After about 2.5 hours, we had the new functionality done, tested and refactored so that the code was very clean. (Of course, there are always more things to do, but we time boxed the effort).
In terms of tools, we used LogMeIn for creating a VPN and VNC for remote connection. Hamachi was very easy to use in Linux (works from command line) even if it’s in beta (a stable version is available for Windows). The only problem is that I had to work remotely, which is annoying because of the delay introduced by the network. I feel that this slows me down a lot and couldn’t use it for a full day’s work. Other than that, it’s an excellent way for sharing the desktop with someone else, regardless of the motive. And it’s free for personal use.
In the end, I see there’s no perfect solution for pair programming. Ideally, we should have a full IDE, compareable with Eclipse, built for remote pair programming. And forget features like chat or voice – there’s skype for that. We need the programming tool, not to reinvent the wheel.
To conclude, another excellent session; I’ve learned a lot and that’s all that matters.
[July 29 Update] It seems that my prospective pairs stood me up. Maybe because it’s holiday season or maybe because they don’t like the idea anymore. I think it’s a pitty, and that we can learn a lot together. For example, does anyone want to learn to use NoSql databases? I would love to.
Coming sessions:
Tuesday, July 20, 18:30-21:00 – Eric (France) – done
More sessions will follow, I will publish a plan update every week.
Requested, but yet unplanned:
Razvan Dimescu – “hey alex, I would also enjoy pair programming with you. if you’ll have some extra room in your next session I would like to join”
Ionut G. Stan – will try some Haskell
Florin – beginner, wants to try some TDD and some other programming techniques
Eric (France) – has tried to do a pair programming tour before, without much luck. Would be interested to try it.
Tudor Munteanu – see the comment below


Like