Live data from Hacker News

Technical Debt Is Like a Tetris Game

fluentcpp.com

111–120 of 122 posts

Re: Technical Debt Is Like a Tetris Game

#111
In this kind of discussions I read the same two or three positions rehashed over and over again that are highly dependent on the situation(s) the wielder of such opinions has found themselves in previously.

One thing I've never seen properly stated is the difference between technical debt as usually described (building code that is doing the job but might not be as flexible, easy to change or fix or might not account for all corner cases appropriately) and then the kind of debt I've experience more often which is "model debt". In the field of business applications, modeling a problem correctly is 80% of the solution, and new companies usually do that job very poorly. Over time as business experience accumulates, some of those mistakes become evident. For example, how to model the identity of the users of an application, that's where the most mindless decisions I've experienced do the most damage. Let's say you assume the only type of user you're gonna have belongs to "companies" and your customers are companies. Then you discover those companies make heavy use of consultants or contractors, and all of a sudden most of your management tools and UI doesn't quite fit. You can hack it, but you end up with a large slice of your users having to manage 20 different emails to interact with your system. Just an example.

"model debt" is the most expensive and potentially fatal type of debt a new piece of software can incur, and my suggestion is for every new project, focus on building a real good model of what reality looks like before too many other technical calls are made, or you're in for a world of hurt.

Re: Technical Debt Is Like a Tetris Game

#112

In this kind of discussions I read the same two or three positions rehashed over and over again that are highly dependent on the situation(s) the wielder of such opinions has found themselves in previously. One thing I've never seen properly stated is the difference between technical debt as usually described (building code that is doing the job but might not be as flexible, easy to change or fix or might not account…

Model debt a new name for product-market fit? And you are describing pivoting (maybe on a smaller scale)

Re: Technical Debt Is Like a Tetris Game

#113

In this kind of discussions I read the same two or three positions rehashed over and over again that are highly dependent on the situation(s) the wielder of such opinions has found themselves in previously. One thing I've never seen properly stated is the difference between technical debt as usually described (building code that is doing the job but might not be as flexible, easy to change or fix or might not account…

Model debt a new name for product-market fit? And you are describing pivoting (maybe on a smaller scale)

Not at all, reread what I wrote. It's getting the data model wrong for the problem at hand.

Re: Technical Debt Is Like a Tetris Game

#114
post #96

Earlier quoted context omitted.

The problem with this analogy is you don't necessarily take on technical debt when you make your technical decisions. Technical decisions only become debt when you have to revisit those decisions. You don't pay interest on debt over time. You pay interest whenever you build upon or modify the flawed code. You can write the shittiest spaghetti code in the world, and if you never have to build upon - or touch it again…

The only code you never have to touch again is code nobody is using. In which case, it's like a corporation declaring bankruptcy: the debt becomes moot. Otherwise, you always have to deal with it eventually. Look at the Y2K problem. or how the 2038 problem is starting to crop up already, exposing significant levels of technical debt. https://twitter.com/jxxf/status/1219009308438024200 I also think technical debt does…

> The only code you never have to touch again is code nobody is using.

There are plenty of counter-examples, but I like the example of video games.

https://www.polygon.com/2020/1/13/21064100/vvvvvv-source-cod...

There's a pretty clear ship date, after which you never touch it again.

Even in the world of SAAS, there are plenty of services or libraries that you write that serve a single purpose, are good enough, and never get touched again.

Re: Technical Debt Is Like a Tetris Game

#115
It so happens I’ve been thinking a lot about the debt analogy recently and decided that the simplest improvement is to think of it as an interest-only loan.

Sure, that balloon is just sitting there, but every single day you don’t pay it down, you are still paying interest. It slows you down when it causes confusion, when it makes integration more difficult, and when everyone is afraid to make improvements that might require changes to That Godforsaken Class.

And if instead of paying it down, you decide to add more debt, then the interest payments go up / the drag just gets worse.

And let’s be honest, arguing that tech debt is not bad comes up way more often over adding more than deciding not to start paying down.

Re: Technical Debt Is Like a Tetris Game

#116
post #86

I thought this was copied from my friend who wrote this article last year which became popular: https://medium.com/s/story/technical-debt-is-like-tetris-168... Although he references a 2017 article that says the same thing so I guess it is a meme floating about.

Yes, I thought we'd had this discussion before...

https://news.ycombinator.com/item?id=19353352

Re: Technical Debt Is Like a Tetris Game

#117

The best analogy for technical debt is debt - that is where it got the name from! Just like financial debt, technical debt is not necessary a bad thing, but a tool - and something to manage, control and track. And just like financial debt, taking out too much technical debt without paying it back can crush you. There is nothing wrong with taking out a mortgage (and thus getting into debt) to buy a house - you just ne…

In general, I'd agree with that assessment, but the debt-based metaphor also reaches its limits in a couple of cases.

One of which is that it is often really hard to quantify, but that does not seem to stop many non-technical manager types from trying to treat it like financial debt nontheless.

Another one is that unlike financial debt, which should be controlled by various organization-internal mechanisms, tech debt is often not something management is conscious about (at least when it is "created"). I've seen far too many examples of horrible code that can simply be explained with lazyness or incompetence, but I'm pretty sure management never called for a hard to use, unnecessarily complicated API.

Also, if the tech debt is caused by management, it is usually an implicit byproduct of unrealistic time constraints, and I'm pretty sure in those cases they would often choose find another solution too if they were conscious about how bad the problem they're creating really is.

Edit: Either that, or their incentives are way off because they don't have to deal with the consequences. Which is also the real cause why financial debt is usually strictly controlled.

Re: Technical Debt Is Like a Tetris Game

#118
post #96

Earlier quoted context omitted.

The only code you never have to touch again is code nobody is using. In which case, it's like a corporation declaring bankruptcy: the debt becomes moot. Otherwise, you always have to deal with it eventually. Look at the Y2K problem. or how the 2038 problem is starting to crop up already, exposing significant levels of technical debt. https://twitter.com/jxxf/status/1219009308438024200 I also think technical debt does…

> The only code you never have to touch again is code nobody is using. There are plenty of counter-examples, but I like the example of video games. https://www.polygon.com/2020/1/13/21064100/vvvvvv-source-cod... There's a pretty clear ship date, after which you never touch it again. Even in the world of SAAS, there are plenty of services or libraries that you write that serve a single purpose, are good enough, and ne…

Well, some video games, those based on a historical model of actually shipping physical games. But successful video games these days can literally run for decades, either directly (as Warcraft) or as a series (like Madden NFL). Plenty of things that are intended to be one-and-dones also evolve, like Stardew Valley's audience demanding multiplayer.

Even the code you mention isn't a great example for your case. In theory it was throwaway, but now that it's out there, you can bet that plenty of people will be touching it. And you're also ignoring the path not taken. This beloved game didn't get a sequel, despite plenty of demand. If the code were in better shape, might it have had one?

Re: Technical Debt Is Like a Tetris Game

#119

Earlier quoted context omitted.

Model debt a new name for product-market fit? And you are describing pivoting (maybe on a smaller scale)

Not at all, reread what I wrote. It's getting the data model wrong for the problem at hand.

You admit yourself the data model is ("80% of...") the product.

Re: Technical Debt Is Like a Tetris Game

#120

The best analogy for technical debt is debt - that is where it got the name from! Just like financial debt, technical debt is not necessary a bad thing, but a tool - and something to manage, control and track. And just like financial debt, taking out too much technical debt without paying it back can crush you. There is nothing wrong with taking out a mortgage (and thus getting into debt) to buy a house - you just ne…

The old 25% rule (don't take a mortgage unless it is no more than 25% of your income) is ignored all the time. My mortgage was right at that, and I generally have never had trouble coming up with it. If I was doing 50-70% like some of my California friends I'd be as nervous as a rat at a cat farm. So I think you have to set some reasonable amount of technical debt as you say. Some issue simply dissolve, others get worse as far as the debt goes. Sometimes the business goes in a different direction and more dissolves. Other times maybe a big deal comes in for one of your products and you realize it might not be as easy to update for new needs (and $$ of income in particular) so you don't want to let it build up too much.
Post reply on HN