4 ms·
> I don't classify these as technical debt because Apologies if this is too meta, but that is the most interesting part of your comment for me. It conceals a m
by philbo 11y ago
> I don't classify these as technical debt because
Apologies if this is too meta, but that is the most interesting part of your comment for me. It conceals a massive assumption which all devs make, resulting in very different conclusions.
What IS technical debt?
My own preference for the answer is Uncle Bob's description, which is this: technical debt is any production code that does not have (good) tests.
But regardless, any attempts to address technical debt must necessarily begin with a common understanding of what technical debt actually is.
I've rarely seen teams agree that understanding and I think that contributes to their problems.
- dragonwriter 11y ago> What IS technical debt? Any feature of the code or tech stack that increases maintenance/operations cost compared to alternatives. > My own preference for the answer is Uncle Bob's description, which is this: technical debt is any production code that does not have (good) tests. That's certainly an example of technical debt.
- shoo 11y ago> > My own preference for the answer is Uncle Bob's description, which is this: technical debt is any production code that does not have (good) tests. > That's certainly an example of technical debt. Agreed, it is not the only example, but perhaps it is a good one, as that is a particularly important form of debt that makes the code harder to safely change. I.e. it is a form of technical debt that makes it more expensive to pay off other kinds of technical debt. Curiously, Michael Feathers has a similar definition of legacy code [1]: > To me, legacy code is simply code without tests. [1] http://www.amazon.com/dp/0131177052 http://www.amazon.com/dp/0131177052
- dragonwriter 11y agoI think "code without tests" is a fine example of technical debt or legacy code, but using it as the definition of either disregards the importance of everything other than tests that goes into making systems maintainable. Tests are necessary but not sufficient. (Particularly, tests embody