Earlier quoted context omitted.
No but it lets you iterate faster. Who hasn't come up wit the most perfect elegant design, only to come up against three reality of implement and an "oh we forgot about that" aspect. Except by then, it's too late to change, so you march on. Writing code faster lets you find the things you didn't think of faster so then you get to design it again but better this time.
That sort of trial and error design seems like a really unprofessional way of working.
If you have a bad design that's had contact with reality for a while, it's much easier to make it actually good, rather than figure stuff out up front (I've rarely made this work, even though I'd love to).