I’ve recently been TDD-ing on a project in which I had to very quickly come to understand a lot of new technology (libraries, development tools, target environment, patterns, techniques). Pair programming with a local expert was the natural approach, but it wasn’t working particularly well until I started doing the driving. I did learn a little while my partner (the expert) had the keyboard, but it’s not easy staying alert and focussed when you understand very little of what is happening. On the other hand, as the driver I was much more engaged; and my partner was perforce more engaged in helping me understand. I’m sure it must have been frustrating for him having to tell me even the simplest stuff, but after only a short time I found I was able to contribute more and more to the task. I’m still a long way behind my partner’s expertise, and yet I feel we can now work reasonably effectively as a pair.
I’ll try to remember this next time I’m the one with the knowledge: let the novice learn by driving.