What's missing is statefulness.
If you code well after coding fast, and learn from your prototypes, you might be able to finish before obsolescence.
It's called "Throw the first one out".
... maybe the first several. A programmer will make mistakes. You can't fix stuff until you make the mistakes, so you might as well make mistakes (in the general direction of the spec) as fast as possible. What you might learn from the hacked up early versions is how wrong the specs are when you actually play with the app, and what parts you might need to code well to finish.
Then rewrite (and rinse and repeat).