Home > Shipito Ergo Sum > Spoiler Alert: I'm Not Sure I Believe in Pair Programming

Spoiler Alert: I'm Not Sure I Believe in Pair Programming

Heretic!!!  Outcast!!!  Unclean!!!

OK, I just need to get this off of my chest.  I know that all of the books you read on Agile (and I’m reading more lately as I round out my practice with current theory) say that you are welcome to modify the practices as you see fit.  But I also worry that I am somehow letting them down by frowning on even one of the practices, especially if that turns out to be THE one that makes “Agile” agile.  After years of adherence to most if not all of the remaining practices, I think it is finally time to say:

I don’t believe in pair programming.

Now, I know that pair programming can exist (I’ve heard enough stories to confirm it) and I even believe that its practice can accomplish what it purports – higher quality code at the expense of some (experts argue – let’s see if we can agree on 20%) productivity.  Expressed as such a tradeoff, this sounds more like a business decision – I’m the manager and we’re about to make embedded software for a heart defibrillator, so I think I’ll just turn the “Quality” knob up to 11, watch the productivity meter drop to 80%, and enjoy watching the flawless code come out of the sausage machine.

My concerns come from two levels – let’s start with the personal level first and just get that out of the way.  Then we can have a more informed and vigorous debate of the merits of the practice from the point of view of a manager of an Agile team.

Brooklyn Bridge - New York, NY

Brooklyn Bridge - New York, NY

In case you haven’t heard the term “flow”, let me briefly introduce it.  I first ran into the concept when I read the first edition of “Peopleware” by Tom DeMarco and Timothy Lister.  Flow is that almost transcendental state that programmers can achieve where their brain is so focused on a problem that they lose all sense of time.  As a younger developer, I could do 10 hours of programming standing on my head and not even break a sweat.  I used to constantly arrive home late because I lost track of time or needed to finish just one more thing or the problem would bug me all night long.  That’s what flow is, and as I started to move into leadership roles, that is the thing that I missed the most.

I can’t get into flow when I’m pair programming.  If I’m at the keyboard, then my mind and fingers seize up as I devote too many cycles to thinking about how the other person is thinking about the problem instead of the problem itself.  If I’m observing, then I’m bored most of the time and wondering why the other person can’t solve the problem.  In short, pair programming spoils everything that I would say I enjoy about the creative construction process.

Now, if anybody else out there is like me, can I get a “Holla back!”?

I have a rule that has served me pretty well as a manager – don’t expect others to do what you wouldn’t do yourself.  If I would call B.S. as an individual contributor, then how can I possibly stand up in front of the group and preach the virtues of the same practice?  Because of this rule, I have conducted a bit of an experiment over the last 5 years.  I have explained what pair programming is, I have voiced my support for it, but I have never crossed the line to forcing it to happen.  Over that time, I have only witnessed spontaneous pair programming a couple of times and never as a sustained practice.  When it did happen, it was always in a senior/junior coaching scenario with the junior programmer at the keyboard, but as the individual found their footing, the practice stopped.

I’ve been reluctant to publicly express my opinion on this topic before because I needed to allow for the possibility that I was very different from others and that their experience would be better than my own, but after all of these years I think it is time to say with more conviction that while I admire the idea of pair programming, I don’t believe in its practice.

My son and I were talking last night about this year’s debate resolution; it happens to pertain to the United Nations and the role it should take in actively solving one or more of the world’s problems.  He said “I used to be a big believer in idea of the UN, but now that I’ve seen how little it can accomplish, I don’t feel that way anymore.”  Given my understanding of some of his political leanings, I was a bit surprised by this kind of cynicism in a 17 year old.  “What good is it if it just doesn’t work in practice.  Paint a picture of it and hang it on the wall so you can look at it.”

He’s wise for a 17 year old.  SNAP…just took a picture of “pair programming” in my mind.  BANG, BANG, BANG…just hung it in my mental gallery between my pictures of the UN and the pet rock.  Ahh…isn’t it lovely.

Advertisement
Categories: Shipito Ergo Sum
  1. Paul Ellarby
    September 23, 2009 at 11:36 am | #1

    Oh boy, oh boy…where to start! :-) I gave up calling it “pair programming” long, long ago, for the very reason in your blog – “If I’m at the keyboard….If I’m observing….”. That’s not the important part of the process, that’s just dogma (“This is the only way to pair..”). Think of it as merely “working together” – that is, discussing the problem, designing the solution with a colleague, maybe even breaking the problem into smaller pieces you can both work on at the same time, side by side – NOT one typing, one watching…

    At its heart, pair programming is about collaboration – teaching, learning, growing, sharing, and from this comes better code. Don;t watch – be involved.

  2. craigkn
    September 23, 2009 at 11:53 am | #2

    An excellent point, and I have seen many long-term stable working relationships form without the need for anything like the dogma of pair programming. I just had a friend come by to show me a “demo”, I noticed something during the demo, we talked about it a little more, and he’s off to refine the solution again. We didn’t pair in the formal sense, but we definitely worked on the problem together.

    One of the most effective pairs I ever saw was Bob Dewar and Scott Colestock at Microsoft Great Plains – these guys paired up exactly as you described and it was a beautiful thing to behold. An important point is that this was a pairing of equals and was long-term stable because it was mutually beneficial. The didn’t code together, but they did use each other as their primary “go to guy” when something just didn’t smell right.

  1. September 24, 2010 at 12:43 pm | #1

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.