Spiral development with dependency injection is avoidable. A zero-cost solution is enforcing workmanship standards, well documented simple/clean design-patterns, and doxygen discipline.
https://en.wikipedia.org/wiki/The_Power_of_10:_Rules_for_Dev...
Maintainable coding practices are a skill like any other. =3