I’ve seen this pattern a number of times in my years as a software developer, and it’s always hard to watch:
( The codebase grows until it’s more and more out of control. We’re getting scared to make changes and manual testing is taking forever. )
( Test suite starts off well, but quickly becomes very slow and very flakey. When tests fail, it takes a lot of debugging to figure out why. They also require all kinds of complicated setup making them too hard to write.)
It’s obvious why this pattern keeps occurring: Every next step makes sense given the current state.
It’s hard to break out of the cycle too, because it’s self-reinforcing. Working around the damage seems to create more damage. The things that seem like obvious solutions from an “in the spiral” point-of-view only make the problem worse.
Undoing the damage takes a lot of expertise and investment. But most importantly it’s expensive as hell the longer it goes on. You waste time:
Over the long run, cutting quality measures almost always costs you more than you gain.