Live data from Hacker News

Technical debt is not debt; it’s not even technical

markgreville.ie

91–100 of 147 posts

Re: Technical debt is not debt; it’s not even technical

#91
I didn't really agree with anything in this article and to be honest it feels like the whole thing was written just to be contrarian.

Its definition of "debt" is too strict. Sure if you take on a mortage or a bank loan, then principle, interest and term will be well defined and enforced. What about when you borrow twenty bucks from your friend or they help you move?

Arguing that technical debt is not technical because it has a broader impact doesn't really seem very important. Calling it "technical" because it originates in a technical part of the company and while building out tech makes perfect sense to me. The fact it can have a broader impact doesn't seem very important when naming it.

Re: Technical debt is not debt; it’s not even technical

#92

I hate the term "tech debt", although I appreciate that it is a way to communicate with non-technical decision makers. It isn't debt, we don't have to pay it off. I consider it a coefficient of development friction that must be managed to be an appropriate level for your strategic (business and technical and other) goals. You want it as low as possible, but bringing it that low costs development effort that could be…

It does have to be paid off. A business's technical division can, and inevitably will, become insolvent due to the accumulation of that debt. I take it you've never worked at a company which, after a fast & high-complexity period of startup-development, has had its development grind to a near-halt? Where it takes weeks to make a one line change? This is the analogous equivalent of insolvency for tech debt.

Re: Technical debt is not debt; it’s not even technical

#93

I hate the term "tech debt", although I appreciate that it is a way to communicate with non-technical decision makers. It isn't debt, we don't have to pay it off. I consider it a coefficient of development friction that must be managed to be an appropriate level for your strategic (business and technical and other) goals. You want it as low as possible, but bringing it that low costs development effort that could be…

Well, real debts don't have to be paid off either. Debt IMHO is a fantastic metaphor if we look at it in more detail, from both the financial and software side... SUMMARY: tech debt is just like financial debt, but with a clock whose speed varies with the rate of change of use cases and dependencies. Also, more subjective because instead of borrowing fungible money, you borrow extremely illiquid (and thus hard to obj…

That is an incredibly overwrought explanation that even more of an argument against the analogy.

Much like a joke, if you have to go to great lengths to explain an analogy, it is a bad analogy.

Tech debt is just a bad analogy, with a bit of use because friction is less understandable (but more accurate) to many financial and business people.

Re: Technical debt is not debt; it’s not even technical

#94
post #92

I hate the term "tech debt", although I appreciate that it is a way to communicate with non-technical decision makers. It isn't debt, we don't have to pay it off. I consider it a coefficient of development friction that must be managed to be an appropriate level for your strategic (business and technical and other) goals. You want it as low as possible, but bringing it that low costs development effort that could be…

It does have to be paid off. A business's technical division can, and inevitably will, become insolvent due to the accumulation of that debt. I take it you've never worked at a company which, after a fast & high-complexity period of startup-development, has had its development grind to a near-halt? Where it takes weeks to make a one line change? This is the analogous equivalent of insolvency for tech debt.

I disagree, it doesn't have to be "paid off", no one is waiting for the "money". Rather, design and code decisions may need to be addressed in the future to alleviate development friction.

I have worked in places as you describe, and tech debt is still a bad analogy. It isn't debt, but rather friction, which is a much better analogy.

Re: Technical debt is not debt; it’s not even technical

#95
post #3

I agree with general sentiment that people mean different things by "technical debt" but don't buy the argument for the title. Article says: "Debt repayment has three properties that are straightforward to grasp — principal amount, interest rate, and term [...] when comparing technical debt, there is no agreement on the principal, [...] there is no concept of an interest rate [...] , term length isn’t a fixed concept…

> "This feature would take 1 day if we had database layer, but because of technical debt we own, it will take 4 days instead". In this case "3 days" is the "interest payment" Nit: Not the entire 3 days is interest in this analogy because you are also paying down principal. For example: "Implementing the database layer properly would have taken 5 days; because we took shortcuts (for business reasons) it only took us 3…

> Nit: Not the entire 3 days is interest in this analogy because you are also paying down principal.

I didn't read the GP as saying that they were paying down principle. They don't say what the hypothetical feature is, but my assumption was that it's a feature that they could implement without a database layer but that would be faster if they had a database layer. That is, I assumed that even after the 4 days of development for the new feature, they still won't have a db layer – which is why the extra three days is pure "interest".

Re: Technical debt is not debt; it’s not even technical

#96
My take on technical debt is that it’s a mismatch between requirements then and requirements now. And I don’t mean the written spec, I mean the dauntingly complete extent of requirements that exists mostly unverbalized in architect’s mind and applies to software’s existence in respective subject domain landscape over time (relating to maintenance effort, evolution of software, evolution of subject landscape, and so on).

I think the term “technical debt” is useful in the sense that it can do a good job of conveying the gist of the consequences of this mismatch that matter to people outside the development, without the above esoterics which I’d do a poor job at communicating (without confusing or alarming my target audience, anyway).

Re: Technical debt is not debt; it’s not even technical

#97

Well, I did what the author suggested, and wrote down my definition. After a short internal dialog, I came up with this: "Technical debt is the burden that implementation choices may place on future development." Nothing in the article leads me to think that this is either incoherent or irrelevant. With regard to its coherence, I say that it is empirically verified: it actually happens! The claim that it is not techn…

> "Technical debt is the burden that implementation choices may place on future development."

> With regard to its coherence, I say that it is empirically verified: it actually happens!

Something happens, on this we can agree, but if you are making checkers and find out you need chess, it isn't that making chess is any harder than it was before you did anything -- so no, I would not agree that it placed any burden on future development.

No, I think the real issue is that you have already paid for checkers and so you feel unhappy that your time (and maybe money) was wasted on checkers when you simply can't sell checkers because all along you needed chess.

> The mere fact that most of the technical things we choose to do are done for non-technical reasons is enough to establish that. The root cause of a problem and its broad consequences are separable concerns.

The root cause is that you do not know what you want. Writing the crappiest version of checkers as quickly as possible is a great way to find out it is the wrong thing. Trying to write an "abstract board game" instead of just writing checkers so that the decision to choose checkers or chess could be delayed as long as possible is not: It assumes that it is mere time that informs us of what we want, rather than the feedback of seeing what we don't want.

> it is completely reasonable to consider the situation where, say, I give a farmer cash in return for some produce at harvest time to be a debt

We can fantasize about a great many things, including this, but software is not produce that is harvested and sold; you do not plant great software seeds to grow into great software trees. No, the debt is the cash that the farmer received, just like the debt is the cash you receive to write the software. The software itself is not debt and never was.

Re: Technical debt is not debt; it’s not even technical

#98
post #97

Well, I did what the author suggested, and wrote down my definition. After a short internal dialog, I came up with this: "Technical debt is the burden that implementation choices may place on future development." Nothing in the article leads me to think that this is either incoherent or irrelevant. With regard to its coherence, I say that it is empirically verified: it actually happens! The claim that it is not techn…

> "Technical debt is the burden that implementation choices may place on future development." > With regard to its coherence, I say that it is empirically verified: it actually happens! Something happens, on this we can agree, but if you are making checkers and find out you need chess, it isn't that making chess is any harder than it was before you did anything -- so no, I would not agree that it placed any burden on…

not all "technical debt" is wanting chess when we built checkers.

it can just be building a minimal chess quickly using methods/frameworks that are not easily extensible to future requirements related to chess.

the vast majority of software projects will have features/requirements that evolve after the initial design, it is a rabbit hole to try and guess all of those, but some things are just common sense but would add a little time to the first milestone. then you are in the position of tacking on things indefinitely making it a horrible tangled mess.

Re: Technical debt is not debt; it’s not even technical

#99

Well, I did what the author suggested, and wrote down my definition. After a short internal dialog, I came up with this: "Technical debt is the burden that implementation choices may place on future development." Nothing in the article leads me to think that this is either incoherent or irrelevant. With regard to its coherence, I say that it is empirically verified: it actually happens! The claim that it is not techn…

I prefer to think of it as, the more there is the more there is to fail. I apply that to the entirety of the application not just the tiny part I write.

Re: Technical debt is not debt; it’s not even technical

#100

Earlier quoted context omitted.

There are two quotes from Cunningham in there: A little debt speeds development so long as it is paid back promptly with a rewrite. Objects make the cost of this transaction tolerable. The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. >> Cunningham disliked the notion that technical debt signified “doing a poor job now and a better one later.” T…

I am someone else who apparently never understood what technical debt was supposed to mean. I've always assumed engineers (myself included) write code to the best of their abilities to solve a given problem at the time. But we all know that, over time, features and such get added to the code base and it is stretched beyond what it was originally meant to do. That the code base would should be refactored to better acc…

> I may be splitting hairs here but I want to make the distinction that at no point was an engineer making poor choices.

Financial debt can be both good and bad. Good financial debt lets you take advantage of opportunities now that you wouldn't otherwise be able to afford, and you end up better off in the end. Bad financial debt leaves you worse off in the end. Taking on financial debt absolutely can be a poor choice.

I don't see why these same qualities can't show up in technical debt as well. So sometimes engineers might be making poor choices, the point is to evaluate whether the debt is taken on to exploit an opportunity, evaluate whether you'll be better off for taking on that debt, and to ensure you pay it back in a timely manner.

Post reply on HN