June 18, 2010

Pair Programming, the Breaststroke

I’ve been working on my swimming for a few years. When I first started attempting the butterfly stroke, I found it very difficult. It required a lot of strength and technique that I did not have. I was lucky to make half a lap. Test Driven Design is like that. If you haven’t been shown some techniques and aren’t real strong with refactoring, with useful design patterns and with SOLID design principles, TDD is difficult to pick up.

In each case, you need a good coach. While struggling with my butterfly, I watched a few videos and read up on it in an attempt to improve my technique. But it’s just not ‘there’. And it never will be. My TDD skill is the same way. Underdeveloped. No amount of reading will get me where I would need to be with either topic if I depended on programming or swimming for a living. Hence the need for a coach. A coach will examine what you are doing and supply what you are missing or overlooking. A coach will help you build technique and strength.


Other strokes are easily done. Take the breaststroke for example. Anyone can do it. It’s not that strenuous. For years, I did the breaststroke only for fun or to cool-down or to swim to the bottom of the pool. It wasn’t for “serious exercise.” I never saw any benefit as a fitness routine. But then a swimming coach happened to stop by my house and commented on my stroke. I was doing it wrong. My strokes were too long and slow. Wow, what a difference a little technique makes. I couldn’t see my mistakes without a coach. Now, with a more effective pull, I’m quickly winded and building strength.

Pair Programming is like that. There are so many little things in this technique that can render it ineffective. What do most people do with an ineffective development practice? Typically, they drop it. At worst they keep doing it the same useless way, or they quit and then disparage it publicly. But at best, they get someone to improve their technique. Hence the need for a coach. I can watch a pair for a few minutes and usually give them half a dozen improvements right off. Chairs, posture, distance, and desk. Surface, keyboards, monitors and mice. Smells, habits, distractions and dirt. Communication, collaboration, cordiality, and care. Promiscuous, driving, navigating and alignment. A coach will examine what you are doing and supply what you are missing or overlooking. A coach will help you build technique and strength.