Osman Din’s Weblog

heuristics.c

Posted by: Osman on: 22/10/2004

[From the Wiki on Heuristics]:

Contract to Expand

A heuristic (a rule of thumb) for exploring unknown space.

Pick a smaller problem that what you’re really going after, and solve that tiny problem completely. This will change your vantage point, opening up new, accessible steps toward the bigger problem.

The underlying principle is that only some goals are accessible to you right now. (In mathematics, for example, there are only some problems you can solve right away) Achieving some goals right now, like signing a few customers, will make more goals accessible to you latr though right now you can’t know what they are. Pick something that you can do right now, and do it right now. It doesn’t matter that it’s not your ultimate goal and you can’t quite see how the step right now will lead to the ultimate goal.

Focusing one one thing will open up new possibilities. Focusing on a ton means you won’t accomplish any of them.

Whenever you find yourself pulled in too many directions at once, unable to make headway anywhere, Contract To Expand. Pick a more modest goal, one about which you can think CLEARLY and that you can ACCOMPLISH right now. Then, you’ll be in a whole NEW position.

Example: You’ve got lots of ideas for how to radically improve the design, but it’s hard to keep it all in your head at once? Don’t do them all at once; just pick one simple refactoring job and get it done (and right now).

The trick in Extereme Programming is to continually Contract to Expand.
Apply full force to one very small, concrete job at a time, and gradually the “space” of good design will open up to you. Attack on may fronts at once (through intense forethought) and you only get confused. Take what is accessible now, and more moves will then become accessible – moves that you can’t anticipate in detail yet.

Leave a Reply