3 ms·
Bad code isn’t technical debt, it’s an unhedged call option (2014)
- joshribakoff 9y agoIsn't a call option really a call bond, and a bond is an instrument of indebtedness. This article has typos & I fail to understand what they're trying to say, specifically this part: > If that code is never called upon again than it would have been foolish to clean it up in the first place. However, lets say a radical new feature is going to added – these quick fixes and become very expensive to deal with. Time has to be taken to fix these issues right before deadline or no one on the team remembers pertinent information need for the code to make sense in the first place Ignoring the fact this is full of grammatical errors & makes no sense, the "call option" metahphor implies I may have to cleanup an entire codebase at some unknown point in time, which isn't true -- its always possible to shoe horn in more quick fixes instead, just like you could pay off a credit card with a cash advanced from another credit card, going further into debt. So Debt is the more appropriate metaphor in my opinion. > The problem with technical debt as a metaphor is that for managers debt can be a good thing But technical debt can be a good thing. And so can a call option, if it never gets called. The article itself points out you may find out later on that you do not even need the code after all, and therefore any cleanup would have been wasted effort. The author is grasping for a metaphor to make technical debt sound more evil than it probably is. No one is going to force you to cleanup your code. You still have the choice of adding more messy code, and going further into debt. Because you have that choice, its just debt, not a call option. Debt, including technical debt, can be a good or a bad thing. Just like real debt, technical debt can be used as a growth hack. If you can write some crappy code that makes you a million dollars, you can go back & pay someone to clean it up later. Its not inherently evil. A call option would be a good metaphor for a security problem. For example an Equifax programmer may have pointed out the leak to his boss, who said let's spend time on new features & instead ignore the security problem [therefore giving out a call option to the public, for short term financial gain]. Then some hacker from the general public came along & called the option, by exploiting the leak. Now Equifax has to pay up. So technical debt is not a call option, security issues are call options. Since writing messy code has been shown to correlated with bugs & security problems, I guess you could actually argue that messy code is a call option because it might get exploited, or crash production... both of which are a loss. Although a liability would be more appropriate metaphor, because you can eliminate liabilities as you gain new information... your product starts becoming more popular over time. A call option cannot be canceled just because of a market uptick. Messy code can be eliminated as your product's market is validated.
- dang 9y agoThis article/site seems kind of dodgy in that it doesn't mention the original post, which dates from 2010: https://web.archive.org/web/20111220004305/http://www.higherorderlogic.com:80/2010/07/bad-code-isnt-technical-debt-its-an-unhedged-call-option/ https://web.archive.org/web/20111220004305/http://www.higher... ... and was discussed twice on HN: https://news.ycombinator.com/item?id=1541211 https://news.ycombinator.com/item?id=1541211 https://news.ycombinator.com/item?id=8777237 https://news.ycombinator.com/item?id=8777237
- lootsauce 9y agoI think it's useful to try to think about software development in economic terms. Metaphorically is it more like a call option or or is it more like a debt? In my mind they are both the same thing. Unless you want to be pedantic about it in which case, well it's neither, its software. But if not then Real Options is what we're talking about [1] Two fundamental themes in economic thought are the value of optionality (opportunity cost aka options pricing) and the value of something in hand vs having it later (cost of risk, aka interest rates on debt). Everyone determines this for themselves and behaves accordingly creating a market. One persons cost is another value, people see the world in different ways and have different desires so they come up with opposite positions and thus a deal is struck. Wait a tick, that sounds very similar. Thats because debt is an option. To the debtor it is a call option on the value of money now vs later. To the lender it is a put on the value of money now vs later. An interesting thing is that they are often both right. And it is the pricing of risk that rounds out the equasion. My home mortgage is debt, yes, but ostensibly I did not go into that financial arrangement for the privilege of making payments and doing maintenance for 30 years. I did so because the optionality it provided was more valuable in my mind than the alternatives. I was bullish on home ownership as a benefit to me vs the cost of the debt long term. Inversely the bank had few other options with as-desirable a risk/reward profile aka yield. They were bullish on my ability to pay the debt or recoup it via reselling the asset if I defaulted. They were placing a put on their money in-hand seeing it's value going down over time. If they did not invest it or lend it out to gain yield it would lose value via inflation. Both of us are making assessments of value and risk and both of us are happy because both of us have different time horizons and different needs. I’ts actually a beutiful thing. The loan is a Real Option. From wikipedia: A real option itself, is the right—but not the obligation—to undertake certain business initiatives, such as deferring, abandoning, expanding, staging, or contracting a capital investment project. For example, the opportunity to invest in the expansion of a firm's factory, or alternatively to sell the factory, is a real call or put option, respectively. I think the decisions we make every day are all Real Options. We all make resk reward tradeoff decisions all the time involving how we value our limited time and our limited ability to predict the future. Software development is no different. [1] https://en.wikipedia.org/wiki/Real_options_valuation https://en.wikipedia.org/wiki/Real_options_valuation