14 responses to “Expertise versus Pair Programming”

  1. Very insightful post thanks. I don’t program any more but I have struggled to understand how pair programming could really work. When coding you are deep in about 6 layers of thought down some rabbit hole of an idea, having to verbalise every step would be an impediment. Then again, there is compelling evidence (I’ve heard) that it really works. Can’t wait to see some more discussion on it.

  2. The one catch with this is that Pair Programming originally came from experts programming together. I’ve done it once and it was fantastic :)

    Tim

  3. @Caroline: thanks for your comment. I hope to do a followup post discussing the evidence. (As you suggest, I can’t very we’ll cast a theoretical doubt on pair programming without also discussing the evidence in practice).

    @Tim: When you did it, how did pairing fit (or not fit) your customary solo thought processes? I’m not saying it had to match, just interested in hearing from someone for whom pairing worked well, whether you found that you had to adopt different ways of thinking, and what the pros and cons of those ways were.

    FYI my own experience of pairing is, mostly, consistent with the issues suggested in this post. One partial exception was when I was paired with a business expert – in which case our complementary knowledge made the experience more pleasant and effective.

  4. [...] I’ve just appended a small clarification to the end of my recent Pairing and Experts post, clarifying what’s meant by [...]

  5. Hi John,

    It’s been my experience that two experts that do not share a common domain language do indeed encounter this slowing problem, at least until they’ve spent enough time in collaboration for each to develop an effective internal translator for the other.

    Do you have any thoughts on how this plays out into the shared cognition phenomenon?

    Cheers!

  6. Jonathan,

    No, I’m not sure how that plays out into the shared cognition phenomenon. I guess I was hoping you might know ;-) … … or at least be prepared to take a guess. In the cases where you’ve seen it work well, how did the paired conversations of the experts compare with those of non-experts? Were the experts talking as often as non-experts, just at higher levels of abstraction? Did they need to form shared vocab about code/design in addition to the business domain? What other qualitative or quantitative differences did you see with the experienced expert pairs?

  7. No time to write, but have had time to google:

    http://c2.com/cgi/wiki?PairProgramming

    The think with all the early agile research is that it was done with experts – so the question in the agile literature has always been along the lines of “will this scale to not-so-good people” :)

    Tim

  8. @Tim I’m guessing you mean the likes of the 1999 Laurie Williams study? It used students, not programmers with the 10 or so years of real-world experience needed to develop the kind of expertise I’m talking about here. Yes, they were advanced students, but still students. See http://alistair.cockburn.us/Costs+and+benefits+of+pair+programming

  9. Great post. I find communicating why I hold certain opinions highly challenging. However I invariably learn a lot from the explanations I fabricate…

    It is almost as if being forced to explain your intuitions converts your unconscious beliefs into a series of principals that you can add to your arsenal of “truths” to help you explain the your otherwise arbitrary preferences.

  10. Interesting thanks Alex

  11. I simply find the 3 types of pairings (novice-novice, expert-expert, novice-expert) to be different. Each can be extremely effective, but for different reasons.

    Ignoring the other two for the moment, the expert-expert pairing tends to be the one that most iteratively evolves the ubiquitous language (and thus design) of the team. It uncovers problems not in the code, but in the way we think about the system.

    Part of this is that the experts don’t want to get slowed down. So they start speaking in a rapid pidgin. I had a session the other day where the transcript was something like (A was driving):

    A: “Another tree transform?”
    B: “Visitor?”
    A: “Shouldn’t need so many.” (typing starts; implementing visitor on background thread while conversation continues).
    B: “Yeah; refactor later. Should request really be a tree?”
    A: “Point. Mostly not recursive.”
    B: “Point. And mostly use nmable parts at a time.”
    A: “Compiler? Have you heard of nanopass?”
    B: “Worth exploring. Recast as optimization problem.”
    (visitor finishes, with tests).
    B: “Nulls?”
    A: “Usual throwing guard. Exception path only.”
    A: “But handler is wrong.”
    B: (raises voice to catch attention of rest of team) “We’re seeing some problems in null-path exception handlers again. We should discuss what we want to do here. There’s a lot of duplication and we seem to keep making errors. See if you can refactor to a better pattern.”
    A: “Any ideas?”
    B: “No. Let them figure it out.”

    In that session we implemented a chunk of code, identified that we were over-using a particular design pattern (which indicated to us that we had a more fundamental design problem), and found some missing error logic (which indicated another systemic design flaw). We then raised one of those problems to the team’s attention and agreed (silently) to keep noodling on the other ourselves.

    This transcript covers a little less than 2 minutes of time. The airwaves were full about half of the time.

    Pairings of experts can work very well. But they have to stop explaining why to each other, and just state partial what. Assume th other expert gets the why, or can create his own. Don’t slow down the thinking to talk; shorten the talking to fit within the fast cycles and focus on the part that will challenge the other guy’s thinking.

  12. Thanks Arlo. Very informative and thought-provoking. I have duplicated your last paragraph in the main body of the post, to make sure future readers won’t miss it.

  13. [...] me, Arlo has lots of successful experience with pairing.  If you’ve been following my recent posts on pairing, I definitely recommend that you check out Arlo’s new comments on them, and [...]

  14. [...] previously blogged about the nature of expertise, and resulting questions about the efficiency of expert-expert pairings.  Here I’d like to tidy up some loose ends with regard to the relationship between expertise and [...]

Leave a Reply

*