But I also follow a development methodology that I call "paving the bare spots."[0] It adjusts the design, as the project progresses. Not for the faint of heart. It means that I may toss out a month's work, because it does not fit the user experience (which is under constant revision). We have also made a couple of major pivots, during the project, to fit new realities.
I have probably tossed out three months' worth of work, as the project has progressed. Happy to do so. The best code, is the code I don't write.
The nice thing is, is that the product is constantly at "ship" Quality. Makes demos, user testing, and begging for money, easier.
[0] https://littlegreenviper.com/miscellany/the-road-most-travel...