However, I think the programming world has now oscillated to far in the other direction. There seems to be a widespread perception that having a 5 minute discussion, hacking some shit out, and releasing it is the best way to do things.
The "fuck planning, just ship it" dogma is just as perilous as the "don't ship it until it's ready, even if that means it will take years" dogma.
Instead, try to ask yourself the following questions before you hit the "deploy" button:
- Will I be embarrassed by the quality of this software?
- In user tests, has it shown itself to be useful enough?
- In user tests, has it shown itself to be confusing?
- Will future features be undermined by releasing this version? (For example, will the UI have to change dramatically to add certain must-have features I have yet to implement?)
As is the case in most things, the best advice can be summed up in one word: think.