Merlin Mann gives a great talk about Time and Attention. The gist of his talk is that in order to create great work, you need to balance time vs. attention. Without using your time, you’ll never create. But you must use your attention to determine if you’re creating something great. Great producers balance between these two to both produce, and produce good work.
Part of my new job at Pivotal Tracker involves pair programming. While a lot of my programming friends express doubt about pairing, I’m very impressed with both how productive I am pairing, and how quickly I’m learning the code base while pairing.
The way that a good pair switches between who is “driving” is very similar to Merlin’s talk. The person who is typing is responsible for producing, while the person who isn’t is responsible for ensuring that the pair is headed in the right direction. Pairs have a much easier time finding this balance and staying on track than individual workers do.
It’s hard to alternate between time and attention effectively when working alone. There’s no overt signal to when one is using time or attention, making it easy to mistake “research” (reading Wikipedia) as using your attention. As a pair this balance is much easier to achieve, because each member is tasked with one role, and it’s obvious when that role is not being fulfilled. The non-driving member can’t goof off on Reddit or Wikipedia for the sake of “research” because it will prevent the driving member from working. And the driving member can’t slow down too much without the other member taking over typing from them. This helps ensure that the pair produces better code faster.
I’m not sure if the creators of pair programming are familiar with Merlin’s model of work, but accidentally or not they’ve made it much easier for programmers to follow his advice. I’d recommend any company to give pairing a try and see what it does for the quality and quantity of work that their teams produce.