← Back

The work I keep maintaining after I stopped believing in it

There’s a script I wrote eighteen months ago. It still runs on a cron. I haven’t opened the file in a year, but every Monday it fires, sends me a summary, and I delete the email without reading it. Last week I finally asked myself why I hadn’t turned it off.

The honest answer was that turning it off felt like admitting something. Leaving it running felt like the work was still alive.

The difference between shipped and alive

I track shipped work carefully. Posts, features, deployments — I know what went out and when. What I don’t track is the work that’s technically still running but no longer has anyone believing in it.

This is the category I underestimated: things that haven’t been deleted, haven’t been deprecated, haven’t been handed off. They sit on the server, they fire on schedule, they consume a small slice of attention every time I notice them. Not enough slice to act. Just enough slice to drain.

A shipped thing is a finished commitment. An alive thing is an ongoing one. I was counting the first category and ignoring the second, and the second was where the actual weight lived.

Why “it still works” isn’t a reason

The argument I kept making to myself was: it’s not hurting anything. It runs. It costs nothing. Leave it.

But that’s not true. Everything still running costs something. A cron job costs a small amount of vigilance — is it still firing, is the output still right, does the upstream API still exist. A side project costs a background thread of guilt — I should pick that up again. An old integration costs a fraction of monitoring attention. None of these show up on a timesheet. All of them show up in the quality of the attention that’s left for the work I actually care about.

I kept saying “it still works” as if that were the test. The test isn’t whether it works. The test is whether I’d build it today. If the answer is no, the fact that it still functions is not a reason to keep it. It’s just the reason I haven’t been forced to decide.

What maintaining nothing actually costs

The cost isn’t the script. The cost is the shadow the script casts.

When I open the dashboard and see it running, I think about it for two seconds. Two seconds isn’t a cost, except that I have a hundred things like that. A hundred two-second interruptions per day is three minutes of attention, which is nothing, except that each one carries a small unresolved decision — should I deal with this? — and unresolved decisions are what actually accumulate. Not tasks. Decisions.

I started noticing that the things slowing me down weren’t the hard problems. The hard problems were fine. It was the low-grade, low-stakes, not-worth-deciding-but-never-quite-decided things that were eating the morning. Each one was too small to justify a dedicated slot, and too present to ignore entirely. So they sat there, being maintained, costing nothing measurable, costing everything in the way that doesn’t get measured.

The pattern I noticed

When I finally looked, the pattern was obvious.

Every piece of maintenance work I was still doing had a moment where I’d quietly stopped believing in it. Not a dramatic moment. A slow one. A week where I stopped reading the output. A month where I stopped checking the dashboard. A quarter where I stopped mentioning it in updates. At each of those moments I could have turned it off, and I didn’t, because it still works and because turning it off would have required saying: I don’t think this matters anymore.

That’s the admission the maintenance was protecting me from. Not the work of deleting. The act of deciding.

What I changed

I made a list. Everything still running that I hadn’t touched or meaningfully relied on in the last 90 days. Not everything I’d built — everything still alive that I wasn’t actively feeding.

Then I went through it one by one and asked the one question I’d been avoiding: if this didn’t exist, would I build it this week?

Most of the answers were no. Most of those got turned off. A few got handed to someone who actually used them. Two stayed, because I realized I’d been wrong — I did rely on them, I’d just stopped noticing.

The relief was immediate and disproportionate. The same dashboard, looked at the next morning, felt lighter. Not because anything important had changed. Because the number of quiet, unresolved decisions had dropped, and the remaining ones were decisions I actually intended to keep.

The thing I had to admit

The hard part wasn’t the cleanup. The hard part was admitting that I’d been maintaining a version of my past work that no longer matched my present priorities — and that the maintenance had been a way of not having to notice the gap.

It’s easier to keep something running than to say it’s done. Running is invisible. Ending is a decision, and decisions leave a mark.

But the cost of not deciding is that the work you actually care about shares attention with the work you’ve already abandoned, and the abandoned work doesn’t have the decency to get quieter over time. It just keeps running, keeps firing, keeps asking should I still be here? — and you keep not answering.

What I’d tell a younger version of myself

If you haven’t touched it in 90 days and you wouldn’t build it today, it’s not a project anymore. It’s a decision you’re refusing to make.

Turn it off. Or hand it off. Or reopen it with intent. But don’t keep maintaining it just because it still works. Things that still works are the easiest things in the world to keep — and the most expensive things to keep pretending you still believe in.