If you’re tasked with building something, build it properly the first time. New projects often require some exploratory development to become comfortable with a new platform. As soon as your done, start over when it’s time to build the real thing.
There’s absolutely no other excuse to prototype with real code. Use static pages or any other model representation of your project. Anything but code.
You should be treating every project like a production project. If you lower your standards in a prototype, you’ve already lost. They always end up in production, with just one more change request.
Be aware of the intended application shelf-life. A throw away agency campaign does not need the same level of craftsmanship as your companies flagship product which needs to support the company for the next decade.
If you pay for your poor design decisions for a decade without a major rewrite, the application will be riddled with complexities and repetition. If you over design a simple project, you may end up with either to much coffee to maintain, or be a little over budget.
What’s worse: 10-20% over budget now, or paying your development team staff an extra few years salary for maintenance, loss of morality, the inevitable churn and finally new staff training.