A Taxonomy of Tech Debt | Riot Games Engineering


89 bookmarks. First posted by evanwalsh 8 days ago.


Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL. I’ve worked on several different teams on League over the past years, but one focus has been consistent: I’m obsessed with tech debt. I want to find it, I want to understand it, and where possible, I want to fix it.

When engineers talk about any existing piece of technology - for example League of Legends patch 8.4 - we often talk about tech debt. I define tech debt as code or data that future developers will pay a cost for. Countless blog posts, articles, and definitions have been written about this scourge of software development. This post will focus on types of tech debt I’ve seen during my time working at Riot, and a model for discussing it that we’re starting to use internally. If you only take away one lesson from this article, I hope you remember the “contagion” metric discussed below.
development  engineering  programming  software  via:jm 
18 hours ago by micktwomey
impact/fix cost/contagion
software  development  programming 
yesterday by aparrish
A Taxonomy of Tech Debt
from twitter
3 days ago by bytebot
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the…
4 days ago by sshappell
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the…
from instapaper
4 days ago by iany
This post will focus on types of tech debt I’ve seen during my time working at Riot, and a model for discussing it that we’re starting to use internally. If you only take away one lesson from this article, I hope you remember the “contagion” metric discussed below.
debt  engineering  software  development  programming 
5 days ago by my-flow
RT : "A Taxonomy of Tech Debt" via
from twitter_favs
5 days ago by gnat
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL. I’ve worked on several different teams on League over the past years, but one focus has been consistent: I’m obsessed with tech debt.
Pocket 
5 days ago by nildram
Technical debt as fungus rotting wood. How a system can be irretrievable.
s 
6 days ago by jgordon
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the…
from instapaper
6 days ago by jrheard
When measuring a piece of tech debt, you can use impact (to customers and to developers), fix cost (time and risk), and contagion. I believe most developers regularly consider impact and fix cost, while I’ve rarely encountered discussions of contagion. Contagion can be a developer’s worst enemy as a problem burrows in and becomes harder and harder to dislodge. It is possible, however, to turn contagion into a weapon by making your fix more contagious than the problem.

Working on League, most of...
computers  programming  games  debt 
6 days ago by pozorvlak
When measuring a piece of tech debt, you can use impact (to customers and to developers), fix cost (time and risk), and contagion. I believe most developers regularly consider impact and fix cost, while I’ve rarely encountered discussions of contagion. Contagion can be a developer’s worst enemy as a problem burrows in and becomes harder and harder to dislodge. It is possible, however, to turn contagion into a weapon by making your fix more contagious than the problem.
technicaldebt  programming  development 
6 days ago by sordyl
When measuring a piece of tech debt, you can use impact (to customers and to developers), fix cost (time and risk), and contagion. I believe most developers regularly consider impact and fix cost, while I’ve rarely encountered discussions of contagion. Contagion can be a developer’s worst enemy as a problem burrows in and becomes harder and harder to dislodge. It is possible, however, to turn contagion into a weapon by making your fix more contagious than the problem.

Working on League, most of the tech debt I’ve seen falls into one of the 4 categories I’ve presented here. Local debt, like a black box of gross. MacGyver debt, where 2 or more systems are duct-taped together with conversion functions. Foundational debt, when the entire structure is built on some unfortunate assumptions. Data debt, when enormous quantities of data are piled on some other type of debt, making it risky and time-consuming to fix.
technicaldebt  programming 
6 days ago by cdzombak
A Taxonomy of Tech Debt | Riot Games Engineering
from twitter
7 days ago by jackysee
METRICS
In order to make good decisions about what problems to fix now and what to fix eventually (or, realistically, never), we need a way to measure a particular piece of tech debt. I’ve identified 3 major axes to evaluate on: impact, fix cost, and contagion.

IMPACT


The first axis is the most obvious: the impact of the debt. This takes the form of player-facing issues (bugs, missing features, unexpected behavior), and developer-facing issues (slower implementation, workflow issues, random useless shit to remember). It’s worth noting that “developer” in this case can be anyone of any discipline. Some tech debt gets in the way of engineers writing new code, some blocks designers creating new scripts, some interferes with VFX artists making new particles, etc.

FIX COST


The second axis has to do with the cost to fix the tech debt. If we decide to fix an issue in our code or data, it will require someone’s measurable time to fix. If it’s a deeply rooted assumption that affects every line of code in the game, it may take weeks or months of engineering time. If it’s a dumb error in a single function, it may be fixable in a matter of minutes. Regardless of the time to implement a fix, though, we also must consider the risk of actually deploying that fix. Even a system I consider “wrong” can still be used as a tool to make a great game. If I change the way our scripting engine handles errors, or how particles compute their spawn time, that could break any of the 500+ spells on 140+ champions in the game.

CONTAGION


The third axis is something I’ve become obsessed with: contagion. If this tech debt is allowed to continue to exist, how much will it spread? That spreading can result from other systems interfacing with the afflicted system, from copy-pasting data built on top of the system, or from influencing the way other engineers will choose to implement new features.

If a piece of tech debt is well-contained, the cost to fix it later compared to now is basically identical. You can weigh how much impact it has today when determining when a fix makes sense. If, on the other hand, a piece of tech debt is highly contagious, it will steadily become harder and harder to fix. What’s particularly gross about contagious tech debt is that its impact tends to increase as more and more systems become infected by the technical compromise at its core.
quality  Architecture  Patterns 
7 days ago by janpeuker
Very sensible way to group/classify tech debt work -- we did something similar in Swrve internally at one point, but this is much more evolved
engineering  software  coding 
7 days ago by jm
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the…
from instapaper
7 days ago by hiroprot
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the…
from instapaper
7 days ago by _dc
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the…
from instapaper
7 days ago by tonyandrewmeyer
Interesting metrics for technical debt, proposed by a lead engineer on the League of Legends project.
sweng  development  software  engineering 
7 days ago by dogrover
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the…
from instapaper
7 days ago by anglepoised
Check out our backend - we won’t judge.
7 days ago by cmp
Some good strategies for clearing out areas of code that have become dependent on bad designs or unintuitive behaviour.

I don't really like the backward compatibility checkbox to clutter the UI. Perhaps rename the UI field instead, so it's a visual change if the unexpected behaviour has spread too far.
engineering 
7 days ago by macaptain
Evaluating tech debt by its pervasiveness is a perspective technical teams too often overlook
from twitter
7 days ago by jhchen