Turning First

I'm teaching my 16-year-old daughter to drive. While I ride along, I think about software development, because thinking about imminent death and dismemberment gets a bit old after the first half hour or so. Here's what I noticed:

When she is stopped and she needs to do something next, like turn, she starts turning before she starts going forward. This leads to cutting of corners, crumpling of bumpers, harm to wildlife, etc.

When she is moving and she needs to do something next, like turn, she starts turning long after I would. She needs to get off course before she can see the need to correct.

I think this is like me and design. When I was a little nipper, I would design ahead before I started developing. This lead me to have designs that were carefully optimized for things that didn't happen. When my designs started to lose their fit with the actual requirements of the software, it took me a long time to notice and correct.

Mature (or at least maturer) design for me is to get going first, then react. The instant I see the design lose fit, I start correcting. The result probably looks from the outside like I carefully plan ahead, but I am "just" reacting. --KentBeck


When I taught my 18-year-old son to drive a year ago, the most important things to teach him where "GoSlow" and "DoStop". GoSlow gave him the time to react, to chose direction, to relax, to listen to me. DoStop gave me the chance to shout "STOP" in case of emergency and have him stop within a few meters.

What do I want to say? Neither GoSlow nor DoStop are a problem in software development. So I think there is a limit to the usefulness of analogies. -- HelmutLeitner

Similarly, I don't see the analogy. When driving, you are already well aware that you are turning before you make the turn. You should have already signaled the turn well before actually making it. The error here wasn't in up front design, but in incorrect execution. Actually, having the prescience to know that you have to go forward first before turning requires "up front design," because it is not the "most obvious and direct" solution to the problem. -- SunirShah


EditText of this page (last edited October 24, 2000) or FindPage with title or text search