On Exactitude in Technical Debt
oreilly.com
oreilly.com
More developers and eng managers need to understand this.
No wonder most replacement projects I've worked on (which, come to think of it, has been every project) have been just complete rebuilds; the original was considered bankrupt.
I mean I get it in some cases (like when we replaced a Flash front-end with a SPA; you can't fix a technology that is end of life), but in a lot of cases they should have invested in just slowly fixing and replacing the old application, instead of going for the big rewrite.
There was no reason to replace a working C# application with all kinds of 3rd party / customer integrations with a massive Java microservices architecture, not when after two years there was still nothing but fancy slides to show.
The most common technical debt I've seen is lack of documentation and lack of design. It's gotten worse in recent years because the concept of Agile and MVP are forcing/changing everyone to glue services together without a solid requirement and any shape of design.
Your mileage might vary. I'm open to people with longer or different experience than my own having observed another reality, as this is just anecdata.
This is one misunderstanding of code quality which takes an absolute approach to measuring code health. Code health is relative to the changing requirements of it’s use. If you suddenly add a requirement that doesn’t fit existing design assumptions, the code hasn’t changed but the relative to the ideal has deviated...without touching the code.
The tech debt metaphor is not perfect. The pandemic has given us all a better metaphor: the code health epidemic. I’ve written about it here: https://sovilon.com/2020/05/15/atd-epidemic-prevention-respo...
code does rot
That premise is factually wrong, code degrades over time because everything the code interfaces with is shifting over time (OS, compiler, interpreter, dependencies, etc...).