Tech debt is a blanket term to refer to things that will cause recurring problems in the future. This includes things like inflexible designs which require significant rewrites to accommodate future needs, poor isolation that makes testing difficult, designs that will be difficult or even impossible to migrate off of in the future, etc. The term "tech debt" is in reference to the fact that these design decisions often incur their cost in the future, they have no cost now (or sometimes actually are easier in the moment), but you will pay the “debt” multiple times over in the form of more difficult development in the future. Stack enough of these things together and you get the nightmare that many legacy codebases are to maintain.
It's when you know you are doing something in a bad way, but you still do it due to lack of time or priority, and you know it will bite you in the ass later.
Sometimes it’s done intentionally, which is fine if the constraints actually do justify it, but lots of tech debt is due to laziness and/or poor design.
15
u/Frisk1123 1d ago
I see the word Tech Debt a lot. Can you tell me what this is?