Our Notes on Remote Pairing

The gang at Relevance posted some Notes on Remote Pairing including some great tips. We do a lot of remote pairing too, and have some tips we’d love to share.

Remote What?

First, what is “remote pairing” anyway? If you’ve worked with us, you’ve heard us talk about pair programming and it is what it sounds like: two people working together. Not just on the same project, on the same screen, usually with different keyboards. Come by our office and you’ll see it in action.

Remote pairing is the same, but with people in different locations. We work with a lot of remote teams, and we’re occasionally not in the office so we need to work together efficiently.

The runners up

Relevance noted the limitations of iChat’s screen sharing, but I think it’s important to say how awesome it is in a pinch. You can get viewing another screen in moments and it Just Works. Now, once you have multiple screens, it gets a bit annoying but that’s fine. It works when you need it.

We’ve also tried other tools like Skype (no ability to remote-control) and GoToMeeting (too much overhead).

Our killer setup

  • Mac OSX’s built-in VNC client.
  • a simple VPN
  • Skype for audio

Whenever I tell people this setup they think I’m nuts. It’s because they’ve never tried it.

Credit where it’s due: we’ve used this setup working our fantastic colleagues at Factory Design Labs and is also similar to what Pivotal Labs recommends.

Mac OSX’s VNC client is the best I’ve seen. It allows remote control of the other machine, not just viewing, and sets itself apart from its sibling iChat by allowing you to pick which remote display(s) to view. I can view another person’s 30” display on my 30” display, so there’s no squinting.

Using a simple VPN, we don’t need to have public IPs. I’d like to skip this step, but this is the easiest way for now. OSX has great VPN support; I can toggle it on & off in the menu bar and only route necessary traffic over the connection.

I fire up the VPN, use ⌘-k in the Finder and type vnc://some.address.com to connect to the other user and I’m in. Takes seconds. I’ve also found this setup to be super fast. No lag times even on my home DSL to Keith’s wireless broadband in Austin.

Finally, we typically use Skype for audio (and video when desirable) because it is near-universal and works very well. I personally prefer iChat’s echo canceling which I find to be head and shoulders above anything else, but that’s not a battle I need to fight. (We do use iChat video for daily standup meetings).


Relevance is now experimenting with text-only pairing, which I think is interesting but won’t work for them long-term. Seeing an entire screen is imperative when working on any web or mobile app. You need to view mock-ups, look at what you’re building, and occasionally see different apps/screens/whatever. Plus it lets you focus your entire attention on the same desktop. You’re not tempted to switch back to your own screen to look up some documentation and then get distracted with email.

We will blog more about pairing in general, and I’m happy to see Relevance share their experiences. It’s always good to have more companies focused on pairing. It really is a better way to code.

Photo of Daniel Morrison

Daniel founded Collective Idea in 2005 to put a name to his growing and already full-time freelance work. He works hard writing code, teaching, and mentoring.


  1. September 03, 2010 at 15:06 PM

    Thanks! We’ve been doing more remote pairing lately, so its useful to hear how other people are doing it.

  2. kyle@geek.net
    Kyle Adams
    September 23, 2010 at 14:00 PM

    I’m curious if you have any suggestions for remote sharing with multiple parties, a la webex.