The problem with this approach is that you can't just adopt it and expect it to work. In a codebase that has had months and years of the old approach, usually small iterations aren't actually _possible_ because all the fixes sitting on top of root causes that were never addressed tends to hang together. I solved a root cause a couple of weeks ago, and it caused some other code that had resulted in an undiagnosed memory leak to blow up--but fixing the undiagnosed memory leak isn't going to be a 5 minute job. It's going to take deconstructing a bunch of tightly coupled logic that doesn't explain its purpose to figure out what that original purpose was and how to do it a completely different way. So we had to pull out the fix of the underlying issue until we have time to fix the logic that was unknowingly built on top of a bug.