Everything I really need to know about object-oriented design I could learn on a black-diamond ski run. post
Group photo of WOOD '94 attendees. WOOD pre-dated the Agile Manifesto meeting also held at Snowbird. twitter
_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?
- Look Three Bumps Ahead - Use Your Edges - Have No Fear
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?
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.
The Athletic Skier is a "how to" book for intermediate to advanced skiing. It focuses on tuning the "whole body" aspects of skiing. Starting with basic body mechanics to the details of boot and ski tuning. The relationship to Extreme Programming may be that the tuning processes requires very careful attention to details. wiki obituary
All I Really Need To Know I Learned in Kindergarten is a book of short essays by Robert Fulghum first published in 1986. Fulghum lists lessons from kindergarten and explains how the world would be improved if adults adhered to the same rules, i.e. sharing, being kind to one another, cleaning up after themselves, and living a life of work, play, and learning. wikipedia site