views:

583

answers:

12

We have a team of about 7 engineers, whom I supervise. We do not have a formal office where we all work. Instead, a handful are located outside of our city, while the rest of us are scattered around the Bay Area.

Quite frequently, I find myself attempting to teach concepts like TDD or refactoring to some of our more junior (or not) developers. The best technique I know is pair programming, where you both sit at the same computer and work on a problem together. Since we are not in the same place most of the time, the only option is to use some kind of screen sharing and Skype to have one of us "drive" while the other consults, and then switch.

My question is has anyone tried this "virtual" pair programming, and did you find it at all useful?

+3  A: 

Trying to pair program remotely probably won't be as useful as doing it in person, but you can of course do it using collaborative editors as SubEthaEdit in OS X.

Federico Builes
With iChat for communication as well.
Abizern
+1  A: 

We've been using the new ECF features in Eclipse 3.4 (Ganymede) and we like it. We're not actually remote from each other except when one of us is working at home but ECF lets you edit the same file and also has an IM window for chatting. If you use Skype, so much the better.

There's a good screencast on Vimeo of the screen sharing that really made us excited about it.

MattGrommes
+1  A: 

In my current job, I've worked with another developer who was in another location. While we consulted quite often with each other through phone calls (headsets are a huge plus!) and screen sharing, the real 'together work' (including some real pair programming) was much more effective when I visited his location (did that twice for a whole week, and these weeks were very intense).

The main problem with screen sharing is that you never know who is going to move the mouse,... (for example to point at something on the screen).

On that project, we ended up dividing the work into 2 sub-projects, and got together (meaning: travelling) to plug them together.

OysterD
+5  A: 

I know Netbeans has a plugin for "Developer Collaboration" (flash demo), which is basically like multiplayer-programming. Any changes you make in your local file are replicated almost immediately to the other party. It's pretty cool, but it's been a while since I've played with it, and I've never used it for a real project. There is a chat window but you're probably better off still talking on the phone or using skype.

Outlaw Programmer
+8  A: 

I've done quite a lot of pair-programming not only cross-site but cross-timezone. I live in Israel and I work with people on the West Coast all the time. The best way I've found is to use shared VNC session and skype. You need some "good behavior" to ensure that only one of us types at a given time. The VNC server that we use gives us two different pointers so we can move our respective mice without getting in the way, so long as we don't actually click.
The main problem is that the clipboard is shared, so if someone selects something it's automatically copied to the other's clipboard.
As a general rule, pair programming cross site, while not ideal, is certainly workable, and most definitely useful.

Nathan Fellman
Which "VNC server that we use gives us two different pointers"?
Brian Carlton
@Brian, we use RealVNC from http://www.realvnc.com/
Nathan Fellman
+1  A: 

On OSX, I've used vim and a multi-user GNU screen session - this gives much better responsiveness than VNC, screen-sharing, etc. I use this set-up along with Skype and a headset for voice communication.

I've done a lot of pairing remotely like this and I find it can work very well. However, for it to work well, just as with face-to-face pairing (but probably more so), I think you need both parties to be well motivated and familiar with the tools you are using. Also (more than in the face-to-face scenario) I think that it helps to give more of a running commentary on what you are doing.

floehopper
+1  A: 

We've used webex for this. While it's not necessarily ideal for this kind of thing, it does have some features to mediate who controls the computer and when.

Jason Baker
A: 

Yes - I have done remote pairing.

We used an old-fashioned speakerphone and VNC. We paired between Seattle and Bournemouth, England. The cross-atlantic time lag made VNC very difficult to use - it's difficult not to interrupt somebody else using the mouse with the random network lag.

You need a lot of patience and some conventions taking turns "driving" the keyboard and mouse.

We only did remote pairing for development for short periods of time - say 30 mins or so because most people developed headaches quite quickly. It was so painful with the network lags. We just kept for problem solving and where people got to a point where it was easier to explain by demonstration than by reading text on a wiki.

I think these days, you might get a better result using remote desktop - which I have also used for pairing. My remote desktop remote pairing was for support and deployment though and it was between two remote developers logging into a machine at work. People tell me that remote desktop is much more efficient than VNC in terms of bandwidth - but I can't verify that.

cartoonfox
A: 

Hi

For Visual Studio Remote Pair Programming take a look on http://www.wave-vs.net, is an AddIn specifically design for this.

Bye! Jesus Salas wave-vs.net

Jesus Salas
+1  A: 
Gnark
+1  A: 

Yes, you can absolutely pair program remotely, and I've done so successfully for extended periods of time. We had Skype audio chat open pretty much all day long, and used TeamViewer (http://www.teamviewer.com/) to mirror the screen. Worked splendidly.

If I recall correctly, it has a pen/drawing tool that allows the navigator to show the driver what he's talking about on the screen.

+1 - this has been my experience, in some ways sharing a screen can be better than sitting at the same computer as you can both see the code unobstructed. The only problem is there is alot of waiting for the driver to do things but there is no reason why you cant be investigating the same thing privately on your own machine at the same time
Willbill
A: 

We've just launched Beweevee for Visual Studio 2008 Beta. This add-in allows developers to work remotely in the same piece of code at the same time. You can try it downloading it in http://visualstudio.beweevee.com it is light (less than 2MB) and doesn't require to setup a server.

Sebastian