And in many cases the entire org chart has been built around the first draft. It's psychologically hard for developers and for people paying the bills to throw stuff away, so we often dig in our heals and accept the first solution that works, along with the tech debt and resulting pain.
Now the drum I keep beating is - software process needs a design phase. You need some plan, some coherent vision of the architecture, otherwise you get a system held together with duct tape and prayers.
Agile made it fashionable to sprint ahead without any coherent plan.
Waterfall obsessed about the plan and failed to adapt to new circumstances.
There has to be somewhere in the middle where a design is subject to empirical testing. We have to change the design based on results of running real code. In other words, when the first draft doesn't work quite right, you don't ignore it (Agile) or try to shoehorn it into the existing design (Waterfall) - you change the design and try again. "Throwing stuff away" could be reframed as the scientific method. This needs to be normalized as a part of the process so we remove the stigma of "failed" experiments, which are not failures but valuable sources of information that improve the final product.
Now the drum I keep beating is - software process needs a design phase. You need some plan, some coherent vision of the architecture, otherwise you get a system held together with duct tape and prayers.
Agile made it fashionable to sprint ahead without any coherent plan.
Waterfall obsessed about the plan and failed to adapt to new circumstances.
There has to be somewhere in the middle where a design is subject to empirical testing. We have to change the design based on results of running real code. In other words, when the first draft doesn't work quite right, you don't ignore it (Agile) or try to shoehorn it into the existing design (Waterfall) - you change the design and try again. "Throwing stuff away" could be reframed as the scientific method. This needs to be normalized as a part of the process so we remove the stigma of "failed" experiments, which are not failures but valuable sources of information that improve the final product.