Is Pairing REALLY Caring?

Things I learned in kindergarten #4080: Sharing is caring. But as a headphone loving, music obsessed programmer, why must I share my keyboard, mouse and development process!? I enjoy going into the code tunnel with some good music on and cranking out solutions. Why are you trying to change me and take me out of my comfort zone!?

Because its important. Getting out of the comfort zone is essential to your development as a person and a programmer. Did you just smirk at your screen? Might want to consider the reason why you did, you might be surprised. The way you've been doing things for the past 5 years (Oh! 10 years you say?! You old dog, you! Listen even closer.) may not be the perfect way to do things. We should all want to optimize and increase our efficiency at every turn. That's how you get better, faster, stronger.

You may not agree and I wouldn't wholly blame you, I am quite a bit like you and I understand, but stick with me for a bit while I detail a couple situations I've found pairing to be essential to my personal and code development.

  1. Ever been stuck in a code hole and you just can’t think through the logic? I’ve found that going to the gym or a walk outside on a lunch hour to distract the mind can create that illuminating moment where the solution shines down into your dome. However, there are times where I’ve just tried to grind it out because I don’t want to leave ’til its done and thereby made the progress so excruciatingly slow that it is a waste of both mine and the client’s time.

    I’ve found that with pairing, you can bounce ideas off someone else who is probably at least as smart as you (I know you think you’re the smartest programmer there ever was). I’ve found, time after time, that stepping back and walking someone else through your code is one of the quickest ways to get around the mental block. I’ve realized the answer or had it solved for me at Quick Left several times already, decreasing frustration and allowing me to progress to the next task. It has been invaluable.

  2. How often do you check your email or other Web sites? In the search to find the end of the Internet, its easy to lose 15 minutes here and there to that noble quest. When you’re pair programming you keep each other on task and focused on solving problems more efficiently through discussion and collaboration instead of getting lost on Boing Boing again. I’ve tried to distract ’em with the old ‘Look, an eagle!’, but no luck yet. Never give up, right?

Other benefits:

  • Pick up keyboard shortcuts, new programs and processes from your pairing partner that you might not have thought of before. (I.E. MacVIM keyboard shortcuts, TextMate bundles, or Quicksilver.)
  • Built in QA process as your pair will frequently catch typing and logical errors made while coding, even if its just preventing that one extra page refresh and checking the console for why there is a JavaScript error. Multiply that out over 20 errors and there can be some significant time savings.

Pairing is a logical extension of that moment when you ask your friend to come look at your code for a second because you just can't figure out the reason why its not working.

Just remember, with pairing, you are not alone, I am here for you. Embrace it, or at least give it a try sometime.

Sidenote: Quick Left Cofounder Collin Schaafsma is speaking at Madison Ruby: 'Kick Your Project in the Mouth'. Go see him talk like a boss.