Everything I Really Need to Know About Object-Oriented Design I Could Learn on a Black-Diamond Run.

by Ward Cunningham

Adapted from memory of my opening remarks at the Workshop on Object-Oriented Design (WOOD'94), Snowbird, Utah...

Friends, I have, like you, struggled to understand the fine points of each of our methodologies as presented here the last few days. And, I have been wondering if we aren't making this all more complicated than it need be. I wondered if designing isn't a lot like skiing, that is, easier to do than to explain or prescribe. Then I realized: everything I really need to know about object-oriented design I could have learned last weekend skiing Utah's black-diamond runs. [Note, black diamonds mark the expert ski runs that had defeated the speaker until recently.]

What are these things that we must do to make designing (and skiing) a thrilling and natural activity?

Why three bumps ahead? Well, things come pretty fast on those steep slopes. When I'm looking at my ski tips I may get through the first bump but I won't be ready for the second. Same with software. But I can't make plans beyond three bumps ahead. Things happen. Conditions change. I must be prepared to revise my plans with every turn.

Now, to make these turns, I have to use my edges. I can't twist and turn my body to turn the skis; I must let the ski's edge do the work. So, let me ask you, what's the object designer's edge?

(silence)

Polymorphic message sends! That's what we use to turn a design around a bump. We plan and balance our designs just so we can apply that edge when we need it, which in practice is most of the time.

Finally, while skiing or designing I must have no fear. Fear will distract me from the relentless stream of decisions I must make to get down the slope or through the design.

I met a woman last weekend that learned to ski here in Utah on the black-diamond runs. She started on them, before she knew they were to be feared. It worked. Likewise, I learned objects before I knew they were to be feared. I learned them quickly and know them well.

Could we be making too much of this object-oriented design business? Could we really just be scaring people; selling fear, which sells quite well? We should have more faith in people. We should simply teach that objects introduce an edge, that the edge lets us make sharp turns, and that neither should be feared.


ward@c2.com