Recently, my employer has allowed me to work from home one day a week. This is due to rising gasoline prices combined with my distance from work. It's great for me as I'll save quite a bit of money each week as well as reduce my overall emissions. However, this has presented us with a slight dilemma: how do we remote pair effectively?
Integrum subscribes to a variety of Agile practices. Perhaps the most prominent is working in pairs, a.k.a pair programming. I was first introduced to the idea of pair programming around 1999 when I was at the University of Arizona
learning how to completing my BS. At that time we simply learned the theory from a professor, but didn't actually try it.
About 16 months ago I was working in a contract position with my friend and phoenix Ruby on Rails developer, Josh. Toward the end of our time at that contract we attempted pairing and found it worked really well. When we were hired as contractors at Integrum we paired on a project form start to finish and then later, when we went full-time, we paired with the rest of the team members. These positive experiences with pair programming have convinced me of it's usefulness.
Now that I work a day from home, how will I pair with my various teammates?
I'm sure there are many, many ways to pair remotely, but here I will describe our first attempts at pairing remotely. It may help that we're an all Mac shop, but we found it rather easy to get up and running quickly.
At home and at work we are using iMacs running OS X 10.5.4. The built in iSight and microphone are great for what we need right now.
Complaint: Noise. It's everywhere, seriously. The mic picks up everything.
Yep, that's right, iChat – video chat specifically. We simply fire up our iChat instances using our Integrum Jabber IDs and request a video session. Seriously, that's all we do. The sound and video quality have been more than adequate for pair programming 7 hours a day.
Our first attempt at this was flawless, well… until it just stopped working that is. After a little research we found that I probably needed to open the right ports to maintain a consistent connection (this post on iChat Routing Problems helped). After I did that we haven't had a problem.
Complaint: Video chat over iChat can sometimes lag or have artifacts, especially during peak times. It's good enough, but would be nice if it were smoother and clearer.
While we're pairing we share the screen on one of the computers. When we're done we turn it off. This allows us to both have control of the keyboard/mouse if we need it and has helped immensely in making us feel like we're both working. We take turns driving while the other gives advice or comments and we can smoothly transition from one driver to the other.
Complaint: From my end the connection latency can sometimes hinder progress. If I hit one of the Exposé areas of the screen and all the windows separate it can almost bring rendering on my side to a halt. There also seems to be a problem with select via the mouse. When I click and drag to select some text the screen jumps to the top or bottom immediately, selecting all text between. I've had to get better with the keyboard.
iSight + built-in microphone + iChat + Screen Sharing = Adequate Pairing
I do have some complaints about the current setup, but I'm willing to keep going until we find better solutions. Perhaps we should try using Xbox Live as I've heard some people suggest.
I think the next steps are to secure some good microphone headsets that will reduce the noise and allow us to hear one another more clearly. Then we can look at replacing iChat and Screen Sharing.
As tools for remote pairing progress I can see more developers turning to this as a solution to save money and time while still retaining their communication with their team, especially with their pair. Pairing remotely can reduce cost for the developer and the company, save time and reduce emissions because the developer no longer commutes. And if their whole company is remote then all the better!
Need web application development, maintenance for your existing app, or a third party code review?
Velocity Labs can help.Hire us!