← Blog·workflow

Context Switching Is a Bug, Not a Feature

Modern product work fragments across Figma, IDE, browser, Slack, Linear, and more. The tax this imposes is worse than most teams realize — and the fix is not better tools, it is fewer.

By Kristian

A useful experiment: open your activity monitor tomorrow and look at the list of applications you used for more than one minute during a normal working day. If you build software products for a living, the list will probably be at least six applications long, and some combination of the following will be in it:

  • A code editor
  • A browser with many tabs
  • A design tool
  • A chat tool
  • A project management tool
  • A documentation tool
  • A terminal, if separate from the editor
  • A meeting tool
  • A design inspection or commenting tool
  • A password or secrets manager
  • An AI coding assistant, if separate from the editor

Each of these is optimized, individually, for the task it handles. Each of them has strong opinions about how to be used. Each of them has its own keyboard shortcuts, its own notion of "undo," its own idea of what counts as the "current item." They do not agree with each other.

The industry has taken the existence of this stack as a fact of nature. You are expected to wear all of them well, like a full kitchen of specialized implements. But the cost of switching between them compounds, and the compounding is not linear. Most of what drains a day of building is not the work itself. It is the overhead of repositioning your attention across six tools.

What switching actually costs

The research on context switching is older than any of our current tools. A classic study from the early 2000s found that it takes roughly twenty-three minutes for a knowledge worker to fully return to a task after an interruption. Twenty-three minutes. Apply that number to a day with twelve genuine tool-switches and the math stops working. You never spend a full working hour on anything.

Modern research updates this only at the margins. The exact number varies by task complexity, but the direction is consistent: any nontrivial switch to a new tool, file, surface, or mental model imposes a measurable recovery cost. The cost is higher when the new surface has different affordances, different shortcuts, or different assumptions about what you were doing.

The typical developer's day is a sequence of such switches, dozens per day, each small enough that it doesn't feel like a disruption but large enough that it shreds the capacity for deep thought.

The tells

You can feel the cost even if you don't measure it. The tells are specific:

  • Long blocks of time end with nothing shipped. You started at 9, it's now 1, and when you try to say what you did, the honest answer is "looked at a lot of things."
  • Simple tasks take most of the day. A task you would have estimated at an hour takes six, and nothing about the task itself was actually hard.
  • Decisions feel harder than they should. Small judgment calls — is this spacing right? — start to feel monumental. This is a symptom of depleted attention, not of genuine difficulty.
  • Slack messages from three hours ago feel like they might as well be from yesterday. Time distorts. Recent memory compresses. This is a direct signature of switching cost.

These are not moral failures. They are predictable outcomes of a tool stack that demands constant repositioning.

Why more tools don't help

The industry response to workflow friction has been to add a tool. A better design-to-code plugin. A better Jira alternative. A better AI coding assistant. Each addition is locally justified — this one will finally smooth things out — but at the system level, each new tool is another surface to switch to.

Tool consolidation is the rarer move. Fewer things, each doing more, even if none of them is the absolute best in class.

The reason this works is not that any individual tool gets better. It is that the switching cost drops. Four good tools used together tend to outproduce six excellent tools used separately, because the overhead between them is the dominant variable.

Kinds of switching, ranked by cost

Not all switches are equal. A rough ranking:

Free or near-free. Moving between files in the same editor. Switching tabs in the same browser. These cost almost nothing because the mental model is already loaded.

Cheap. Moving between two applications with similar shortcuts and similar modes (editor and terminal, for example, if you use vim-style keys in both). A few seconds to reorient.

Moderate. Moving between two applications with genuinely different affordances but related content. IDE to browser preview. Figma to code. You reload some mental context but not all of it.

Expensive. Moving between two applications with different content, different affordances, and different mental frames. Editor to Slack. Design tool to meeting. Your attention is genuinely elsewhere for several minutes after the return.

Catastrophic. Any switch that requires you to re-establish credentials, re-find a file, or re-read documentation you already read once today. These are the tax-on-top: the switching was bad enough, and now you also have to repeat work.

The practical implication: be strategic about expensive and catastrophic switches, and be generous with cheap ones. Consolidating tabs across browsers is a waste of effort. Consolidating Slack-checking to two defined windows per day is one of the highest-leverage changes a developer can make.

Design principles for a less-shredded day

Some practices that consistently reduce switching cost without requiring new tools:

Batch the same kind of work. All meetings in one window. All code review in one window. All Slack checks in two or three defined moments. Task homogeneity reduces the reorientation tax.

Co-locate related surfaces. If you do frontend work, run your editor, browser, and terminal on the same physical monitor in the same window arrangement every day. Muscle memory across applications is real.

Reduce notifications to near-zero. Every notification is an involuntary switch. Treat the default notification settings of any new tool as adversarial and turn them off.

Pick one AI surface. If you use AI for coding, decide whether it lives inside the editor or outside. Alternating between an in-editor assistant and an out-of-editor chat for the same task doubles the cognitive cost of the AI loop.

Prefer tools that reach into other tools. A visual editor that writes back to your source files is one tool, not two. An AI assistant inside your editor is one tool, not two. The test is whether your hands have to leave one surface to do the related thing.

What to expect

Most of these changes feel marginal in the moment. You turn off some notifications and you don't immediately become 40% more productive. The returns show up over weeks, not minutes. The signal is that your long blocks of time start producing finished work again, and the strange low-grade exhaustion that often accompanies a heavily-switched day starts to lift.

Context switching is not a personality trait or a discipline problem. It is a predictable response to a tool environment that assumes fragmentation. You can choose a different tool environment, or use the one you have more deliberately. Either move is available. Both make a larger difference than the current industry advice — which, suspiciously often, is to try another productivity app.