Technical Debt Is Like Tetris

You can’t win. You can only control how quickly you lose.

Eric Higgins
5 min readMar 9, 2019


What’s your next move? Screenshots: Emulator Online

Like most people who’ve played it, I love Tetris. I still remember playing it for the first time on a friend’s Nintendo Game Boy. Not only is Tetris one of the best games of all time, it’s an excellent analogue for technical debt. The impacts of technical debt are something I’m deeply familiar with — I deal with them every day.

I’ll also share a personal story of how my team and I reduced technical debt in some billing code, fixing a $1 million-per-year bug.

Tasks are easier in the beginning when complexity is low

Within software companies, product and project managers (PMs) work with software developers to prioritize what code will be written and shipped to customers next. Finishing a Tetris row is like shipping a feature. Shipping a complex feature requires more rows.

Complex features are satisfyingly easy with little technical debt

Often, the business needs (new features, new products) will lead to trade-offs within the code (hacks, shortcuts) in order to ship on time. Or, changes in the product strategy will be incompatible with its previous design, requiring additional effort to either migrate customers or support both the “new” and “old” logic.

Small amounts of technical debt are normal and manageable

Scenarios like these create technical debt within the product code. A buried gap in Tetris represents technical debt.

All code has technical debt. That’s normal. You can keep playing Tetris with a few gaps.

Buried in technical debt

Too much technical debt will prevent features and bug fixes from shipping in a reasonable amount of time.

This isn’t a problem that can be solved by adding more developers or, more dramatically, replacing…



Eric Higgins

Maker, inventor, engineer, nerd, & author of Security From Zero: Practical Security for Busy People