How is it like to Pair Program?
August 25, 2008 @ 01:38 PM | posted by carmelyne
(last updated: 08.25.08)"Pair all the effin' time."
In the last seven months, I've been lucky enough to pair program with at least three people from Hashrocket (Sandro Turriate, Jon Larkowski, Wes Gibbs). I come and go to Florida when they need more resources to fill in the required pair or task fullfiller -- be it ui designer or front-end integrator or as a ruby/rails programmer. I am not yet a full time Hashrocket crew but I am part of the Hashrocket family. When I'm back in Chicago, I always miss my pair and I wish I was pairing rather than working remotely from home.
I've been getting emails recently regarding Obie's post on pair programming since I'm in one of the photos. Questions like: How is it like to pair? How is pair programming all the day like? How is it possible to find time if you want to send an email to your boyfriend? These questions are all interesting. I guess since pairing seems to feel more natural to me now, I tend to overlook those details. Someone who has not experienced true pairing will be really curious as to how it's like.
Communication is the key to pairing. I'm an ex-World of Warcraft arena player so I'm going to do this short babble. My team would be me as a warlock plus a healer class (shaman, druid or priest). That's a twos team. When our team enters an arena match for a 2v2, I have to constantly tell my partner exactly who I am attacking, what I'm doing or will do and what's happening to me all the time during the match via Ventrilo. I relay everything happening from my end. My partner does the same thing. He will tell me if he's out of mana in case he needs to heal me and I'll tell him: "Alright, I can take care of myself for 12 secs. Go hide, drink water to regain mana". If I need an immediate heal during that 12 sec window when he's out of my range, I will say it in Ventrilo that I'm running to where he is and that he can meet me halfway to support me with a heal. Alright, well enough of the WoW.
How does that babble relate to pairing? Well in pairing you constantly have to think out loud in front of your pair -- saying out loud everything and that's your thought process being communicated to your pair. The pairs charter their thought process meeting haflway to sync. Every idea or alternative is discussed and weighed mostly with simplicity (and scaling) in mind. When pairs are in sync, the code becomes more apparent and comprehensible to both.
It is true. We do a ping-pong pairing. Either one drives the test and the other drives the actual coding from what was tested. Then we also do ping-pong stories where one will drive a story, alternatively then the other pair drives the next story. Stories are small task that makes pairing more effective. A pair can Teleport into the laptop being used during the pairing session. The pairs will bounce logic, ideas and problems to solve what's at hand together. Then code.
We have time in between stories to take a short break to do whatever it is we need to do outside of pairing. I don't find pairing limiting at all but it keeps me disciplined with my time as it enforces me to be more efficient. In fact, it keeps me awake after lunch too!
I've learned so many techniques from pairing. One good example that I've learned was from my most recent pair: Wes Gibbs. So while we were pairing, he took note once about a Git command. He opened a text file and typed in some notes; and out of curiosity, I asked him what the file was for. He explained to me that with all the technology that we keep up with, it was ideal for him to keep notes via a text file as a reminder. Exactly! What a great idea. I copied his technique since I seem to have issues with short term memory. So in pairing, you not only learn in parallel with your pair but you tend to pick up each other's techniques may they be outside of programming.
Matt Remsik of Hashrocket also wrote a blog post on "Pairing as a way of life" so check out his blog too.
I can talk all day about how pairing is like but that will make this article a novel :P Thanks to those who emailed me about this topic because it prompted me to write this new blog entry. Just shoot me an email if you have more questions.
/peace out :)
[ Last updated: August 25, 2008 @ 02:04 PM ]




Nice article, Carm. I'm glad you worked in a WoW reference for the rest of us. :)
Posted: August 25th, 2008 at 05:22 PM
Thanks, Veez. ;p
Posted: August 26th, 2008 at 11:21 AM
I love using Evernote to keep notes. Still plain text feel like the txt file approach you mention, but you get fulltext indexed search, and Windows and iPhone clients in addition to OS X, and everything syncs in the background for you, so I have the same notes everywhere. Using OS X spaces, I can pop back and forth between editing and note taking, very awesome.
Posted: August 28th, 2008 at 01:51 PM