BUSFACTOR.TECH
Engineering Economics

Unplanned Work Is Eating Your Roadmap. Here's the Receipt.

The bill

HERE'S THE RECEIPT

Unplanned work quietly rewrites your roadmap every quarter. How to measure the bugs-and-firefighting share of engineering time - and shrink it with receipts.

3 receipts in this article ↓

TL;DR: The roadmap you approved in January and the quarter your team actually delivered are two different documents, and the difference has a name: unplanned work. Bugs, escalations, incident cleanup, drive-by requests - none of it appears as a line item anywhere, because it's smeared invisibly across everyone's week. Classify one quarter of merged work into planned versus unplanned and you'll have the receipt: the share of your payroll that firefighting spent for you, without a decision ever being made. Then you can start making the decision.

Every quarter, engineering leadership performs the same ritual: explain why the roadmap slipped. And every quarter the explanation is a fog of specifics - the auth incident, the enterprise escalation, that data-migration surprise - each one true, none of them summable, all of them gone from memory by the next planning cycle. So the roadmap gets rebuilt at the same size, the fog eats it again, and the org quietly concludes that engineering just can't estimate. (Sometimes true; that's its own diagnosis. But it's not this problem.)

The reframe that turns the fog into a number: you don't have a planning problem, you have an unmeasured spend problem. Some fraction of your engineering payroll, your largest budget line, is being allocated by whoever files the loudest interrupt rather than by anyone who owns the roadmap. You'd never run cloud spend that way. You're running payroll that way, because nobody's ever handed you the receipt.

The quiet tax with the loud consequences

Unplanned work punishes twice. The first hit is the hours themselves. The second is what interruption does to the hours that remain: Mark, Gudith & Klocke's CHI study found that people compensate for interrupted work by working faster - at the price of significantly more stress, frustration, time pressure, and effort. A team carrying a heavy interrupt load isn't just losing the firefighting hours; it's paying an overwork surcharge on everything else, the kind that shows up in late-night commit patterns long before anyone says the word burnout.

And the gap between teams is not small. The 2016 State of DevOps Report found high-performing organizations spend 22 percent less time on unplanned work and rework than low performers, and convert the difference into 29 percent more time on new work. That is the compounding return on quality: DORA's continuing research keeps finding that teams who build quality in upstream ship more and firefight less. Unplanned work is where the absence of quality sends the invoice.

The strategic damage is subtler than the hours. A high unplanned share means your actual allocation - the real split of payroll across new features, improvements, and keeping the lights on - was decided by nobody. The roadmap becomes a graveyard of things everyone agreed mattered, the team feels like a feature factory that somehow ships few features, and the budget conversation stays stuck at "engineering is expensive" because where the money actually went has no receipt.

Every hour of it is fully loaded payroll. The tax is priced in real money whether you measure it or not.

The free receipt: classify one quarter

No new process, one honest pass over data you already have:

  1. Pull last quarter's merged PRs and their linked tickets. The ticket type is your classifier: bug, incident, hotfix, and escalation types mark unplanned; feature and improvement types mark planned. (If a big share of PRs link to no ticket at all, that's a measurement problem worth fixing first: every unlinked PR is an hour your receipt can't see.)
  2. Compute the unplanned share. Unplanned-typed work over total, by count. Crude beats absent: even the count-grain number is usually a shock the first time.
  3. Split it by team and by area. Uniform unplanned load means a process problem; concentrated load means specific fragile components are generating the interrupts. That turns "we firefight too much" into "these three areas are the arson source," a sentence with a fix attached.
  4. Set the range you'd defend, then judge against it. Pick the unplanned share you'd be willing to sign for (the honest overhead of running your product) and grade each quarter against that range. Above it: the pipeline is leaking quality upstream, and review and test gates want tightening before more roadmap is poured in. Persistently below it, oddly, is worth a look too: it can mean nothing ships fast enough to break.
  5. Make the interrupts visible going forward. One working agreement: any interruption over half an hour gets a ticket, typed honestly. The receipt only stays accurate if the firefighting stops being invisible.

How you'd actually see this in Busfactor

The one-quarter audit is the pilot; the product is the habit. Busfactor's investment allocation runs the classification continuously: every engineering hour split across features, bugs, chores, and unplanned work, by org, team, and person. It then rolls into the four buckets a budget conversation actually uses (New, Improvements, KTLO, and Unplanned, each judged against a healthy range you configure), worst offender called out. The unplanned bucket - bugs and unplanned firefighting - arrives priced in your own currency from your cost model, so "we firefight a lot" becomes a monthly figure with your CFO's units on it. And the verdict keeps both readings honest: a spiking unplanned share might be a rough patch, or the pipeline leaking quality upstream. Either way, the door it points at is your review and test gates, not a person.

The honest limits: the split leans on your tracker's ticket types and PR-to-ticket links, so its accuracy is downstream of your ticket hygiene. Typing discipline is cheap, and Busfactor shows you exactly where it's missing rather than guessing. Work that never touched a ticket or a repo (the hallway escalation handled in a call) stays invisible to any tool. The receipt covers what's written down; the working agreement above is what gets the rest written down.

The consequences view: a fire-drill set-piece showing which areas go dark if given people leave.The consequences view: a fire-drill set-piece showing which areas go dark if given people leave.
The fire drill - what goes dark when people leaveLive product · fictional demo org

The door

Run the one-quarter classification this week. It's an afternoon, and the unplanned share you find is the single most explanatory number for why the roadmap keeps shrinking in flight. Then decide it: either the share is the honest cost of your product right now (fine: budget for it out loud), or it's a quality leak with a location (better: fix the areas sourcing it). If you'd rather the receipt print itself every week, in your currency, with the worst bucket called out: see your allocation. The roadmap you approved deserves to be the roadmap you bought.

Frequently asked

What counts as unplanned work in engineering?

Work that consumed engineering time without ever being scheduled: bug firefighting, incident fallout and its cleanup, urgent customer escalations, and the drive-by requests that arrive sideways through Slack. Much of it is genuinely urgent. The defining property is that every hour of it was silently subtracted from something you did plan, and nobody wrote the subtraction down.

How much unplanned work is normal for a software team?

There's no single healthy number: a team running a mature product carries a different load than one mid-launch. What the research supports: the 2016 State of DevOps Report found high-performing organizations spend 22 percent less time on unplanned work and rework than low performers, and reinvest it as 29 percent more time on new work. The practical move is to measure your own share, set a range you'd defend to your board, and judge each quarter against that.

How do I reduce unplanned work?

Treat it as a quality signal, not a scheduling problem. A high unplanned share usually means defects are escaping upstream gates (review, tests, deployment checks) and returning as firefighting. Tightening those gates shrinks the inflow. What doesn't work: absorbing it silently into evenings, or padding every estimate to hide it. Both keep the leak invisible, which is what lets it grow.

Should unplanned work go on the board?

Yes: unticketed firefighting is invisible firefighting. If an interruption costs more than half an hour, it gets a ticket with a type that marks it unplanned. That single habit is what makes the share measurable at all, and it converts the vague sense of 'we're always fighting fires' into a number you can take to a planning meeting.

Receipts

Keep reading