write bad code [...] which
you will later throw away
Implementing a quick & dirty prototype, throwing it away and reimplementing it from scratch is not such a bad software engineering techique: first time to understand the problem, second time to make the implementation nice.A lot of bad software comes from not throwing the prototype away, but insteat trying to refine it into a product. Result = spaghetti.