In Praise of the Delete Key
And why getting rid of things is much harder than creating them
Sometimes, I feel like I’ve spent my whole career deleting things. I decommission old systems, remove redundant code, and turn off unsupported servers. Anyone who has worked in IT will know that making a new system is hard, but decommissioning the old one is even harder. Getting rid of old things is often called the most difficult challenge in software development.
The problem is that everything is connected. You never simply identify an old system and turn it off. You discover that new, critical systems depend on old, redundant ones. The strategic application you just rolled out will be making an API call to a single server running classic ASP under Dave’s desk. Every time you remove a component, something somewhere breaks. To delete a page on one website is to create a dead link on another.
Even fixing things that patently aren’t working causes issues. I remember once pushing an update that sorted lists in alphabetical order. “You need to roll back the latest update,” someone demanded, “it’s broken our screenscraper.” Someone had built atop our bug. “Every change breaks someone’s workflow,” XKCD jokes in a comic about fixing a bug causing computers to overheat. I laugh at this, but also, I wince. It feels too real.