Why does tech debt exist

[[Software Engineering]]

(Raw and unedited. TODO: clean up a bit, use a better analogy. This could take half the space and say just as mutch)

Imagine you have a factory. In it workers stand on an assembly line and paint widgets. Different workers and teams paint widgets at different rates and in slightly different ways. Teams have only one output: painted widgets per week.

The factory owner want’s to maximize production of widgets. From the top down targets are set which reward people at every level for producing more widgets and punish them for producing less. What happens next? Simple. People are incentivised to maximize their production of widgets and so they do so to the best of their ability.

Now let’s change the scenario slightly. Imagine that team’s use machines to paint the widgets. Each team has their own machine. A team can choose to use a special paint. This paint is easier to apply and will increase their rate of widget painting by 50% overnight. But the paint damages the machine and consequently will slow the team down by 3% compounding for each month it is used.

Would you expect teams to use the special paint?

The answer is probably not. Unless the incentive pressure is particularly harsh and the only concern is to survive the short term, any rational team should recognize that taking the drug will make them worse off in the long-term. It’s in their self interest to not use it.

(Not enough slack)

Now let’s change the scenario. Rather than each team having their own painting machine, instead imagine there’s a single giant machine everyone in the factory shares. The same scenario applies. Each team can choose to use a special paint. Using the special paint raises their productivity by 50% but slows down everyone by 3% compounding.

Would you expect teams to use the special paint?

The answer here is probably yes. It’s a classic collective action problem where a large private benefit and a socialised cost makes it individually rational for teams to do something that is collectively disastrous. Absent some kind of formal or informal control structure, output metric incentives will lead to people burning the commons.

This is why tech debt is such a problem in most low-mid tier companies. It’s illegible. Leadership pushes for more visible output (features/tickets). What they get is invisible tar which makes everything take longer and longer and longer as they’re left clutching their heads and wondering why.

(This is a partial explanation, there are other factors at play too. From not being able to not produce tech debt to bad individual incentives. I should write another article about the various factors that keep tech debt in check in good firms)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s