• abc-1 2 hours ago

    Contagion is exactly why interfaces are one of the most important pieces of design and should be given significant thought. A beautiful interface with a suboptimal implementation can be easily cleaned up when time is allotted. The reverse is rarely true.

    • dang an hour ago

      Discussed at the time:

      A Taxonomy of Technical Debt - https://news.ycombinator.com/item?id=16810092 - April 2018 (113 comments)

      also this bit:

      A Taxonomy of Tech Debt (2018) - https://news.ycombinator.com/item?id=39782923 - March 2024 (1 comment)

      • leni536 33 minutes ago

        One important aspect is when you knowingly take on tech debt in return of some short-term benefit. Then this benefit becomes an other axis to weigh against.

        • bbor 2 hours ago

          Great article, from a technical perspective! I would say it’s more a “nomenclature” than a “taxonomy” because it’s neither exhaustive nor discrete (by design), but I might be mistaken there. I loved the physical examples for each especially, really thought provoking.

          As always, I have a philosophical nit to pick: the “three axes” introduced at the top are just “Return” and “Investment” from good ol’ RoI, with a subcategory added for a particular type of forward-looking/conditional Return. I’m guessing this decision has worked in practice and I don’t expect video game development practices to be absolutely scientifically sound, but some extra philosophical certainty never hurts!

          • ooterness 2 hours ago

            Great article. The "contagion" factor is a useful concept that I hadn't seen before. Needs a [2018] tag.

            • APublicMan 2 hours ago

              My experience at big corporate is that (edit: unmanageable) tech debt is caused by undisciplined and unorganized scrum team.

              When you have a proper backlog of tickets, including tech debt tickets, the team will eventually fix the tech debt when there are not enough feature tickets to exhaust capacity.

              • bbojan 2 hours ago

                > the team will eventually fix the tech debt when there are not enough feature tickets to exhaust capacity

                I have yet to visit this misterious universe you describe.

                • Swizec an hour ago

                  > I have yet to visit this misterious universe you describe.

                  The trick is to have 1 backlog. Tech debt and features live on the same list and it is up to the PM to prioritize. Engineering’s job is to argue cost.

                  Good PMs will prioritize relevant tech debt or pull it in with feature work in the same area. They understand the tradeoff of go slow to go fast. They also understand when tech debt will never become relevant (because the feature is getting nixed, or hasn’t shown desired impact yet, or because the cost of interest is waaaay lower than the cost of paying it off in many cases).

                  This only works when engineers have the discipline to look stinky awful code in the eye and say “not today” and stay within agreed timeboxes. You blow this estimate once or twice, get the PM in hot water with leadership, and you’ve lost the trust.

                  • NAHWheatCracker 24 minutes ago

                    All of the teams I've been on have used one list. I've never seen a PM prioritize the technical work. I still think it's a good idea for it to be one list, but it's not sufficient.

                    For teams that don't have a good PM, you also need a tech champion. Failing that, engineers need to inflate estimates and do tech work under other stories. Then everything becomes less predictable and teams never develop trust.

                • loloquwowndueo 2 hours ago

                  “Not enough feature tickets to exhaust capacity” - I don’t think I’ve ever seen this happen :) PMs and sales always manage to book all available capacity.

                  • deknos 2 hours ago

                    if tech debt would depend on some kind of methodology it would not pop up with XP/Kanban/waterfall.

                    techdebt can even pop up in unorganized slowmo opensource software.

                    • arrjayh an hour ago

                      > My experience at big corporate is that (edit: unmanageable) tech debt is caused by undisciplined and unorganized scrum team.

                      Yeah, this is 100% correct. I comically left Riot after ~6 months for this exact reason. Obviously it's a large company with many different flavors of teams, and it sounds like this team maybe has gotten it together, but by in large most haven't.

                      While I was there I was working on some of their core games tooling and felt uneasy about my day-to-day. My teams tech debt was quite literally owning them. Constantly missing sprint scopes, spending countless hours arguing and debating about trivial stuff, it was all a mess. They ended up laying off a number of people from that team in a pretty shifty manner so maybe things have gotten better since then.