Skip to main content
← BlogProductivityAgency6 July 202612 min read

The Context-Switching Trap: How B2B Agencies Shield Developers and Protect Care Plan Margins

For web and WordPress agencies, monthly care plans are meant to be the steady, predictable revenue that smooths out the feast-and-famine of project work. Yet plenty of agency owners quietly notice the same pattern: the work gets done, clients stay happy, and the margin still isn't there. It's rarely one big scope-creep disaster. More often it's death by a thousand five-minute favours. We'll call it the context-switching tax - not a term you'll find in a journal, just a useful shorthand for what's going on.

Context Switching Trap blog thumbnail featuring a dashboard graphic illustrating multi-tasking overhead, attention fragmentation, and agency margins.

Written by Artur BurkaloFor over a decade, Artur has worked with agencies, run his own agency, and developed WordPress themes and plugins, including Destiny Elements.

Posted 6 July 2026

What is the context-switching trap?

When a client signs up for a $150 or $300 monthly maintenance plan, they think they're paying for uptime, basic security, and a safety net for small edits. From the agency's side, those edits look like they should take five minutes - swap a header logo, update the footer copyright year, add a redirect.

The five minutes inside WordPress is rarely the whole cost, though. On top of it sits stopping whatever the developer was doing, opening a different codebase, re-loading the mental model for it, making the edit, and finding their way back to where they were. How big that round trip actually is depends on the task and how deep the developer was into it - a same-page CSS tweak costs less than pulling someone out of debugging a race condition - but it's rarely just the five minutes on the clock, and that gap is the bit that never makes it onto an invoice.

The cognitive science of attention fragmentation

The recovery time after an interruption varies by task and by study, but the direction is consistent across all of them. In one of the most-cited pieces of research on the subject, Dr Gloria Mark and colleagues at UC Irvine shadowed office workers for a week and found it took an average of 23 minutes and 15 seconds to get back to the original task after an interruption - and usually only after two or three other tasks in between, not immediately. Mark's team also found something worth sitting with: people often completed the interrupted work in less overall time, with no measurable drop in quality, apparently by working faster to compensate. The catch was self-reported stress, frustration, and effort were all higher. The work got done. It just cost more to get there.

Part of why the brain doesn't switch cleanly is what Dr Sophie Leroy, then at the University of Washington, named "attention residue."

"When people switch from Task A to Task B, cognitive residue from Task A remains active, making it difficult to fully dedicate attention to Task B. This residue impairs performance, leading to elevated error rates and slower execution times."— Dr Sophie Leroy

Software developers arguably have it worse than the average knowledge worker. Tom DeMarco and Timothy Lister made this case back in the 1980s in Peopleware, their long-running study of programmer productivity: getting into what Mihaly Csikszentmihalyi called "flow" takes a slow, roughly 15-minute descent into the problem, during which you're unusually sensitive to noise and interruption. Break that immersion once, and it's another 15 minutes to get back into it - on top of whatever the interruption itself cost. Holding a plugin conflict, a database schema, and three levels of template inheritance in your head is not something you can pause and resume like a video.

Juggling several clients compounds this. Gerald Weinberg's Quality Software Management: Systems Thinking includes a widely quoted table on exactly this: split a developer across two projects and each one gets roughly 40% of their time, not 50%, because 20% evaporates into switching between them. Split them across five and each project gets about 5%, with three-quarters of the week lost to overhead. Weinberg's numbers come from his own consulting experience rather than a controlled study, so treat them as a rule of thumb rather than a law of physics - but agencies who track this closely tend to find the shape of the curve, if not the exact figures, holds up.

Gerald Weinberg's Multitasking Model: Project Load vs. Cognitive Loss

Juggling 1 Project (100% focus each)0% waste
100% Focus
Juggling 2 Projects (40% focus each)20% waste
80% Focus
20% Loss
Juggling 3 Projects (20% focus each)40% waste
60% Focus
40% Loss
Juggling 4 Projects (10% focus each)60% waste
40% Focus
60% Loss
Juggling 5 Projects (5% focus each)75% waste
25% Focus
75% Loss
Time spent on actual developmentCognitive waste (context switching overhead)

Source: Gerald Weinberg, Quality Software Management: Systems Thinking.

The financial anatomy of a "quick question"

To see how this actually hits the numbers, take a mid-level developer on an $80,000 salary. That figure is not what they cost an agency, though. The Bureau of Labor Statistics' Employer Costs for Employee Compensation survey has wages and salaries making up around 70% of what a private-sector employer actually pays out, with the rest going on benefits: insurance, retirement contributions, paid leave, and payroll taxes. Scale an $80,000 salary up on that basis and the fully loaded cost lands somewhere around $110,000 a year - call it $55 an hour, or roughly $0.90 a minute.

Now map that against a genuinely ordinary client request, like adding a tracking pixel to a page:

The Timeline of a "5-Minute" Client Interruption

Phase 1

Deep Work Focus

Developer is in "the zone" coding a custom feature or template.

Active Focus
Phase 2

The "Quick Edit" Request

Email or Slack ping arrives. Dev stops focus, reads, applies a small CSS or plugin tweak.

~5 mins work
Phase 3

Cognitive Recovery

Dev attempts to return to the core task. Relies on cognitive load to remember variables, state, and goals.

~23 mins recovery
Total Productive Capacity Lost: 28 Minutes for a single 5-minute task.

Based on interruption recovery benchmarks from Dr Gloria Mark's UC Irvine study.

Add it up and the "five-minute" task actually looks like this:

  • Task duration: 5 minutes
  • Cognitive recovery: ~23 minutes
  • Total capacity lost: ~28 minutes
  • Real labour cost: 28 minutes × $0.90 ≈ $25

Four of these "quick edits" in a month and the labour cost of the switching alone is around $100 - on a care plan that might only bill $150. That's before the project manager's time reading and relaying the request, or the licences for backups, uptime monitoring, and security scanning behind every site on the plan. None of that is fixed cost you can't do anything about - it's exactly the kind of thing that can quickly erode margin on a plan that looked comfortably profitable on paper.

How traditional communication channels inflate the trap

Most of this comes down to how clients are allowed to get in touch. Unstructured, real-time channels make the trap worse in three specific ways:

  • 1. The Slack trap

    A shared Slack channel invites conversational, one-line requests. Rather than saving up a list, clients fire off messages as they think of them through the day, which keeps the developer permanently on call.

  • 2. Unstructured email threads

    Email has no built-in structure. "The login page looks broken on mobile" means the developer has to stop, reply asking for a screenshot and browser details, then wait - and switch contexts a second time when the answer finally lands.

  • 3. Manual invoicing for extras

    When a request falls outside the plan, someone has to notice, raise a one-off invoice, and chase it. That takes admin time most agencies don't bill for - so plenty of small out-of-scope jobs just get absorbed instead, quietly eating into the same margin.

The shield: Building high-margin client operations

None of this means firing clients or turning down small requests. It means putting something between client communication and developer focus, so one doesn't constantly interrupt the other. In practice that comes down to four things.

1. Structured ticket routing

Stop letting clients message developers directly. Route every request through a client portal with a proper form - page URL, priority, screenshots - instead of a chat message. From there, send it on to whatever your developers actually use day to day, whether that's Linear, Jira, GitHub, or one of the other trackers.

Worth being honest about the limits here: this is one-directional. The ticket carries the request and a link back to it, but closing the ticket in Linear doesn't close it in the portal - someone still marks it done on your side. What it does fix is the constant interruption: a request lands in a backlog instead of a notification, and developers can clear it in a batch - once in the morning, once in the afternoon - rather than the moment it arrives.

2. Automated updates with a real rollback

Updating plugins, themes, and core by hand doesn't scale, but automating it without a safety net just moves the risk from "annoying" to "site down at 2am." It's worth automating properly rather than not at all: Patchstack's report on 2025 WordPress vulnerability data puts 91% of new vulnerabilities in the plugin layer, with a weighted median time to first exploit of five hours, and roughly half of high-impact vulnerabilities exploited within the first 24 hours of disclosure. Take that report at face value and a weekly manual update round is simply too slow to matter for the vulnerabilities that count.

The fix is automation that takes a backup first, applies updates off-peak, checks the site actually still loads afterwards, and rolls back on its own if it doesn't - so a developer only gets pulled in when something genuinely needs a human.

3. Make the work visible

A lot of "just checking in" messages exist because the agency's work is invisible by default - the "black box" problem we've written about before. A portal that shows uptime, site speed, security scan results, and a history of completed requests answers most of those questions before they're asked. It won't get check-ins to zero, but it changes "is anything actually happening?" into something the client can see for themselves.

4. Make invoices easier to pay, not just easier to send

Raising an invoice for out-of-scope work still takes someone's time, and that alone is why smaller jobs often get quietly absorbed instead of billed. Letting clients pay outstanding invoices online from their own portal, rather than waiting on a bank transfer, doesn't remove that admin - it just clears one friction point (chasing payment) out of the way once the invoice already exists.

Summary checklist: shielding your developers

  • Route requests through a structured portal form, not open Slack or email threads.
  • Batch client edits to a couple of set times a day to protect blocks of deep focus.
  • Automate core and plugin updates with a real, tested rollback - not just a cron job.
  • Give clients a dashboard for uptime, security, and completed work, so they stop needing to ask.
  • Let clients pay outstanding invoices online instead of chasing bank transfers.

Protect your developer margins

Shield your team with Destiny Manage

Destiny Manage brings together white-labelled client portals, crash-safe WordPress automation, SLA tracking, and direct developer ticket exports - everything you need to run higher-margin agency operations.

Get started for free

Cookie Consent Preferences

We use cookies to enhance your browsing experience, serve personalized content, and analyze our traffic. By clicking "Accept All", you consent to our use of all cookies. You can manage your preferences or read our Cookie Policy for details.