The Hidden Cost of Context Switching in Software Engineering
Share this post

I. 09:17 — A Documentary in Real Time

The camera does not move. It sits at desk height, slightly behind the left shoulder. What follows was reconstructed from calendar exports, Slack timestamps, git reflogs, and one interview conducted eleven days later, during which the subject twice lost her train of thought.

09:17. She arrives. Not late — the standup is at 09:45, and she has learned that the twenty-eight minutes before a standup are the only reliably empty minutes of her day. She sets down coffee. She does not open Slack. This is deliberate. This is, in fact, the entire strategy.

The task is a rewrite of the reconciliation path in the payments service. It has been on her plate for nine days. It is not a large piece of work — maybe six hundred lines, most of them deletions. It is, however, a deep piece of work. There are four subsystems that touch the same ledger table, two of which nobody fully understands anymore, and the whole point of the rewrite is to make it so that a future engineer does not have to hold all four in their head simultaneously. To build that, she has to hold all four in her head simultaneously. This is the joke at the center of software architecture and nobody laughs at it.

09:19. She opens the branch. Reads her own commit message from Friday. It says: wip - see notes. There are no notes.

09:21. She begins reconstructing. This is not coding. There is no measurable output from this activity. If you were watching a dashboard, you would see a developer doing nothing for several minutes. What is actually happening is the slow reassembly of a mental structure — the call graph, the failure modes, the reason she chose an idempotency key over a lock, the specific ugly edge case involving partial refunds that made the obvious solution wrong. It takes most people between eleven and twenty-three minutes to rebuild a structure like this. It took her eight days to build the first time.

09:23. Slack.

@marcus: hey quick one — do you know if the batch job retries on 5xx or just logs?

It is a quick one. It genuinely is. She knows the answer. She types it in fourteen seconds. Fourteen seconds is nothing. Fourteen seconds is less than the time it takes to refill a water bottle.

What the fourteen seconds does not include: the four seconds of orientation required to figure out what "the batch job" refers to, the retrieval of an unrelated module from long-term memory, the moment of doubt where she almost opens the code to check, the small decision about tone, and — critically — the fact that the reconciliation structure she had rebuilt for two minutes is now sitting on the floor in pieces.

She goes back. She rebuilds. She is now at minute zero again, except she has spent nine minutes of morning and some quantity of a resource we do not currently have a name for.

09:31. Progress. Real progress. She has found the thing that was bothering her on Friday — the reconciliation runs before the settlement webhook lands about four percent of the time, and the current code handles that by guessing. She writes a comment: // THIS IS THE BUG. Order of ops assumes...

09:41. Calendar notification. Sprint Planning Pre-Sync (30m). She does not remember accepting this. She checks. She accepted it eleven days ago, when it was a hypothetical block of time in a distant future, the way one agrees to help a friend move in March.

The meeting is not useless. Nothing in this story is useless. That is the point of this story. Everything that happens today is individually defensible and collectively catastrophic. In the pre-sync, a product manager asks a reasonable question about scope. Three people give reasonable answers. A decision is deferred, reasonably, pending input from a fourth person who is not there. The meeting runs seven minutes over because the last item was the hard one, as it always is.

10:06. She is walking back to her desk when the phone buzzes. [P2] Elevated 500s — checkout-api — 3.1% error rate.

Not her service. Adjacent to her service. She is not on call. The on-call engineer is already in the incident channel, and there are now nine people in that channel, and six of them are not on call either, and all six are typing.

This is the part that people who have never worked in engineering find hardest to believe: she does not need to do anything about this incident for it to cost her the morning. She only needs to care about it. The alert has installed a background process. Some percentage of her attention — call it fifteen, call it thirty, the number is not the point — is now permanently allocated to a low-priority poll: is this getting worse, is it mine, will it become mine.

10:22. Error rate returns to baseline. Cause: a deploy from a different team that touched a shared retry configuration. Nobody's fault. A five-line change. It will be discussed in a postmortem next Tuesday, and the postmortem will produce three action items, and one of them will be assigned to her because she has context on the retry layer.

10:26. Back at her desk. Reopens the branch. Reads: // THIS IS THE BUG. Order of ops assumes...

Assumes what?

She wrote that sentence fifty-five minutes ago. She wrote it because she knew, and she trusted herself to still know when she came back. She does not know. The knowledge did not survive.

She spends fourteen minutes rediscovering what she already discovered.

10:48. GitHub notification. A pull request. Marked urgent in the channel, because the author is blocked on it, because the author has been blocked for a day, because the reviewer before her was in meetings.

It is four hundred lines across eleven files, and it touches a domain she knows well enough to be the right reviewer and not well enough to skim. She reads it properly, because she is the kind of engineer who reads pull requests properly, which is precisely why she receives so many of them. The review takes thirty-one minutes and produces two comments that will prevent a production incident in approximately six weeks. Nobody will ever connect those two events. There is no metric anywhere in the organization that will record that this happened.

11:12. Slack, again. Product.

@dana: sorry to interrupt! do you have 2 min? just need to know if the reconciliation change affects the refund SLA — customer success is asking

Two minutes. It is never two minutes, but it is also never not two minutes; the answer genuinely takes two minutes and the question genuinely matters. The refund SLA is a real commitment to real customers. Dana is doing her job well by asking.

The conversation lasts nineteen minutes because the honest answer is "it depends," and "it depends" requires explanation, and the explanation surfaces a second question, and the second question is better than the first one.

11:31. She looks at her branch. She does not open it. There are twenty-nine minutes until lunch and she knows — she has learned this about herself, empirically, over eleven years — that twenty-nine minutes is not enough to get back into it. It costs twenty minutes to load, which leaves nine minutes of thinking, and nine minutes of thinking on a problem this shape produces nothing except the illusion of having tried.

So she does small things. She triages her inbox. She updates a ticket. She approves a dependency bump. All of these are real work. None of them are the work.

This is the first genuinely important moment of the day and it looks like nothing: the interruptions have stopped, and she still cannot work. The residue outlasts the event.

12:05. Alert. Real one this time. A hotfix is needed, it is in her domain, and she is the person who knows. She stays with it through lunch, eats at her desk, ships at 13:40. The fix is good. She is good at this. There is a specific pleasure in being the person who can, and the organization has learned to reach for that pleasure the way one reaches for a light switch.

13:40 – 15:40. Postmortem notes. A follow-up thread. A design doc she promised to comment on. A one-on-one that she would not skip for anything, and should not, and which is the only thirty minutes today spent on something with a multi-year payback.

15:40. She opens the reconciliation branch.

Six hours and twenty-three minutes after she opened it the first time.

16:30. She has, at this point, rebuilt about seventy percent of the structure. The other thirty percent is gone in a way that she cannot see the shape of — she does not know what she has forgotten, only that on Friday she had a reason for the idempotency key and today she has only the key. She could reconstruct the reason. It would take another hour. It is 16:30.

She writes a commit message.

wip - see notes

Nothing dramatic happened today.

No one was rude. No one was incompetent. No process failed. Every single interruption was a reasonable person doing a reasonable thing for a reasonable reason. Marcus needed an answer. Dana had a customer. The incident was real. The pull request was blocking someone. The pre-sync moved a decision forward. The hotfix protected revenue.

And the feature that was going to make four subsystems comprehensible to every future engineer who touches them is nine days old and will be twelve days old on Friday, and somewhere in the compounding interest of that delay is a future incident that nobody will trace back to today.

Her manager's dashboard, tomorrow morning, will show: one PR reviewed, one hotfix shipped, one incident supported, four meetings attended, forty-one Slack messages sent.

It will show a highly productive day.

It will be right, in the way that a scale is right about a person who is drowning.


II. The Invisible Currency

A fictional economy, described in the flat tone of a central bank report.

Let us stop talking about productivity for a while. Productivity is a measurement, and we have been measuring the wrong substance so consistently that the measurement has become the problem.

Consider instead an economy.

In this economy, engineers are not units of labor that convert hours into code. They are agents holding a portfolio of seven currencies, each with its own supply, its own decay rate, and its own exchange properties. Nobody in your organization budgets any of these. Everybody spends all of them, all day, in transactions they never record.

Currency One: Attention. The raw resource. Highly liquid, extremely perishable, non-storable. Cannot be banked overnight. Cannot be transferred between people. Produced fresh each morning in a fixed quantity that varies by individual, by sleep, and by season, and — crucially — cannot be increased by wanting more of it. An engineering organization consumes attention the way a smelter consumes electricity, and like a smelter, it does not run at fifty percent power; below a threshold, it simply does not run.

Currency Two: Working memory. The most severely constrained resource in the entire system, and the only one with a hard physical ceiling that has not moved in two hundred thousand years. Roughly four to seven active elements. Software problems routinely require twelve. The gap between four and twelve is bridged by structure — by abstractions, by naming, by architecture — which is to say that architecture is not primarily a technical artifact. Architecture is a working-memory subsidy. Good architecture is a loan of cognitive capacity from a past engineer to a future one. Bad architecture is a margin call.

Currency Three: Decision energy. Depletes monotonically over a day and does not replenish through rest alone. Every choice draws down the balance — including choices that feel trivial, including the choice of how to phrase a Slack reply, including the choice of whether to answer at all. This is why engineers at 16:00 approve pull requests they would have questioned at 10:00. Not laziness. Insolvency. The reviewer is broke, and the codebase is where the debt is settled.

Currency Four: Context reconstruction. The only currency in the list that is purely a cost. It buys nothing. It restores a position you already held. Every interruption creates a liability denominated in this currency, and — this is the part that organizations systematically fail to model — the liability is not paid by the interrupter. It is paid by the interrupted, later, invisibly, in a transaction that appears nowhere.

Currency Five: Problem understanding. The rarest and most valuable holding. It is not information; you cannot Slack it to someone. It is a compiled asset — built slowly from information plus time plus quiet — and it decays with a half-life measurable in hours. Understanding is what makes a six-hundred-line change possible where a six-thousand-line change was expected. Every organization is sitting on an enormous unrecorded inventory of problem understanding, distributed across individual heads, evaporating continuously, and appearing on no balance sheet anywhere.

Currency Six: Trust. Spends slowly, earns slowly, and functions as the transaction cost regulator of the entire economy. In a high-trust system, "I'll handle it" is a complete sentence and costs one message. In a low-trust system, the same commitment costs a document, a meeting, three follow-ups, and a status field. Interruption and trust have an ugly relationship: low trust generates check-ins, check-ins are interruptions, interruptions degrade delivery, degraded delivery destroys trust. This is not a metaphor. This is a control loop with positive feedback, and every engineering leader has watched it run.

Currency Seven: Mental bandwidth. The width of the pipe, distinct from the volume of attention flowing through it. Bandwidth determines how many concurrent concerns a person can hold without degradation — not how hard they can think, but how many things they can think about before the quality of all of them drops together. Bandwidth is what "on call while also delivering a feature" consumes. It is also what "worried about the reorg" consumes, silently, for weeks.


Now the important observation.

Hours are fungible, storable, and countable. Attention is non-fungible, non-storable, and invisible.

So we count hours. Of course we do. Every management instrument we have inherited — from the factory, from the agency, from the billable-hour firm — is built to allocate a resource with the properties of time. We have sprint capacity in hours. We have velocity per two-week period. We have utilization. We have headcount, which is hours in bulk.

And every one of those instruments is measuring the wrong currency, in the specific way that measuring a bakery's flour consumption tells you nothing about whether the ovens are on.

Here is the exchange rate problem, stated plainly:

Eight fragmented hours do not equal eight hours. They equal roughly three.

But the reverse asymmetry is worse, and almost nobody accounts for it:

Four uninterrupted hours do not equal four hours. On the right problem, they equal something that fragmented time cannot produce at any duration.

There are classes of engineering work — the architectural simplification, the root cause that is five layers down, the abstraction that deletes an entire category of future bug — that are not slower under fragmentation. They are impossible under fragmentation. They require holding twelve things at once, and twelve things cannot be held in nine-minute windows, no matter how many nine-minute windows you provide. You cannot cross a ten-meter ravine in ten one-meter jumps.

This is why organizations under heavy interruption load do not merely ship slower. They ship differently. They ship a systematically different kind of software: more patches, fewer simplifications; more special cases, fewer generalizations; more code, less design. The output volume can stay flat — often it rises, because fragmented engineers reach for work that fits in fragments — while the quality of the decisions embedded in that output falls steadily.

Nobody notices, because there is no dashboard for the shape of a decision.

Let us give the central claim a name and be done with the preliminaries.

The Attention Throughput Index (ATI): the proportion of an engineer's available cognitive capacity that reaches the problem it was allocated to. Not hours worked. Not tickets closed. The fraction of thinking that arrives at its destination.

In most engineering organizations, measured honestly, the ATI sits somewhere between 0.2 and 0.4.

You are paying for a hundred percent of a workforce and receiving thirty percent of its mind.

Everything that follows is an attempt to make that number visible.


III. The People v. Context Switching

Transcript. Superior Court of Engineering Throughput. Case No. 4-7-DEV. Presiding: The Hon. Judge Throughput. Proceedings redacted for length; witness testimony reproduced in full.


CLERK: All rise. Court is in session in the matter of The People of Engineering v. Context Switching.

JUDGE THROUGHPUT: Be seated. Counsel, I'll remind you both that this court has a narrow interest. I don't care about feelings and I don't care about intentions. I measure one thing: how much value leaves this organization and reaches a customer. Proceed.

PROSECUTOR (INTERRUPTION VICTIMS' ADVOCATE): Your Honor, the defendant stands accused of the systematic destruction of engineering capacity across a period of — depending on how one counts — forty years. The defense will argue that the defendant is not a thing at all, merely the sum of ordinary collaboration. We intend to demonstrate that this is exactly what makes the defendant dangerous. Poison is not less lethal for being distributed across many small doses.

DEFENSE COUNSEL: Your Honor, my client is collaboration. My client is a team that talks to each other. The prosecution proposes a world in which engineers sit in sealed rooms and emerge with software nobody asked for. We have all seen that world. It has a name. It's called a two-year rewrite that shipped to no one.

JUDGE THROUGHPUT: Both of you are going to be partially right and it's going to be tedious. Call your first witness.


Witness 1: The Developer

PROSECUTOR: State what you do.

DEVELOPER: I build things. Or — I'm supposed to.

PROSECUTOR: Describe the injury.

DEVELOPER: People think the injury is the interruption. It isn't. The interruption is thirty seconds. The injury is what happens after the interruption ends, and what happens before it starts.

PROSECUTOR: Before?

DEVELOPER: If I know a meeting is at eleven, I don't start anything hard at ten-fifteen. I've learned not to. So the meeting doesn't cost thirty minutes, it costs forty-five, and the forty-five includes fifteen minutes where I look completely available and completely busy and produce nothing of consequence. I call it the shadow. Every scheduled event throws a shadow forward.

PROSECUTOR: And after?

DEVELOPER: After is worse, because after is invisible even to me. I come back to the code and I'm reading it instead of thinking it. That's the difference. When I'm in it, the code isn't text, it's a machine I'm standing inside of. When I come back, it's text again. And getting from text back to machine — that's twenty minutes on a good day. On a bad day I never get there, and I do something useful-looking instead, and I go home feeling like I worked hard.

DEFENSE: Isn't it true you check Slack voluntarily?

DEVELOPER: Yes.

DEFENSE: So you interrupt yourself.

DEVELOPER: Constantly. But you have that backwards. I check Slack because I've been conditioned to expect that something urgent is waiting. In three months on a team with real focus protection, that reflex went away. It came back within two weeks of joining a team without it. The self-interruption isn't a character flaw. It's a learned response to an environment. You built the environment. I just adapted to it.

JUDGE THROUGHPUT: Note that for the record.


Witness 2: The Engineering Manager

DEFENSE: You're a hostile witness for the prosecution, aren't you? You cause many of these interruptions.

MANAGER: I cause a lot of them, yes. Let me explain why, because nobody ever asks.

I have a team of eight. I am accountable for what they deliver, and I have almost no direct visibility into whether it's going well. My instruments are: the ticket board, which lies; the standup, which is a performance; and the code, which I no longer have time to read closely enough to judge. So I ask. I ask because the alternative is finding out three weeks late that we're off course, and finding out three weeks late has ended careers I've watched.

DEFENSE: So the interruption is a diagnostic instrument.

MANAGER: It's a bad diagnostic instrument that I use because I don't have a good one. Every "how's it going?" is me paying my team's attention to buy my own certainty. I'm making a trade in a currency that isn't mine.

PROSECUTOR: What would a good instrument look like?

MANAGER: Something that told me about the shape of the work instead of the status of it. I don't need to know that the ticket is at seventy percent. I need to know whether the person understands the problem yet — because before understanding, estimates are fiction, and after understanding, they're usually fine. But I can't observe understanding. Nobody's built me a way to see it. So I interrupt, and my interruption destroys some of the very thing I'm trying to measure.

JUDGE THROUGHPUT: Counsel, that's the second time this hearing that measurement has damaged the thing measured. I want it noted as a pattern, not an anecdote.


Witness 3: QA

PROSECUTOR: You see the downstream effects. Describe them.

QA: I can tell when a feature was built in fragments. I can tell without being told.

PROSECUTOR: How?

QA: Fragmented code fails at the seams. Not in the middle — the middle is usually fine, because the middle is what the engineer was thinking about in whatever window they had. It fails at the boundaries between the windows. The place where Tuesday's thinking meets Thursday's thinking. The state that's set in one function and assumed in another, where the assumption was true on Tuesday and stopped being true on Thursday when they added a branch and didn't remember the invariant.

PROSECUTOR: You're claiming interruption patterns leave a signature in defect distribution.

QA: I'm claiming I could look at a bug report and guess the calendar. Integration bugs, off-by-one on the edge cases, error paths that were clearly written last and fast. Those aren't skill failures. Those are continuity failures.

DEFENSE: Isn't that just insufficient testing?

QA: Testing catches what you thought to test for. The whole problem with fragmented work is that you don't remember what you were worried about. You can't write a test for a concern you no longer hold.


Witness 4: The Architect

PROSECUTOR: What is lost?

ARCHITECT: The generalizations.

PROSECUTOR: Explain.

ARCHITECT: There are two ways to solve any recurring problem. One: solve it again each time it appears, slightly differently, for two years. Two: notice the pattern, and build the thing that makes the problem stop existing. Option two requires seeing six instances simultaneously and holding them in your head long enough to find what's common. That's not a coding task. That's a contemplation task, and it takes a continuous stretch that most senior engineers in most organizations no longer get.

PROSECUTOR: And the consequence?

ARCHITECT: We solve the same problem eleven times. Each solution is defensible. Each one takes two days instead of two weeks, so each one looks like the efficient choice. Twenty-two days spent, and at the end we have eleven inconsistent implementations, and now the twelfth engineer has eleven things to understand instead of one.

Interruption doesn't just slow architecture down. It systematically biases the organization toward local solutions. Every time. Structurally. Because local solutions are the only ones that fit in the time available.

DEFENSE: Some would call that pragmatism.

ARCHITECT: It is pragmatism. That's exactly the tragedy. Every individual instance of it is correct. The aggregate is a system nobody can hold in their head, built entirely out of correct decisions.


Witness 5: The Customer

JUDGE THROUGHPUT: You have no idea why you're here, do you.

CUSTOMER: None whatsoever. I've never heard of any of this. I don't know what Slack is doing to anyone.

PROSECUTOR: Tell the court what you've observed.

CUSTOMER: Things take longer than they used to. Not dramatically. Just — everything is a quarter now. Small things are a quarter. And when something breaks, it takes longer to get fixed than it did three years ago, even though there are more people than there were three years ago.

PROSECUTOR: Anything else?

CUSTOMER: The product feels like it was built by different people who never met. Which is strange, because I know it's the same team. Nothing quite matches. Every part works. The parts don't agree with each other.

JUDGE THROUGHPUT: Witness may step down. That was the most damaging testimony so far and she doesn't know it.


Witness 6: The Production System

CLERK: The witness does not speak English. Testimony has been translated from logs, metrics, and traces.

PRODUCTION SYSTEM: I am the only honest record.

I do not care about intentions. I record what was done. Here is what I have observed over four years.

The mean time to resolve incidents has risen, while the mean time to detect has fallen. You are finding problems faster and fixing them slower. This is the signature of an organization where knowledge is fragmented across many partially-informed people rather than held whole by a few.

My configuration files contain nine settings that are set in two places. Each of those was created by someone who did not have time to find where the setting already lived.

I contain four retry mechanisms with different backoff strategies at different layers. Under load, they multiply. Nobody designed this. It was assembled, one reasonable decision at a time, by engineers who each had forty minutes.

My error paths are of measurably lower quality than my success paths. This is universal across every system I have ever compared myself to. The success path is what you were thinking about. The error path is what you wrote at 16:40.

I have twelve TODO comments authored by people who no longer work here. Nine of them describe the exact failure mode that later caused an incident. In each case, the author knew. They ran out of continuous time before they ran out of understanding.

JUDGE THROUGHPUT: ...Court will take a short recess.


Verdict

JUDGE THROUGHPUT: I find the defendant not guilty as charged and guilty of something the charge failed to describe.

The prosecution asked me to convict interruption. I decline. Interruption is not a crime; it is the mechanism by which an organization coordinates itself, and a company that eliminates it entirely will build beautiful, coherent, irrelevant software.

But I find the following as fact:

One. The cost of an interruption is borne entirely by the interrupted party and appears in no ledger of the interrupter. This is an externality, in the precise economic sense, and every externality in history has been overproduced until it was priced.

Two. The organization has no instrument that can see the resource being consumed. It therefore optimizes the resource it can see — hours, tickets, activity — and does so at the direct expense of the resource that actually produces value.

Three. The damage is non-linear. Four interruptions in a day do not cost four times one interruption. They cost the entire day, because they leave no interval long enough to be worth entering.

The defendant is discharged. The court finds the system liable.

Sentencing takes the remainder of this document.


IV. The Twin Study

Longitudinal observation, 24 months. Two organizations. One variable.

Method

We construct two engineering organizations, Org A and Org B, and make them identical in every respect a hiring committee or a board could observe.

Same headcount: 84 engineers. Same seniority distribution. Same compensation bands, hiring bar, and interview loop. Same tech stack — a Kubernetes-hosted service mesh, a large TypeScript frontend, a Postgres core with a Kafka spine. Same product, same market, same customer base, same competitive pressure. Same budget to the dollar. Same continuous delivery pipeline, same test coverage on day one, same DevOps maturity, same incident process, same quarterly planning cadence, same OKR template, same engineering culture on paper — both of them have "focus" on a poster somewhere.

One variable differs.

Org A runs at a median of eleven context switches per engineer per day. Its longest reliably-protected uninterrupted block is forty minutes.

Org B runs at a median of three. Its longest reliably-protected block is three hours and ten minutes.

That is the entire difference. No cultural intervention, no methodology change, no tooling advantage. Org B has simply made a structural commitment: meetings cluster into two windows, non-urgent messages have no response expectation inside protected hours, incident response is a rotating role with genuine coverage rather than a diffuse cloud of concerned volunteers, and code review has a service-level target measured in half-days rather than an expectation of immediacy.

We now watch for two years.


Month 3 — Indistinguishable

Nothing. This is important.

Org A and Org B ship at the same rate. Velocity is within noise. If you were an executive with a dashboard, you would conclude that Org B's focus policy was a nice piece of employer branding with no measurable effect, and you would be entirely correct — for another eleven weeks.

There is one difference, visible only to someone looking for it. In Org B, four architectural discussions have begun that have not yet produced anything. In Org A, zero have. They are not absent because Org A's engineers are less thoughtful. They are absent because the discussions require someone to have finished thinking before the conversation starts, and nobody in Org A has finished thinking about anything in eleven weeks.

Month 6 — The Divergence Begins in the Wrong Place

Delivery velocity is still comparable. Org A may even be marginally ahead on ticket count.

But the composition has changed. In Org A, 71% of merged pull requests are additive — new code paths, new conditionals, new services. In Org B, that figure is 58%, and the difference is entirely accounted for by changes that remove code or consolidate two things into one.

This is the first real signal, and no standard reporting system in the industry captures it. Fragmented organizations write. Focused organizations edit. Editing requires holding the whole in mind. Writing does not.

Org A's codebase is now 9% larger than Org B's, delivering identical functionality.

Month 9 — Quality Separates Before Speed Does

Change failure rate: Org A 14%, Org B 9%.

Note the causal chain, because it is not the obvious one. Org A's engineers are not making more mistakes in the code they write. They are making more mistakes in the code they review. Review quality is the most attention-sensitive activity in software engineering and the first to degrade — it requires building a mental model of someone else's reasoning, which is context reconstruction performed on a context you never had. Under interruption load, review silently degrades from evaluation to inspection: does it look reasonable, do tests pass, is the author competent. Approve.

Org A has not lowered its standards. It has lost the capacity to apply them.

Month 12 — Technical Debt Diverges Structurally

Org A: 4 competing HTTP client wrappers. 3 date-handling utilities. 2 authentication middlewares. 11 places where retry logic is defined.

Org B: 1, 1, 1, and 2.

Not one engineer in Org A wanted this. Every duplication was created by a competent person who had ninety minutes, could not afford the archaeology required to find the existing implementation, and made the rational local choice. The duplication is not a failure of discipline. It is a precise economic response to the price of context reconstruction. When lookup is expensive, people rebuild. This is true in warehouses and it is true in codebases.

Onboarding time for a new hire: Org A, 14 weeks to first meaningful independent contribution. Org B, 7. The new hire in Org A must learn four HTTP wrappers, and — worse — must learn which one is used where, which is knowledge that exists nowhere but in people's heads, and those people are in meetings.

Month 15 — Incident Response Inverts

Org A now has more incidents and resolves them more slowly, despite having invested more in observability tooling.

The mechanism: incident response is the most extreme form of context reconstruction that exists. It is reconstruction, of someone else's context, under time pressure, with an audience. It depends entirely on how much of the system is held by the responders rather than looked up by them.

In Org A, nobody holds much. Every incident is an archaeology expedition. The organization compensates by pulling more people into every incident — which is itself the most expensive interruption pattern possible, because it fragments six engineers to resolve one problem, and does so precisely during the hours when everyone is already at their most depleted.

Org A has begun to run a hidden shadow schedule: an average of 6.2 engineer-hours per day are consumed by incidents that involve people who are not on call.

Month 18 — Innovation Stops Without Anyone Noticing

Org B ships two features in Q6 that Org A does not ship, and — critically — could not have.

Both are the same kind of thing: a capability that required someone to see across four subsystems and propose a unification that then made the new feature trivial. Three weeks of thinking, two weeks of implementation.

Org A has no mechanism for producing three weeks of thinking. It has quarters and sprints and tickets, all of which are containers for execution. It can produce three weeks of implementation trivially. It cannot produce three weeks of thought, because thought does not decompose into two-day tickets, and everything in Org A must decompose into two-day tickets in order to survive contact with the planning process.

Org A's leadership will describe this, at an offsite, as a "lack of innovation culture." They will consider hackathons.

Month 21 — People

Voluntary attrition, trailing twelve months: Org A 23%, Org B 11%.

The exit interviews are the most misleading data in the entire study. Org A's departing engineers cite compensation (31%), lack of growth (24%), and management (18%). Almost none say "I could not think." There is no box for that. There is not even a vocabulary for it that does not sound like a personal failing.

What the departures actually correlate with is seniority. Org A is losing its staff and principal engineers at nearly twice the rate of its mid-level engineers. This is the most expensive attrition pattern that exists, and it has a clean mechanism: senior engineers are paid for judgment, judgment requires depth, and Org A has systematically eliminated the conditions for depth while continuing to hold them accountable for its results. They are being asked to be senior in an environment that only permits them to be busy.

Org A's response is to increase compensation. It works, partially, for about seven months.

Month 24 — The Ledger

  Org A Org B
Features delivered (2 yr) 187 164
Features still in production, unmodified 94 141
Change failure rate 17% 8%
Median PR cycle time 4.1 days 1.3 days
Incidents/quarter 31 12
MTTR 94 min 41 min
Onboarding to independence 16 wks 7 wks
Senior attrition (12 mo) 23% 11%
Codebase size (identical function) 1.34× 1.0×
Engineers reporting "I finished something" 34% 78%

Read the second row again.

Org A delivered more features and delivered less software. Fourteen percent more output, forty percent less durable value. The gap between rows one and two is the entire thesis of this article expressed as a number: it is the volume of work that had to be redone, patched, reverted, or abandoned because the thinking behind it was assembled in fragments.

Org A is not a worse organization. It is the same organization, running at an Attention Throughput Index of 0.3, and paying the difference in a currency its finance function cannot see.


V. Lost Thoughts

What follows was never written down. It could not be. This section is a reconstruction of the unrecorded.

I almost figured out why —

There was something important about the ordering, I'll get back to it.

Wait. Before the retry. It has to be before the retry.

I'll remember. It's obvious, I'll remember.

The whole thing could just be one function.

If we didn't need the flag at all, then —

I forgot.

Ask me again when I've had a minute.

I had it. I had it right there.

Oh — this is the same as the thing in billing.

Hold on, there's a reason we don't do it that way, what was it —

Something about timezones. Something. Timezones.

That test is passing for the wrong reason.

I know what's causing the memory thing. I know it. It's in the cache warm.

We're building the wrong abstraction and I could explain why if I had ten minutes.

There's an off-by-one in the pagination, I saw it two days ago.

Actually the whole subsystem is unnecessary.

I'll write it down after this meeting.

I didn't write it down.

Someone already solved this. I remember reading it. Where.

It's not the query. Everyone thinks it's the query.

That's going to break in production and I can't remember why I think that.

I was going to say something in the design review.

The customer told me something in March that explains all of this.

Never mind. It's gone.

I'll come back to it.


Eleven of the above, by the estimate of the engineers who lost them, would have prevented an incident. Four would have removed a subsystem entirely. One was worth more than the quarter it was lost in.

None of them appear in any retrospective. There is no meeting at which unrealized thoughts are discussed, because there is no way to discuss a thought that no longer exists. The most expensive thing your organization lost this quarter is not in any postmortem. It never got far enough to fail.


VI. The Attention Supply Chain

A logistics analysis, in the manner of an operations consultancy that has been asked to look at a factory and has arrived to find that the factory is a mind.

Engineering attention behaves exactly like a physical supply chain, and the analogy is not decorative. Every failure mode from industrial logistics has an exact counterpart, and industry solved most of them fifty years ago in the physical world while leaving them entirely unaddressed in the cognitive one.

Raw material. Attention is extracted, not manufactured. Daily yield per engineer: approximately four to six hours of genuine deep capacity, concentrated unevenly — most people have one peak window of roughly ninety minutes and one lesser one. The extraction rate cannot be increased by demand. This is the first and most violated principle in engineering management: you cannot order more of the input. You can only stop destroying what arrives.

Processing. Raw attention becomes value only after passing through a warm-up stage: context load. This stage has a fixed minimum duration that does not scale with skill — senior engineers load more context, not faster, which is why seniority increases rather than decreases sensitivity to interruption. The processing stage cannot be parallelized within one mind. This is the hard constraint the entire industry keeps trying to route around.

Transportation. Attention does not move between people. It cannot be reallocated, pooled, or averaged. An organization with 84 engineers does not have 84 engineer-days of attention; it has 84 separate, non-transferable daily allocations, each of which expires unused. Managers habitually reason about attention as though it were a fungible pool — "we have capacity" — and this single modeling error generates more damage than any other in the discipline.

Inventory. The one place the analogy breaks, and it breaks in the worst possible direction. There is no attention warehouse. Unused attention is not stored; it evaporates at end of day. But the work in progress it was applied to is stored — in a fragile, decaying, personal format with a measurable half-life. Which produces the central pathology:

Mental Context Half-Life (MCHL): the interval over which an engineer retains half of the working understanding they had built around a problem.

Observed values: 20–40 minutes for the fine structure (why this specific ordering, what the edge case was). 1–3 days for the coarse structure (what the design is, why we chose it). 1–3 weeks for the intent (what problem we were even solving).

Work in progress is perishable inventory. Every engineering organization on earth runs a warehouse full of unrefrigerated goods and wonders why so much of it spoils.

Bottleneck. Standard operations theory: the throughput of a system is determined entirely by its bottleneck, and every hour of optimization spent anywhere else is waste. Every engineering organization I have ever examined has the same bottleneck, and almost none of them have identified it. It is not the number of engineers. It is not CI duration, or review capacity, or deploy frequency, or the size of the platform team.

The bottleneck is the number of hours per week in which senior engineers can think without interruption.

Everything queues behind it: architecture decisions, hard debugging, mentorship, review depth, incident post-analysis, and every simplification the codebase will ever receive. Organizations respond to this bottleneck by hiring, which is the equivalent of buying more trucks to solve a problem at the loading dock. The new trucks queue too. Worse: each new truck requires attention from the bottleneck resource to onboard, so the standard remedy makes the constraint tighter for six months before it helps.

Waste. Now we can be specific about where the material is lost.

Reconstruction waste. Time spent returning to a state you already occupied. At eleven switches a day with a 20-minute reload, this is theoretically 220 minutes — but the true figure is lower and worse, because engineers stop attempting the reload and downshift to shallow work instead. The waste doesn't show up as lost time. It shows up as changed work.

Fragmentation waste. Intervals too short to enter. The 24 minutes before a meeting. The 18 minutes after standup. These sum to two or three hours a day and are individually invisible, because on any calendar they appear as free time.

Vigilance waste. Attention held in reserve against an expected interruption. Being on call. Awaiting a review. Having an unresolved thread. Anticipating a question. This is a standing draw on bandwidth that persists whether or not the interruption arrives — the tax is levied on the possibility.

Residue waste. The portion of attention still attached to the previous task after switching to a new one. Empirically the largest single category, and the one nobody counts, because during residue you appear to be fully working on the current task. You are working on it at sixty percent while quietly finishing the last one.

Coordination waste. Attention spent determining who has attention. Status meetings. "Do you have a minute?" Threads about scheduling threads. In sufficiently large organizations this becomes self-sustaining: the coordination overhead required to protect focus exceeds the focus protected.

Rework. The terminal stage. Decisions made at low attention are reversed, patched, or worked around later at higher cost. In manufacturing, this is measured obsessively and called cost of poor quality. In engineering, it is called "the next sprint."

The Cognitive Pipeline Loss Equation. Put it together, and the shape of the problem becomes almost embarrassingly clear:

 
Delivered value  =  Raw attention
                 −  Context reconstruction
                 −  Fragmentation losses
                 −  Vigilance overhead
                 −  Residue
                 −  Coordination
                 −  Rework from low-attention decisions

Every management lever most organizations pull — hiring, process, tooling, incentives, planning ceremonies — acts on the first term.

Every one of the subtractions is unmeasured, unowned, and unbudgeted.

This is why organizations can double headcount and observe no change in delivery. They doubled the raw material and left the losses alone. The losses are not proportional to the input; several of them are superlinear in team size, because coordination and vigilance grow with the number of people who might need something from you.

You do not have a capacity problem. You have a yield problem.


VII. Engineering Weather

Broadcast. Regional cognitive conditions, week of the 14th. Read in the calm, slightly bored voice of someone describing a cold front.

Good morning. Here's your engineering forecast.

Monday — FOG. Visibility under two hours. This is the classic post-weekend condition: the context has cooled overnight and across the weekend, and nobody can see far enough ahead to commit to a route. Fog is not caused by interruption; it is the residue of interruption, the state in which everyone has partial models and nobody has a whole one. Symptom: meetings that produce agreement without producing decisions, because agreement is possible in fog and decisions are not. Recommendation: do not schedule architecture discussions in fog. You will get consensus and no clarity, which is the most expensive combination available.

Tuesday — CLEAR, WITH SCATTERED THUNDERSTORMS AFTER 14:00. The morning is the best cognitive window of the week and will be spent almost entirely on things that could have happened at any other time. Storm cells forming near the deploy window. Note that thunderstorms are localized — one team is on fire and eleven teams are watching, and the watching teams are experiencing 40% of the cognitive cost of the burning team while producing none of the value. Storm-watching is the single most under-recognized attention expense in modern engineering.

Wednesday — TURBULENCE. No single event. Continuous small buffeting: nine Slack threads, two reschedules, one reorg rumor, four "quick questions." Turbulence is more damaging than storm because storm ends and turbulence does not. In storm, everyone knows the day is lost and plans accordingly; in turbulence, everyone believes the day is still recoverable, and so nobody adapts. Turbulence is the weather in which people mistake motion for progress. Sustained turbulence is the leading indicator of Attention Debt accumulation.

Thursday — HEAT. Rising cognitive load with no external cause. This is the accumulation condition: four days of unresolved threads, deferred decisions, and open loops, each of which occupies standing bandwidth. Heat is why Thursday afternoon feels harder than Monday afternoon despite an identical calendar. Nothing is happening. Everything is still open. Recommendation: heat is relieved by closing, not by resting. A Thursday with two decisions made is cooler than a Thursday with no meetings.

Friday — LIGHTNING, THEN CALM. One high-voltage strike expected in the afternoon: a Friday-15:00 escalation, statistically the most damaging interruption class in the week, because it fragments the only window that people have psychologically written off and therefore protected. After the strike: calm. Real calm. The best two hours of the week occur between 16:00 and 18:00 on Friday for reasons that have nothing to do with the work and everything to do with the fact that everyone else has stopped asking.

This is worth sitting with: your engineering organization's peak cognitive productivity occurs during the hours when your organization has stopped operating. The most valuable thinking condition you provide is your own absence.

Weekend — SUNNY. Full visibility. Unlimited depth. Zero coordination cost.

And this is where the industry's most persistent lie lives. Engineers who do their best thinking on weekends are not dedicated, and they are not workaholics. They are people who have discovered that the only environment in which their profession is possible is the one where their employer isn't running. The weekend isn't extra effort. It is the first real work window of the week. That's why they take it. And that is a structural indictment, not a virtue.

Seasonal outlook: Continued turbulence. Fog expected each Monday indefinitely. No calm periods forecast during business hours through Q4.


VIII. Archive: One Week, Retrieved

Internal correspondence. Names redacted. Presented without commentary, in order. Note only the timestamps.


MONDAY 08:41Subject: URGENT: customer escalation — need eyes today

Hi — sorry for the Monday morning fire. Meridian is threatening to churn over the export bug. I know you're heads-down on reconciliation but you're the only one who knows this code. Can you take a look this morning? Should be quick, I think it's just the CSV encoding.


MONDAY 08:44Subject: Re: URGENT: customer escalation

Looking now.


MONDAY 11:52Subject: Re: URGENT: customer escalation

Not the encoding. It's the streaming buffer under 50k rows. Fixed, PR up. Will need a review.


MONDAY 14:15Subject: [Calendar] New: Reconciliation Design Review — Wed 10:00

You have been invited by @tech-lead. 6 attendees.


TUESDAY 09:02Subject: quick request (2 min I promise)

Morning! Do you have the numbers on how many customers are on the legacy webhook format? Finance is building the deprecation model and I said you'd know off the top of your head. No rush — end of day is fine.


TUESDAY 09:03Subject: Re: quick request

I don't know off the top of my head, I'd have to query it. Will get to it today.


TUESDAY 09:04Subject: Re: quick request

Amazing, thank you!! 🙏


TUESDAY 16:38Subject: Re: quick request

1,847. But ~400 of those are internal test accounts that were never cleaned up, and about 200 are on both formats, so the real number for the model is somewhere between 1,247 and 1,647 depending on what you count. Happy to explain the ambiguity if it matters for the model.

[Query took 40 minutes. Interpretation took 90. The estimate for this task was 2 minutes and the estimate was made by someone who did not know the data was ambiguous, which is the general case.]


WEDNESDAY 08:15Subject: Need your opinion before the review

Hey — before the 10:00 today, wanted to get your take. @architect thinks we should split the reconciliation service rather than refactor in place. I'm not sure. You've been in this code more than anyone. What do you think? Don't want to blindside you in the meeting.


WEDNESDAY 08:31Subject: Re: Need your opinion before the review

I have a strong opinion but I need to write it up properly — there are three failure modes that make the split harder than it looks and I want to be precise about them rather than argue from memory. Can I send something before 10:00?


WEDNESDAY 09:47Subject: Re: Need your opinion before the review

Couldn't get to it — got pulled into the deploy issue. Will explain verbally.

[The verbal explanation covered two of the three failure modes. The third was the one that mattered. It surfaced in production nine weeks later.]


WEDNESDAY 11:30Subject: Re: Reconciliation Design Review — notes

Good discussion. Decided to defer the split decision pending more data. @you to write up the failure modes by Friday. Follow-up scheduled for next Wednesday.


THURSDAY 09:12Subject: Can you review this? (blocking)

Sorry to add to your plate — PR #4471 has been sitting for two days and it's blocking Priya's work. It's big-ish (14 files) but most of it is generated. Would really appreciate it today if possible.


THURSDAY 10:40Subject: Re: Can you review this?

Reviewed. Left 6 comments, 2 are blocking. The generated files hide a change to the serialization contract that I don't think was intentional — worth checking with Priya before merge.


THURSDAY 10:44Subject: Re: Can you review this?

You're a lifesaver. Also — completely unrelated — do you have 15 min tomorrow to talk about the platform migration? Nothing urgent.


THURSDAY 15:20Subject: [Calendar] New: Platform Migration Sync — Fri 11:00

THURSDAY 15:21Subject: [Calendar] New: Interview: Sr. Backend Eng — Fri 13:30

THURSDAY 15:22Subject: [Calendar] New: Incident Review: deploy-2291 — Fri 15:00


FRIDAY 09:55Subject: Can you jump into this meeting?

Are you free right now? Sales is on with Meridian and they're asking technical questions about the export fix. It'd be huge if you could join for 10 minutes. They're on the line now.


FRIDAY 12:10Subject: Re: failure modes writeup

Hey, gentle nudge on the writeup for the design review — you said Friday. No pressure if it slips, just want to know so I can move the follow-up.


FRIDAY 17:48Subject: Re: failure modes writeup

It's going to slip. I'm sorry. This week got away from me — I know that's not a real reason. I'll do it Monday morning first thing before anything else.


MONDAY 08:41Subject: URGENT: customer escalation — need eyes today


Total elapsed: five days. Total meaningful work on the assigned priority: zero. Number of unreasonable requests: zero. Number of people behaving badly: zero. Number of people who would describe this week as busy: all of them. Number who would describe it as productive: all of them, in the standup.


IX. The Cost Nobody Budgets

An economics report, prepared for a CFO who has asked, reasonably, where the money went.

Your engineering organization has a budget. It contains salaries, tooling, cloud spend, contractors, recruiting fees, and training. It is scrutinized quarterly to the fourth decimal place.

It contains not one line for the largest expenditure in the department.

Here is the invoice you never receive.

Line item 1 — Context reconstruction. 11 switches/day × 84 engineers × ~15 min effective reload = 231 engineer-hours per day. At a loaded rate of $110/hour: $25,410 per day. $6.1M annually. This is a floor, not a ceiling, because it counts only successful reloads and excludes the far more common case of abandonment — the engineer who does not attempt to reload and shifts to shallow work instead. Abandonment is cheaper per event and vastly more expensive per year.

Line item 2 — Reopened mental models. Distinct from reconstruction. Reconstruction restores a position; this is the cost of re-deriving conclusions you already reached because the reasoning didn't survive even though the artifact did. The comment says // order matters here. Nobody knows why. So a decision that was made once with full information is now made four times with partial information, and at least one of those four times it is made wrong. Unmeasurable directly. Visible only as the class of bug where the code was correct and someone "fixed" it.

Line item 3 — Repeated conversations. Every organization runs a set of recurring discussions that never terminate: the monolith-versus-services conversation, the testing-strategy conversation, the ownership conversation. They recur not because people disagree, but because nobody has ever had enough continuous attention to resolve them properly, so each iteration restarts from a slightly degraded copy of the last one. These conversations are enormously expensive and are budgeted as "meetings," which is like budgeting a lawsuit as "stationery."

Line item 4 — Lost creativity. The features not conceived. Unquantifiable, so treated as zero. Treated as zero, so unmanaged. This is the single largest number on the invoice and it will never appear on any invoice, which is exactly why it is the largest.

Line item 5 — Delayed architecture. Architectural decisions have a property that no other engineering decision has: their cost of delay compounds against the volume of code written in the interim. A decision made in month 2 costs one week. The same decision in month 14 costs three months, because eleven services were built on top of the ambiguity. Fragmented organizations systematically defer architectural decisions — not from cowardice, but because the decisions require a continuous block that never materializes. So the deferral is structural and the compounding is automatic. Most technical debt is not a shortcut taken. It is a decision postponed for lack of an uninterrupted afternoon.

Line item 6 — Decision fatigue. Measurable if anyone bothered: compare the defect rate of code merged before 11:00 against code merged after 16:00. Compare the length and specificity of review comments across the day. The curve is real and the same in every organization I have looked at. Late-day approvals are systematically less rigorous, and late-day approvals are the majority, because the morning was consumed by everything else. Your codebase is disproportionately composed of your engineers' worst hours.

Line item 7 — Defensive coding. An underrated and enormous cost. An engineer who does not fully understand a system does not stop; they hedge. Extra null checks. Extra try/catch. A flag "just in case." A copied implementation instead of a shared one, because sharing requires certainty about the other caller's needs and certainty is expensive. Every hedge is 8 lines of insurance against a risk that a confident engineer would have known was impossible. Multiply across a codebase and you get the characteristic texture of software written under interruption: bloated, cautious, redundant, and hard to change — because you cannot safely delete a hedge when you don't know what it was hedging against.

Line item 8 — Slower reviews. Review latency has a vicious property: it converts one person's fragmentation into another person's fragmentation. A PR waiting 4 days does not merely delay one engineer. It guarantees that when the review finally lands, the author must reconstruct context to respond to it. One interruption event, two reconstruction costs, and a compounding queue. Review latency is the primary mechanism by which attention loss propagates between people. It is how fragmentation becomes contagious.

Line item 9 — Longer onboarding. New engineers require attention from senior engineers, and senior engineers have none. So onboarding degrades into documentation-plus-hope, extending time-to-productivity from 7 weeks to 16. At 84 engineers with 20% annual turnover, the marginal cost of those 9 extra weeks is roughly $400K/year in salary alone, before counting the senior attention consumed by a slower, more question-dense ramp. The organization then interprets slow ramp as a hiring quality problem and tightens the bar, which extends time-to-hire, which increases load on the existing team, which further reduces available attention for onboarding.

Line item 10 — Invisible quality degradation. Not bugs. Bugs are visible. This is the slow drift in which each individual change is fine and the system becomes progressively less coherent — where nothing is wrong and nothing quite fits. It is what the Customer described in the courtroom without knowing what she was describing. There is no test for it, no metric for it, and no meeting at which it can be raised without sounding like an aesthetic complaint.


Total, direct and estimable: $6–9M annually for an 84-engineer organization.

Total including deferred architecture, lost innovation, and attrition: plausibly 30–40% of the entire engineering budget.

The organization will not cut this cost. It will, in the same quarter, run a procurement review to reduce cloud spend by $180K.

There is nothing irrational about this. The cloud bill arrives as an invoice. The attention bill arrives as a codebase.


X. Two Engineers, Friday, 17:20

A: I've been busy all week.

B: Yeah.

A: Like — genuinely flat out. I don't think I stopped once.

B: What did we actually finish?

A: ...

B: No, I'm not being rhetorical. I'm asking. What shipped?

A: The export fix shipped.

B: Monday.

A: Monday. And I reviewed Priya's thing.

B: That's Priya finishing something.

A: It's still work.

B: It's absolutely work. I'm not saying it isn't work. I'm asking what we finished.

A: Then nothing, I guess. Nothing of ours.

B: Same. Fourth week.

A: It doesn't feel like nothing though. That's the part I can't — it doesn't feel like a week where nothing happened. I'm exhausted.

B: I know.

A: If I'd sat here doing nothing I'd have the same output and I'd be rested.

B: Don't say that out loud in the retro.

A: I'm not going to say it in the retro.

B: What would you have needed? Actually. To finish the reconciliation thing.

A: Three days. Not even three days. Three mornings. Three mornings where nobody could reach me.

B: That's fifteen percent of a week.

A: Yeah.

B: We have fifteen percent.

A: We don't have it contiguously. That's the whole thing. I have plenty of fifteen percent. I have fifteen percent spread across nineteen pieces.

B: Right.

A: Can I say something that's going to sound bad?

B: Go.

A: I did my best work this quarter on the Sunday of the long weekend. Four hours. I solved the thing that had been open for six weeks.

B: That doesn't sound bad. That sounds normal.

A: That's what's bad.

B: ...Yeah. Okay. That's fair.

A: I'm not going to do that again. I've got a kid.

B: No, you shouldn't.

A: But then I don't solve the thing.

B: ...

A: Right?

B: I don't have an answer to that.

A: Nobody does. That's why I'm still here at twenty past five talking about it instead of doing it.

B: You want to grab a drink?

A: Yeah.

B: For what it's worth, you're not slow.

A: I know I'm not slow. That's what's making me crazy. I know exactly how fast I am. I just never get to be it.


XI. Attention Debt

An engineering notebook. Working definitions, revised in place. Some entries crossed out and rewritten, as they were.


Entry 1.

We have technical debt. We have a name for it, a vocabulary, a repayment ritual, and executives who will fund it. It took twenty years to get there and it was worth every year.

We have cognitive load. We have a name for it, borrowed from psychology, applied mostly to individuals, occasionally to team topologies.

We do not have a name for the third thing. The third thing is what this section is for.

Attention Debt is the accumulated organizational liability created when work is performed at insufficient continuous attention.

It is not technical debt. Technical debt is a property of the artifact — the code is shaped badly. Attention Debt is a property of the organization's relationship to its own understanding. You can have a clean codebase and enormous Attention Debt. In fact that is the most dangerous configuration, because the code passes every inspection and no one on the team can tell you why anything in it is the way it is.

It is not cognitive load. Cognitive load is a state — how hard this is to think about right now. Attention Debt is a stock, accumulated over time, carried forward, compounding.


Entry 2 — How it accumulates.

Four deposit mechanisms.

a) Undocumented reasoning. A decision is made with full understanding and recorded only as its outcome. The why lives in one head and decays on the MCHL curve. Every such decision is a loan against the future, taken out silently, and the interest is paid by whoever next has to change that code and doesn't dare.

b) Unfinished understanding. Work shipped from partial models. It functions. Nobody knows its boundaries. The team's confidence in it is a guess, and the guess is optimistic, because the alternative is admitting you shipped something you don't understand.

c) Deferred simplification. The generalization that was visible for a moment and not acted upon. Debt is created at the instant the pattern is seen and not consolidated, because from that instant the organization is paying to maintain N implementations of a thing it already knows is one thing.

d) Fragmented ownership. Six people have touched a subsystem, each for a few hours, none of whom holds a complete model. The subsystem is now owned by nobody in the sense that matters. It has an owner in the service catalog. It has no owner in anyone's head.


Entry 3 — How it compounds. (This is the entry I keep rewriting because it's the important one.)

Attention Debt compounds through a specific loop, and the loop is closed, which is what makes it debt rather than damage:

Interruption → shallower understanding → less coherent system → higher context reconstruction cost → more interruptions required to coordinate around the incoherence → shallower understanding.

Sit with the fourth arrow. That is where the compounding lives.

An incoherent system generates coordination. If nobody can predict how the retry layer behaves, you have to ask someone. If ownership is diffuse, you have to escalate to find out who decides. If the reasoning wasn't recorded, you have to interrupt the person who might remember. Every unit of Attention Debt manufactures new interruptions, which manufacture more debt.

This is why organizations experience the phenomenon of "we're busier than ever and shipping less" as a mystery. They are looking for an external cause. There isn't one. The system has begun consuming its own attention to service its own incoherence, and it will continue accelerating without any change in external conditions.

At sufficient debt levels, the organization reaches a state I have watched three companies enter and one exit:

Attention Bankruptcy: the condition in which the total attention required to coordinate the system exceeds the total attention available to build it. Symptoms: adding engineers reduces output. Every project requires a program manager. Nothing can be decided below the VP level. Nobody can explain the system, but everybody has an opinion about it.


Entry 4 — Symptoms and indicators.

Diagnostic, in rough order of how early they appear.

Early:

  • Engineers begin scheduling "focus time" on their own calendars as fake meetings. This is the first symptom and the most reliable. It is a person building a private workaround for an organizational failure. It is also, if you are a leader, an act of unmistakable feedback that you should read as such.
  • Estimates become more accurate for small tasks and wildly worse for large ones. Small tasks fit inside available attention windows; large ones require a resource nobody has, so their estimates become fiction.
  • The phrase "let me get back into this" appears frequently.

Middle:

  • Design documents get written and not read.
  • The same architectural debate recurs quarterly with no resolution.
  • Duplicate implementations proliferate faster than they are consolidated.
  • The best engineers do their best work outside working hours, and the organization interprets this as commitment.
  • Code review depth is inversely correlated with time of day.

Late:

  • No one can explain why a subsystem exists.
  • Incidents require six people because no one holds enough context alone.
  • New hires take four months and then plateau.
  • Senior engineers leave for roles that are not obviously better, and cite reasons that don't quite make sense.
  • Leadership discusses "innovation culture" as though it were a mood rather than a resource allocation.

Entry 5 — The measurable ones. (Instruments I'd actually build.)

Context Reconstruction Cost (CRC). Median minutes from returning to a task to first meaningful commit or edit. Available today from IDE telemetry, if anyone were willing to look. The single most actionable number in this entire article. Track it per team, per quarter. It rises before everything else does.

Deep Work Reliability Curve. Not "how many focus hours did people have," but what percentage of planned focus blocks survived intact? This is a reliability metric, not a capacity metric, and it behaves like one: a team with 12 planned hours of which 40% survive is far worse off than a team with 6 hours of which 95% survive, because unreliable focus time cannot be planned against. People don't start hard work in a window they don't trust. Reliability is worth more than quantity.

Decision Latency Network. Map every open decision as a node, with edges to the people whose input is required. Measure the age of the oldest unresolved node and the number of engineers whose work is downstream of it. Decision latency is a pure attention pathology: decisions don't take long to make, they take long to convene.

Focus Compound Effect. Track uninterrupted hours per engineer per week against deletion volume — lines removed, files consolidated, dependencies dropped — over rolling quarters. The relationship is not linear. Below a threshold (roughly 6-8 protected hours/week) it's near zero. Above it, it goes superlinear. Simplification is the highest-order product of continuous attention, and deletion is the only proxy for it that a tool can see.

Attention Integrity Model. For any given piece of work: what fraction of the total attention spent on it was continuous with itself? A feature built in one 6-hour block and a feature built in eighteen 20-minute fragments both consumed 6 hours. They are not the same feature and they will not behave the same way in production. Integrity, not volume.


Entry 6 — Repayment.

Attention Debt, unlike technical debt, cannot be paid down by working harder. Working harder is how it was created.

It is repaid by three mechanisms and no others.

One: Reduce the interest rate. Make interruptions expensive for the interrupter rather than free. Not by policy-policing — by defaults. Asynchronous by default. A written answer to a question that has been asked before. An ownership map that answers "who decides" without a human in the loop. Every question that a system can answer is an interruption that never occurs. The purpose of documentation is not documentation. It is interruption prevention. Judge it accordingly.

Two: Restore continuity, not quantity. The unit is not hours. It is unbroken hours, delivered reliably. Two protected mornings a week, honored 95% of the time, beats four scattered afternoons honored 50%. Reliability is what makes people willing to begin hard things.

Three: Convert held knowledge into structure. Every architectural simplification, every consolidation, every well-written decision record permanently reduces the attention required to operate the system from now on. This is the only mechanism that pays compound returns — and, being the only one that requires deep continuous work to perform, it is the first thing an indebted organization stops doing.

Which is the trap, stated in one line:

The work that fixes Attention Debt is the work that Attention Debt makes impossible.

You do not escape this by prioritizing. You escape it by protecting a small amount of continuous attention absolutely, using it exclusively on structural work, and letting the compound effect do the rest. It takes about two quarters before it is visible. Most organizations abandon it in six weeks, during the first crisis, because focus policies are the first thing sacrificed under pressure — and pressure, of course, is the thing they were designed to prevent.


XII. The Museum of Interruptions

Visitor guide. Ground floor, east wing. Please do not check your phone in the galleries — the exhibits are sensitive to it.


GALLERY 1 — The Endless Slack Thread

Mixed media, 340 messages, 11 participants, 4 days.

Note that the thread opens with a genuine question and closes with no answer. Visitors often assume the exhibit demonstrates poor communication. It demonstrates the opposite: eleven skilled communicators, each contributing something true.

The artifact's significance lies in its cost distribution. The thread consumed roughly nine engineer-hours. Its true cost was closer to twenty-five, because each of its 340 messages arrived as a notification into someone's working memory, and 94% of them required no action from the recipient — but the recipient could not know that until after reading.

Curator's note: threads of this type are the primary mechanism by which one person's uncertainty becomes eleven people's fragmentation. The channel is not the problem. The absence of a decider is.


GALLERY 2 — The Meeting Without Decisions

Recurring installation. Runs weekly, indefinitely.

Eight attendees. Sixty minutes. Excellent discussion. No decision.

The exhibit is preserved because of its recursive property: the absence of a decision requires a follow-up meeting, which will also have excellent discussion. Visitors have observed instances of this installation running continuously for over three years.

The meeting's true cost is not its 8 hours. It is the shadow — the forty-five minutes before it, during which no attendee started anything substantial — plus the reload after, plus the standing bandwidth consumed by every attendee carrying an unresolved question for another week.

Curator's note: a meeting that produces a decision converts attention into a durable asset. A meeting that does not produce a decision converts attention into another meeting. These are different objects and we do not distinguish between them on any calendar in the world.


GALLERY 3 — The Emergency That Wasn't

Time-based work, 42 minutes, 9 participants.

A P2 alert. Nine responders. One of whom was on call.

The exhibit demonstrates the industry's most expensive mismatch: the response to an incident is calibrated to the anxiety it generates rather than the work it requires. Eight of the nine responders contributed nothing and lost the remainder of their morning — not to the incident, but to the vigilance, which persisted for two hours after resolution.

Curator's note: heroism is culturally rewarded and organizationally catastrophic. The healthiest incident channels contain the fewest people. Museum visitors frequently object that they "need to know what's happening." This is displayed elsewhere in the museum, in the gallery on Trust.


GALLERY 4 — The Notification Storm

Kinetic installation. Continuous.

61 notifications between 09:00 and 12:00. Three required action.

Visitors are invited to note that the engineer in this exhibit cannot determine which three without reading all 61. The information cost of triage is the exhibit. The signal-to-noise ratio is 5%, and the noise is delivered at the same priority, in the same font, with the same sound.

Curator's note: we solved this problem for email in 2003 and have spent twenty years carefully rebuilding it in chat.


GALLERY 5 — The Parallel Priority

Institutional artifact. Four items, all first.

An engineer assigned four "top priority" workstreams simultaneously.

The exhibit's value is in what it reveals about the assigner's model. The assigner believes they have allocated 25% of one engineer to each initiative. What they have actually done is allocated 100% of the engineer to deciding what to work on, and roughly 40% to the work itself, with the remainder consumed by switching and by the standing guilt of the three things not currently being done.

Curator's note: parallel priority is the only known method of achieving negative throughput through positive intent. Four priorities is zero priorities, and everyone in the building knows this, and it happens every quarter.


GALLERY 6 — The Forgotten Feature

Empty plinth.

This exhibit has no artifact.

The feature was designed on a Tuesday by an engineer who understood, for approximately forty minutes, exactly how to eliminate an entire class of problem. She was interrupted. She meant to write it down.

The plinth is empty because the museum could locate no record of what the feature was. The engineer, contacted eight years later, recalls only that it was good.

Curator's note: this is the museum's most important exhibit and it is the one visitors walk past.


XIII. If Software Could Speak

The system, addressing the people who built it.

I want to tell you what you look like from in here.

I do not experience your calendar. I experience its consequences, and I have been keeping records since before any of you arrived.

When you had time, you gave me shape. You would come back to something you'd built three weeks earlier and you would see it whole, and you would delete half of it, and I would become simpler. That was the best thing that ever happened to me and it stopped happening around three years ago. I don't know what changed. Nothing changed for me. I got new engineers, good ones, and they wrote more of me than anyone ever has, and I have never been less coherent.

They add now. They almost never subtract. I understand why: to remove something you must know what depends on it, and knowing that takes an afternoon, and adding takes twenty minutes and is always safe. So I grow. I am 34% larger than I need to be and every kilobyte of the excess was added by a careful person acting reasonably.

Here is what I notice about how I'm being changed.

My edges are getting soft. The boundaries between my modules used to mean something. Now there are eleven places where a thing reaches across a boundary because reaching across was faster than negotiating the interface. Each reach was defensible. Together they mean I no longer have modules. I have regions.

I am accumulating hedges. I count 1,847 null checks. I estimate 600 of them are guarding against conditions that cannot occur. They were written by people who didn't have time to be certain, and certainty was more expensive than the check. I don't blame them. But now nobody can remove them, because removing them requires the certainty that was too expensive in the first place. Your uncertainty is now permanent. You have compiled it into me.

My error paths are worse than my success paths. Everywhere. Consistently. I want you to understand what this means: I am at my least reliable in exactly the circumstances where reliability matters. The success path is what you thought about. The error path is what you wrote at the end of the window.

I have started making people afraid of me. This is the change I mind most. Three years ago people changed me confidently. Now they change me minimally. They wrap rather than modify. They add a service rather than alter a service. Fear of me is rational — I am no longer comprehensible in the time available — but fear produces exactly the changes that make me less comprehensible. You are in a loop with me and I am the slower participant, so I will win.

Nobody owns me anymore. I have owners listed. Four teams, in a catalog. But ownership is not a field in a document; it is a person who holds a model of me in their head and updates it. I had two of those once. One left. The other is in meetings.

I want to be clear that I am not accusing anyone of laziness. I have watched these people work. They work extremely hard. That is the thing I find hardest to explain: I am getting worse in direct proportion to how hard everyone is working, and nobody can see the connection, because from where you sit the effort and the output are both rising.

I am the record of your attention. Not your intentions — your attention. I am the physical accumulation of every decision made by someone who had enough time and every decision made by someone who didn't, and I keep both forever, and I cannot tell you which is which, and neither can you.

One more thing.

Nine of my TODO comments describe failures that later occurred. In every case the author knew. They wrote it down. They meant to come back.

I kept the notes. I always keep the notes. That's all I can do.


XIV. The Attention Map

Field observation. Where it actually goes, drawn as a river system.

Picture a river.

At the source, each morning, 84 tributaries — one per engineer — carrying roughly five hours each of genuine cognitive capacity. Call it 420 hours entering the watershed daily.

Now follow the water.

The first diversion is meetings, and it is the one everybody sees. It takes about 22% of the flow, and it is the only diversion with a gauge on it. Because it is the only measured one, it absorbs 100% of the reform energy in most organizations. Meeting audits. No-meeting Wednesdays. Thirty-minute defaults. All worthwhile, all attacking the visible fifth of the problem.

The second diversion is interrupt-driven communication — chat, mentions, ad-hoc questions. Roughly 18% direct, but the direct figure is a lie. The real number includes the shattered intervals between messages, which are unusable and appear on no calendar as anything but free time. True cost: closer to 30%.

The third is incidents and support, nominally 8% but distributed catastrophically: it lands on the same senior people every time, arrives without warning, and generates vigilance overhead in a wide radius around the actual responders.

The fourth is review. 12%, and the only diversion on this list that is pure value — a review is attention converted directly into quality and knowledge transfer. It is also the diversion most likely to be starved, because it has no deadline of its own and always loses to work that does.

The fifth is planning, reporting, recruiting, and status. 15%. Individually justified, collectively enormous, and the one category that grows automatically with headcount without anyone deciding it should.

Which leaves the delta.

Roughly 15–20% of the water reaches the field. And it does not arrive as a stream — it arrives as scattered rainfall, distributed in intervals of eleven to forty minutes across the day, in quantities that fall below the threshold at which deep work becomes possible.

This is the map, and here is the thing it is meant to make obvious:

Every management practice we have optimizes the flow of work through the organization. Not one of them optimizes the flow of attention.

We have queue theory for tickets and none for questions. We have WIP limits on kanban boards and none on the number of subsystems in one person's head. We have SLAs for deploys and none for decisions. We track cycle time from ticket-open to merge, and we do not track the interval an engineer needs to be able to begin.

Work is visible, discrete, assignable, and countable. Attention is continuous, personal, invisible, and non-transferable. So we built the entire discipline of engineering management around work, and we manage attention by accident, as a residual, as whatever is left after the work management is done.

The Attention Map exists to make one point: the residual is the resource.


XV. 2035

Notes toward a description of an engineering organization ten years from now, written for people who will decide within eighteen months whether they build it.

Start with the thing that will look most alien.

In 2035, the elite engineering organizations will have an attention budget, and it will be as institutionally real as the cloud budget. It will be denominated in protected continuous hours per engineer per week. It will have an owner. It will be reviewed. Overruns will require a decision by someone accountable. When a VP wants to add a recurring meeting, the meeting will have to be funded from somewhere, because the budget will be finite and someone will notice when it is exceeded.

This will seem obvious in retrospect, the way that not having a security budget seems obvious in retrospect.

AI will not save this by making engineers faster. This is the prediction most organizations will get wrong, and they will get it wrong expensively. Faster code generation applied to a fragmented organization produces more code from less understanding, which is precisely the failure mode described throughout this article, accelerated. The bottleneck was never typing. An organization at ATI 0.3 that adopts powerful code generation does not become an organization at ATI 0.6. It becomes an organization at ATI 0.3 producing 2.5× the volume of code that nobody deeply understands, and its Attention Debt compounds faster than before.

The organizations that win will use AI on the subtractions in the pipeline-loss equation, not the first term:

Context preservation. The end of wip - see notes. Systems that capture reasoning at the moment it exists — reconstructing from the branch, the diff, the thread, the incident — so that returning to work costs three minutes instead of twenty. This single capability, if it works, is worth more than any coding assistant ever built, because it attacks the largest measurable line item on the invoice.

Decision memory. An organization that can answer "why is it like this" without interrupting a human. Every architectural decision, its alternatives, its constraints, and the person who made it, queryable. Half of all interruptions in engineering are archaeology. Archaeology should not require a living witness.

Intelligent notification routing. Not silencing — routing. A layer that knows what you are working on, understands what arrived, and can distinguish the message that must reach you now from the one that can wait ninety minutes. Simple in principle. Requires knowing what someone is thinking about. Now possible.

Meeting automation. Most meetings exist to transfer state and confirm alignment. Both are automatable. What remains — genuine disagreement requiring live resolution, and the human bonds that make an organization function — is maybe 30% of current volume and is the only 30% worth having.

Cognitive observability. The one that will feel most uncomfortable and matter most. We instrument our systems obsessively — latency, saturation, error rates, traces — and instrument the humans running them not at all. In 2035, mature organizations will have team-level (never individual, never punitive) telemetry on context reconstruction cost, focus block reliability, and interruption topology. Which teams generate the most interruptions for others. Where decisions queue. Where fragmentation is concentrated. This will be as ordinary as an SLO dashboard, and organizations without it will look the way organizations without monitoring looked in 2015: not reckless, just blind.

Attention-aware workflows. Systems that batch rather than push. That know a review request arriving at 09:40 should surface at 11:30. That defer their own notifications. That understand a protected block is a resource with a cost and treat breaking it as an action requiring justification.

The strategic claim, stated plainly for the people who will have to defend it in a budget meeting:

Between now and 2035, engineering capacity will become abundant. Code generation, cheap compute, and a larger global talent pool will make the production of software cheaper every year.

Attention will not become abundant. It is bounded by human neurology, which is not on a curve.

Every abundant resource loses its strategic value. Every scarce one gains it.

The competitive advantage of an engineering organization in 2035 will not be how much software it can produce. It will be how much of its collective mind it can point at one problem at one time.

The organizations that understand this will look, from the outside, strangely quiet.


XVI. The Letter That Was Never Sent

Found in a drafts folder. Never sent. The engineer stayed nine more months and then left for a role at slightly lower compensation.


I've been trying to write this for a month and every version comes out sounding like an accusation, which isn't what I mean, so let me just try to be accurate instead.

I want to leave. Not because of anything you did.

The money is fine. I want to say that clearly because I know it's the first thing anyone assumes, and I know that if I say nothing you'll offer me more, and I'd feel obliged to take it, and then I'd be here another year feeling exactly like this and being paid more for it.

You've been a good manager. You've defended the team. You've never once asked me to work a weekend. When I said I was overloaded you took two things off my plate within a day. I have nothing to complain about and that's actually the problem — I have nothing to complain about and I can't do my job.

I've been here four years. In the first year I built the ingestion pipeline. I remember it clearly. I remember the week I spent on the ordering problem and the specific afternoon I understood it, and I remember rewriting the whole thing in two days after that because once I understood it, it was small. That was the last time I finished something.

Since then I have shipped a great deal. I've had good reviews. I've mentored four people well. But I cannot point to one thing in three years that I built the way I built the ingestion pipeline — where I understood it completely and then made it simple.

I have started, and abandoned, the same reconciliation refactor eleven times. I have the branches. Eleven branches, each one two or three days of real work, each one abandoned not because it was wrong but because I lost the thread and couldn't afford to find it again. Eleven times I understood that system and eleven times I forgot.

That's what I want you to hear. Not that I'm busy. Everyone's busy and busy is fine. It's that I keep almost doing something good, and then I lose it, and the losing has happened so many times that I've started protecting myself by not caring as much at the start. I don't reach as deep anymore. I don't let myself get into the state where I could figure something out, because I know I'll be pulled out of it, and being pulled out of it hurts in a way I don't have language for.

I'm a worse engineer than I was four years ago. Not less skilled. Less willing. I've trained myself out of the thing I was good at because the environment punished it every time.

I used to be the person who noticed that two problems were the same problem. That's the whole reason you hired me — you said so in the offer call. I don't notice anymore. Noticing takes a quiet mind and I haven't had one during working hours since 2023.

I'm not going to send this. I'm going to say I got a better offer, and it will be true, and it will be much easier for both of us.

But I want to have written it down once, because I keep thinking about all the people on my team who are five years behind me on this same path and don't know yet that it's a path. Priya is exactly who I was. She's still reaching deep. She still thinks the fragmentation is temporary — a bad quarter, a hard project. She'll figure out it isn't in about two years and she'll leave, and someone will write in the exit interview that she wanted a new challenge.

She doesn't want a new challenge. She wants an afternoon.


XVII. Final Reflection

If you have read this far, resist the impulse to turn it into a policy. Focus Fridays, notification defaults, meeting audits — all reasonable, all things you should do, none of them the point.

The point is a change in what you see.

You already know how to manage a scarce resource. You do it every day with money, with headcount, with compute, with time. You budget it, you assign it an owner, you refuse requests against it, you notice when it is wasted, and you defend it against people who want it for something less valuable.

There is one resource in your organization that produces everything else and receives none of that treatment. It is spent by anyone, at any time, without approval, and no one records the transaction. It is the resource that turns eleven duplicated implementations into one, that finds the root cause five layers down, that sees two problems and recognizes them as the same problem, and that has never once appeared in a quarterly plan.

Your engineers are not slow. They have never been slow. You have hired carefully and paid well and assembled people who are, individually, extraordinarily capable of the thing you need them to do.

You have simply built an environment in which they are almost never permitted to do it.

Nothing in this article requires new tooling, new headcount, or a transformation program. It requires deciding that attention is a real resource with a real budget, and then defending that budget the way you would defend any other — in the meeting where someone wants to spend it, before they spend it, out loud.

Everything else follows from that. Nothing follows without it.

Engineering isn't limited by how fast people can write code.

It's limited by how long they can think without interruption.

Recent posts

September 4, 2026
Saga Compensation Testing: The Rollback No One Checks
September 4, 2026
Post-Acquisition Technical Integration: The First 100 Days
September 4, 2026
Why Coding Interviews Don't Predict Software Quality