Everything About Objects

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

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

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 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.

-- WardCunningham


I like your analogies. I have always liked the creative aspects of both skiing and software. Software is creative in how you go about solving a problem. Within a set of constraints (the terrain), you can pick you own unique way of solving the problem (like you pick your own unique line). Both also have a lot to do with commitment. You commit to solving a problem as you have to commit to the fall line. Both experiences always teach me something new every time. -- MikeDolbear

You're right. Being tentative ruins both good slopes and difficult projects. There is plenty of time to think over your options while riding on the chair. -- WardCunningham

...or when picking yourself and your equipment up after a "helicopter" that ends with a "face plant" that results in a "yard sale." -- DonOlson


I'm fairly sure design is not analogous to skiing, and I accuse you of gratuitously enthusing about your skiing holiday when you should be describing a computing methodology. -- Bill

The meeting was held at a ski resort. It was hard not to think about skiing when the wall of windows in the conference room looked out over some of the finest skiing in North America. -- WardCunningham


EditText of this page (last edited May 27, 2004) or FindPage with title or text search