So, what does all this mean?
Prototypes are your friend. Keep it simple.
1) In developing any product, especially software, DO IT NOW. So pick the things you can do NOW and get them done. Not partially done, not sloppily done…DONE, as in IT WORKS! This frees you to do something more, different…if you keep slogging on the same old thing, you are trapped in diminishing returns.
2) Decide when you are ready to show something GOOD to your customer. Keep the pace up. Don’t fall into the trap of “We can’t ship it, because the next version will be so much better!”. Show it, agree on what has to happen next[*], and then ship when you say you will.
3) Ship it, and follow up. Make a list of things you can do NOW. See step 1.
[*] Agreement means “We will pay you money when it does this.” Not “It would be nice if it did this”…that’s not agreement, that’s just socializing. You need agreement, or you aren’t DONE.
How does this fit into what I was talking about before?
A really good prototype might well be something you can sell; if not you can sell the idea, get feedback, and make something that can be taken to the market. It also allows you to play with something completely new, or the crazy idea for your main product that is too risky to actually DO with the main product.
As always, comments are more than welcome.