[email protected] ~/notes>

\o/

Solutionatic Pair Programming

Remote Pair Programming

A few weeks ago, Larry O’Brien and I set out to experiment with Remote Pair Programming.
He wrote about it on his SDTimes column: Windows & .NET Watch: Problematic pair programming

We both liked the experience and would be rather happy to be able to work on a long term project that way (anyone hiring a remote pair?), but since his column gives more emphasis to the down sides, I thought I could write my point of view which is more on the up side ;)

In general, I agree on the down sides but I got so excited with the advantages I saw that I would barely remember mentioning the problems if asked.

The focus


Working in pair forces you to focus on the work.
There is just no way you can be there and not be paying attention to whatever it is that you’re supposed to do.
You get so focused in the work and the communication that the environmental noise that would otherwise annoy you just seem to disappear.
The speed in which you make progress can vary with a lot of factors but you are *guaranteed* to make some progress. All. The. Time.

The challenge


The fact that someone is watching your every step means that you keep challenging yourself to do things the best way you can.
You just can’t look sloppy to your pair.
That means you avoid cutting corners or knowingly doing the wrong thing out of laziness or “to fix it later”.
If you do something that feels wrong, you’ll be called on it and have to defend your point, so, unless it’s worth the trouble, you just work a bit harder and go for the right thing.

The safety feeling


You certainly feel more confident about every line of code you write.
Anything absurdly wrong will surely get catch by one or the other.
Even the small errors or typos get spotted really fast.
Sure, things can still be wrong, bugged or bad designed but the fact that the code was co-created and reviewed by at least one more person gives you a comforting feeling.

The learning


Working with someone else full time means you’re continuously learning or at least exercising a different approach than your own.
You learn new tricks.
You get to defend your points.
And you question everything.
At the end of the day, you feel actively improving in many things.
Even your English, if you’re not a native speaker ;)

The loneliness


Working remotely means you’re almost always alone.
When your clients are in different countries, thousands of miles away, that’s guaranteed.
It’s just too expensive, time consuming and a tiresome task to travel for a meeting.
If there is something I miss every now and then it’s having someone at close reach that I can share work stuff and work together.
Working in a pair was a comforting step in that direction.

The results


We shared the resulting project on Github.
If you’d like to poke around, it’s available at http://github.com/carloslima/pasteme

Overall, I consider it was a big win over the solo experience.
There is only one thing that could be much better and that’s the IDE/Tools support.
While sharing a VM using VNC mostly worked, it didn’t come close to the experience you get when you use Saros, Bespin or even Google Wave.
Being able to use all your monitors, drag windows around and organize it the way you like better would definitely improve the experience.

Have a different opinion or want to suggest a different tool?
Just drop me a comment!

Comments