Operations

The bug backlog nobody decides on

Reported in February, deprioritized in April, still open in November. The bug had outlasted three roadmap cycles.

The bug backlog nobody decides on
Illustration · Deimar Gutiérrez

How long has your oldest open bug been open? At one company, the answer was 22 months. The backlog held 247 open bugs, and the manager could recite the top ten from memory.

I asked him to walk the ten oldest. Every one told the same story. Reported in February last year. Acknowledged in March. Deprioritized in April for the launch. Reported again in July, and again in October. "We'll fix it this quarter." He'd said that line in three prior quarterly reviews, by his own count.

The bug wasn't getting fixed this quarter, or next. It had already outlived three roadmap cycles. In operational terms, the team had accepted it as part of the product without ever saying so. The backlog labeled it open. The label was fiction. The customers hitting it were living inside a decision nobody admitted making.

This is one of the steadier dishonesties in product work at growth-stage companies. The backlog reads as a list of bugs the team means to fix. In practice it's a list of bugs the team hasn't decided to fix or kill. The undecided pile grows without limit. The team feels bad about the size and runs the occasional triage, which produces a few fixes and a lot of re-deprioritizing.

The cost lands in two places. First, engineering culture. The team learns that "we'll fix this next quarter" is a polite way of saying "we won't," and stops trusting its own commitments. Second, customer trust. Someone who reported a bug in February and still sees it in November concludes, correctly, that you chose not to fix it. That damage tracks the gap between what you said and what you did, not the bug's severity.

What breaks the cycle is an explicit kill decision. Once a quarter, review every bug older than two quarters and decide: fix it now, or close it as won't-fix. Tell the customer who reported the won't-fix, with a short reason. That conversation is uncomfortable. It's less uncomfortable than the fourth "next quarter." A customer who hears "we've decided not to fix this, here's why" can plan around it. A customer told "next quarter" for the fourth time was misled.

Useful triage runs on cold criteria: customer-segment impact and revenue exposure, not recency or volume of complaint. A bug hitting one large account outranks a bug hitting twenty small ones, even when the small ones file more tickets. Most teams default to the squeaky wheel because it's socially easier. The revenue math says otherwise. This is the same discipline as noticing when your roadmap has quietly become a backlog.

And the quiet old bugs, the ones that stopped generating reports, aren't fixed. The customers gave up filing. Silence isn't resolution; it's a customer who has folded the bug into their picture of the product. It resurfaces when the ticket queue doubles and nobody can say why.

Open your backlog. Sort by age. The bugs older than a year aren't a queue; they're a list of decisions you already made and never wrote down. Run the kill review, and write them down.