It’s not common that any single change dramatically increases the complexity of a software system. Rather, small dependencies and obscurities stack up over time and slowly ramp up the complexity of the system.

Since the increase in complexity is likely small for any given change, it’s also the case that addressing any particular issue will have a small effect. That puts the development team into the position of either needing to dedicate substantial up-front time to address many issues at once, or the team needs the space and time to address individual issues over time. Unfortunately, it is often difficult to get corporate stakeholders to agree to such measures, and so the best strategy is to ensure your designs minimize complexity before it can enter the system.


References

Ousterhout, John (2018). A Philosophy of Software Design.