"If you have to eat a toad, don't spend too much time looking at it. If you have to eat three toads, don't eat the smallest one first!"
I wish I'd kept this wisdom in mind in the recent past -- I'd have been able to get a lot done a lot quicker. There's a strange virtue in doing just enough planning. To assume complexity in a piece of unknown work is not really the most prudent thing to do. Often an experiment -- what developers will call a "spike" helps define the real extent of work. I have now learnt; perhaps the hard way that its best:
a) to define the "real" complexity of work;
b) to do the simplest thing that works;
c) to defer work for simpler alternatives, while still remembering that actual results are more important than avoiding work;
d) to do the most "complex" piece of work first;
e) to plan only one or two steps in advance because over-planning only clouds your thinking and avoids you from keeping things simple;
and lastly to realize that in any form of iterative development, the only way to learn is by doing something; getting something out of the door and seeking feedback. To plan for ages, waiting for a "more effective" solutions not only generates zero value, but also gets zero feedback for your own growth and learning.
So, while running the risk of repeating an overloaded line -- the mantra is to "Just do it!". To repeat Richard Branson, its to say, "Screw it, lets do it!"