Corey Haines is a software developer from Cleveland, OH, who has embarked upon a pair programming journey. He's spending a year or so, traveling around the country (soon to be extended to Europe and perhaps Asia), programming on whatever projects individuals or small companies are interested in working on. Last week, SRT was privileged to host Corey, and he paired with me one of the days that he was in town. He also stayed with my family overnight, which is what he does in order to keep his expenses down during his year of travel.
When I was at the Java Posse Roundup, I spent an afternoon with a group of people working with Bill Venners on Scalatest. Several of us agreed to help afterward, but I hadn't had time to jump in. Last Friday, with Corey, I found that time. He and I spent the day working on an HTML Reporter for Scalatest. We made a lot of progress, and even worked a bit with Bill, remotely. No, Corey's not a Scala programmer, but his ability to pick up the language quickly speaks strongly of his aptitude for languages and perhaps of Scala as well. Corey had previously worked with David Chelimsky on RSpec. Since Bill has added behavior driven developmentsupport in Scalatest, we focused on that.
We accomplished WAY more than I had thought that we would, especially given that I couldn't dedicate the entire time to only pairing. We certainly got more done together than I would have accomplished by myself. (Hopefully soon,) I'll go back and finish up the other support, and get the code to Bill for his approval and checkin. And, I think that Corey had a good time too. He said that he's going to start working on a Scala port of RubySlim!
But I wanted to write a little about Corey's style of pairing and why I enjoyed it so much. He likes each person to have a keyboard and mouse and monitor. Instead of pairing side-by-side, he likes to pair across a desk. That offers the ability for the pair to talk and to see one another. I like this; it feels collaborative. And, for someone who doesn't pair every day, it's less disruptive to the office environment. There was no need to rearrange desks or squeeze behind one. Rather, we just needed to pull up a desk.
The hardest thing for me when pairing with Corey was that he uses a Mac and I use a PC. My keyboard doesn't have all of the fancy keys that his does (and I have a habit of using HOME and END, which mapped badly). But we laughed it off and I really enjoyed my time on the Mac even if it was from my PC keyboard. I keep threatening to buy a Mac, and by the end of the day, I was pretty convinced that I wanted to hit the Apple store. Hmm, maybe next week.
My first experience in a bullpen programming environment was in 1988, when I worked for a very progressive company. I enjoy working in collaborative environments and pairing just notches it up a bit. Corey made some interesting observations about pairing. We all spend time collaborating, working together, helping one another. Why not sit down and work together for a little while. Maybe try pairing for a few hours each day. Try it for a few weeks, a month. See what you think. You might find it highly productive.