Pair Programming: Issue 4 : You're in my way!
[The fourth installment of my response to a colleague's queries about Pair Programming]
Issue 4: The more senior coder can often feel impatience with the other coder, resulting in a loss of respect that the senior person might feel for the junior one
Similar response to my previous blog entry: you're not really Pairing. The most senior person can learn something from a junior, even if it is only patience. I would go as far to say that in such circumstances this "senior" person is actually an intermediate who has not yet learned the behaviours that define a senior developer (to me anyhow). These include patience, welcoming questions and admitting when you don't know.
Often mistakes are made in rushing to implement "the obvious" or "the cleverest" solutions and it is a mistake to confuse speed of development with effective development. Efficiency of code generation does not equal effective development. Having juniors who require a slower pace due to either their questioning or their need to understand the "obvious" is an advantage. This challenge to the intermediate developers helter-skelter, I-know-what-I'm-doing approach and is often the main value of Agile!!
Think of it this way: if all us senior development guys and gals are so good and know what we're doing why was it necessary for Agile to come into existence? What is the point of the discipline? Is it maybe because the development processes we grew up doing (the non-agile ones) were failing? Maybe we have bad habits that need to be trained out of? By having the juniors around we (a) can show them the better way we know is better (but might not practice yet), but maybe more importantly (b) they can keep us true to our intentions of Agility by questioning us and pacing us.
It's a way around the hypocritical "Do as I say, not as I do" maxim. Its more, "Do as I say, and help me do as I say".
Sometimes juniors get criticized for asking "stupid questions". There is no such thing as a stupid question: just ones you do and do not know the answer to. Often the frustration intermediate developers have in this context is having to explain something they've taken for granted. This comes back to the fear/embarrassment point again. Sadly many intermediate developers who think they're senior haven't yet learnt a valuable lesson: admit when you don't know something and do something about it. People will respect you for this behaviour.