Software Treadmills

Sep 11, 2021

Ever work on a project that requires constant attention and maintenance despite few changes?

You're running on a software treadmill. Stop running for one second, and you'll fall off.

Projects like this are bit rotting faster than everything else. Technical debt outweighs equity. Changing a single dependency plunges the developer into The Nine Circles of Dependency Hell. Tests take forever to run, and when they are finally finished, are full of false positives and false negatives. Abstractions are so narrow that any change in implementation immediately shows up in the API surface.

Here's one user on Hacker News describing the Oracle Database 12.2 treadmill:

It is close to 25 million lines of C code.

You can't change a single line of code in the product without breaking 1000s of existing tests...  Now imagine what horror it is going to be to develop a new feature. It takes 6 months to a year (sometimes two years!) to develop a single small feature
(Link)

Once you're on the software treadmill, it's difficult to get off. The best options are to attack it piecemeal, replacing it like a Ship of Theseus. But any large rewrite requires time and resources, the lack of which put the team on the software treadmill to begin with.