TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Technical Debt Is Like Tetris

134 pointsby pavel_tiunovabout 6 years ago

12 comments

dane-pgpabout 6 years ago
It&#x27;s a great analogy, and it reminds me of a model I like to use when thinking of technical debt:<p>Get a jar full of jelly beans, and every time you have to make a compromise (e.g. adding some hacky code or introducing some problem you&#x27;ll have to fix later) take a bean out of the jar. If it&#x27;s a terrible hack, then take out several. For the first few jelly beans, you won&#x27;t even notice the change to the jar, and the first few compromises aren&#x27;t going to be a problem for the code either.<p>Once the decrease in the jar contents starts to become noticeable, though, use the fraction of empty space as an enlargement factor for any estimate. So if the jar is 10% empty, consciously and vocally add a 10% additional &quot;interest payment&quot; on every estimate you give. If the jar is half empty, then you can double your estimates.<p>This is all very approximate and not rigorous at all, but it does help a team to visibly keep track of the amount of compromises they are making, and does surface the hidden cost to future development that gets ignored by a &quot;normalization of deviance&quot; bias.<p>At the very least, even if a team isn&#x27;t allowed to change their estimates based on this model, you still get to eat a jelly bean or two every time you add a hack to your code, which can make the decision less stressful (unless it becomes an incentive to deliberately add hacks).
评论 #19355561 未加载
评论 #19355658 未加载
dna113about 6 years ago
I recently needed an HDMI cord for a monitor and realized that my cord drawer was accruing technical debt.<p>Whenever I am done with a cord I just throw it in there... it gets all tangled up with all the others. When I inevitably need one of those cords I impatiently pull it out and it makes all the other cords more tangled.<p>Here I am needing an HDMI cable that won&#x27;t just come out easily, I have to pay off my past laziness. But I have choices&#x2F;tradeoffs&#x2F;opportunities here.<p>I can just hurry up and get the minimum untangled and get back to watching TV.<p>I could untangle all of them since untangling one of them will help me untangle the others and wrap and label them.<p>I could just untangle the minimum, but also throw a roll of tape and a marker in there and wrap and label all future cords that go into that drawer, eventually they&#x27;ll all be nicely wrapped up and well documented.<p>¯\_(ツ)_&#x2F;¯
评论 #19355131 未加载
michalcabout 6 years ago
I like the analogy, but it slightly suggests that you&#x27;re always powerless along the way and that the debt is inevitable. I think there _is_ a technique that is possible in a lot of situations: not putting in abstractions&#x2F;complexity that don&#x27;t really do any of transformation&#x2F;transfer required of the underlying requirements.<p>The reason why this is often possible, is that it&#x27;s _less_ work to start with compared to adding in the layers...<p>... and then when unexpected requirements turn up, there is less complexity to deal with, there are fewer layers to work&#x2F;hack around, and refactoring those that _are_ there to be more suitable to the current set of requirements is often easier, and so more likely to fit into time constraints.<p>I like to think of it as:<p>&gt; Just about everything is cheaper than the wrong abstraction<p>(With a clear nod to Sandi Metz)
评论 #19354988 未加载
评论 #19355091 未加载
pbreitabout 6 years ago
Less code, less debt.
评论 #19354184 未加载
评论 #19354072 未加载
dllthomasabout 6 years ago
One thing I like about this analogy is the implication that some debt can make it harder to pay off other debt. It definitely operates in higher dimensions than just the two. I&#x27;m not sure about the implication that delivered features don&#x27;t have a cost.
elpakalabout 6 years ago
Is tech debt subjective? I&#x27;ve worked on different teams that call anything from wrong grammar in comments to incorrect capitalization of a var name tech debt. Wondering if it follows that more code = more debt because more people have opportunities to disagree about how something was done.<p>Asking for a friend.
评论 #19355017 未加载
评论 #19354867 未加载
评论 #19355634 未加载
评论 #19355718 未加载
EricEabout 6 years ago
Excellent and pragmatic analogy!
wizdumbabout 6 years ago
Author here, thanks for sharing! Happy to answer any questions!
评论 #19357374 未加载
aj7about 6 years ago
“It hid any patterns that might have alerted us customers weren’t being billed.” Haha. Not being billed by the software owner...
ElijahLynnabout 6 years ago
This title is so great, it conveys an almost perfect analogy of the reality of technical debt!
aj7about 6 years ago
My Google Drive has an enormous “cable drawer” technical debt.
DoYouEvenLFTRabout 6 years ago
This might be captain obvious to some, but I think it still needs to be said: Technical debt is like any other debt and needs thorough analysis and some business strategy applied before things can and do get better.
评论 #19354721 未加载