A front page story in this morning’s USA Today talked about airline safety and how improper simulator training for pilots often causes accidents. Flight simulators, no matter how impressive the technology behind them, are not perfect representations of actual flight. Yet, the airlines rely on them for the bulk of new pilot training. So, under certain circumstances, pilots take the wrong actions because they react to how the simulator works, not to how the plane actually works. This is proof that the old adage “practice makes perfect” isn’t quite right. The saying ought to be: “practice make permanent.” Practice the wrong things, and you just get good at doing the wrong things.
Now, I’m a bit weird, so reading this story put me in mind of pair programming, of all things. I observed that pilots and copilots are the original pairing partners. They join forces to back each other up. So, as I read about the times when training failures resulted in accidents, I wondered how many more times accidents have been avoided because the copilot kept things in check. I wouldn’t be surprised if the answer is two orders of magnitude more.
I mentioned this to some colleagues during lunch, and we got to talking about just how far the analogy of copiloting to pair programming goes. I observed that takeoffs and landings are the events when both pilots are focused the most, and I wondered how that might compare to programming. We decided that the analogy to a takeoff is the design phase of a story; that getting off to the right start with thoughtfully crafted object models and sequence diagrams means a smooth a flight. The landing, therefore, equates to acceptance testing; where collaborating on a comprehensive set of acceptance criteria can make all the difference between a story that succeeds and one that crashes and burns.
I still recommend pairing at every opportunity, but it seems clear that if a team cannot, or will not, then they should at least endeavor to collaborate on the system designs and the acceptance tests — that that would be far better than not pairing at all.