You don't have to be at the same desk (or even the same continent) to pair program with someone

In case you are not super familiar with pair programming here are the core essentials of how it works. Two programmers sit in front of the computer they are working on and slide the keyboard/mouse back and forth. The person with the controls is called the driver the other is navigator or observer. To those that have never done it before it can sound kind of stupid but when it's done right it can actually be one of the most intense, focused and rewarding activities a programmer can do.

Pair programming isn't for everyone and communication becomes even more important while pairing. Angela Harms gave a great talk at the Ruby Midwest 2011 on avoiding many of the common pitfalls of pair programming.

There are many great benefits to pair programming. Faster problem solving, fewer bugs, more maintainable code are some of the big ones that come to mind, but the most valuable by far is learning. When pair programming what you're really doing is teaching your pair your though process live, in real time. If you are not the one actively leading the direction of the session you are learning and providing rapid feedback. This is a truly awesome dynamic and is probably the most efficient way to become a better programmer and bring new team members up to speed.

The simplest way to pair with someone is to both be physically in front of the same computer, either facing the same monitor or have a fancy setup like Pivotal. In-person pairing is probably the best kind but it also limits the who you can pair with. Instant communication over the internet has aided collaboration across almost everything and pair programming is no exception. Accessing/controlling another computer over the internet is nothing new but there are some free open source tools that make pair programming quite easy.

Recently Avdi Grimm kicked off the #pairwithme campaign, urging people to pair program widely and often. Every day there are people around the globe using the hash tag to link up with other pairs, broaden their perspectives and add to their mental tool-boxes. He also launched the site www.pairprogramwith.me which has had some awesome contributions from the community to make it a powerful resource on how to get started in the remote pairing game.

Remote pairing described in many of the guides usually involves ssh and tmux, either to a remote server or setting up a relay to direct traffic to your machine that you both share. Neither of these are as hard or as scary as they sound. I was able to set up a cheap VPS on Digital Ocean and configure it to share a tmux session with public key authentication in less than an hour.

Would anyone like to schedule a session to #pairwithme? :) Ruby is my most comfortable language but I'd be willing to sit in for a session on a project in pretty much any language to see what it's all about.

You need to be a member of TechHui to add comments!

Hey Chris, thank you for setting up the pairing box! Cool stuff. I noticed that Emacs isn't installed (har har). But, I'm in for some pairing. There are also some cool options for setting up EC2 instances, with preconfigured setups... https://github.com/technomancy/syme