If I remember my CS terminology correctly, selecting the locally optimal solution on each iteration is a characteristic of a GreedyAlgorithm?. The alternative is to define the whole project starting with the endpoint, and work backwards from there using DynamicProgramming? to produce something globally optimal. This is Wiki:BigDesignUpFront, and there's a point to be made here about having to being able to define the endpoint before it works. --DanBarlow
Let's assume that there is some optimal set of steps O that will solve the problem in the given resource constraints for maximum value. Then, there must be some subset N of O that is the set of all necessary steps to solve the problem in the given resource constraints, but for sub-maximal value. Since you have to do N anyway, no matter what, if you do N first, you will guarantee success. Also, N has the added benefit of being much easier to know than O - N. Wasting time making guesses at what might be good may exhaust your resources prematurely.
Therefore, stick with the ObviousNextStep always. Avoid cleverness unless you can afford the risk of failure (and desire the chance of megarewards).
ObviousNextStep is like a steepest descent optimization on a hypersurface. It may work but it may mislead you into a local minimum. Getting out of this local minimum may take a lot of planning and a lot of energy.
That is almost correct. The ObviousNextStep leads you into local optimization if you restrict your sense of "obviousness" to what is locally surrounding you. However, if you maintain a good education of the alternatives, eventually it will be obvious you are climbing the wrong hill. The planning and energy aren't needed either provided you are willing to accept a suboptimal but good enough solution. You can just randomly jump around (or use simulated annealing) to examine other points. Or, if you have knowledge of the space (say by keeping abreast of the technologies out there), you can make a "good guess" as to what a better alternative might be. If you want, you can even try a small experiment, ala Wiki:SpikeSolution, to test the hypothesis.
And yes, here I'm using "obvious" as a weasel word in some respects. On the other hand, obviousness is a subjective sense we all have to varying degrees, so it isn't too bad provided you are open to your own inner experiences..
So the ObviousNextStep depends on the horizons of the developers. While one developer may choose a simple step A, a more experienced developer might choose a different step B: more complicated, more work, but also more effective in the end. Of course B will be simpler and less work 95% of the time.