The construction industry has a division named “pre-construction.” There are teams dedicated to studying the cost of making changes by the architects or owners before the construction starts.
We don’t have something like this in software. The CTOs won’t analyze costs beyond hours estimates. The CFOs don’t have the technical knowledge to challenge estimates. The link between architecture/technology and the development cost is non-existing.
During the development phase, the responsibility goes to the engineers. “Here are the architecture, the technologies, and the estimate. Go and build it. Don’t overspend.“
Engineers with strong principles will build something the right way, taking more time than planned. Those who give up to pressure or don’t care enough will complete the task on time (or not!) but will generate technical debt.
And that’s the missing piece in software. Quantifying technical debt to make better estimates.
If a task that was supposed to take 2 hours took 2 hours but generated 4 hours in technical debt (someone along the way had to redo/refactor/reimplement), the actual cost was 6 hours.
With a pre-coding analysis, you can start saving those 4 hours before the development phase begins.