Reduce Context Switching Overhead | Focus Time & Batching
Minimize context switching cost with WIP limits, focus blocks, and work batching. Each switch loses 15-25 min recovery. GitScrum protects developer flow.
7 min read
Context switching is the hidden tax on developer productivity. Each switch takes 15-25 minutes to regain full focus. A developer handling 5 different topics in a day may lose 2+ hours just to switching. Reducing context switching isn't about working harderβit's about organizing work smarter.
The Context Switching Cost
| Activity | Switch Cost |
|---|---|
| Deep code work β Meeting | 23 minutes |
| Feature A β Feature B | 15 minutes |
| Coding β Slack response | 10 minutes |
| Full context loss | 25+ minutes |
| Staying in flow | 0 minutes |
Understanding the Problem
The Science of Switching
CONTEXT SWITCHING MECHANICS
βββββββββββββββββββββββββββ
WHAT HAPPENS IN YOUR BRAIN:
βββββββββββββββββββββββββββββββββββββ
1. WORKING MEMORY UNLOAD
Current context: File structure, variable names,
bug location, test state, architecture decisions...
All flushed when you switch.
2. ATTENTION RESIDUE
"But what about that bug I was debugging?"
Part of your mind stays on previous task.
Split attention = lower quality on both.
3. CONTEXT RELOAD
New task requires:
βββ Remember what you were doing
βββ Recall relevant code
βββ Rebuild mental model
βββ Find your place
βββ 15-25 minutes to regain depth
THE MATH:
βββββββββββββββββββββββββββββββββββββ
8 hour day
5 context switches (modest estimate)
20 min average recovery each = 100 min lost
That's 1 hour 40 min of pure overhead.
Only 6h 20m of productive time.
HEAVY SWITCHING DAY:
βββββββββββββββββββββββββββββββββββββ
Slack pings, meetings, bugs, PRs, coding
10+ switches = 3+ hours lost
Maybe 4-5 hours of real work capacity
Common Switching Triggers
WHAT CAUSES SWITCHES
ββββββββββββββββββββ
INTERRUPTIONS:
βββββββββββββββββββββββββββββββββββββ
βββ Slack/Teams messages
βββ Email notifications
βββ Tap on shoulder
βββ Phone calls
βββ "Quick question" requests
βββ Each one: 5-25 min recovery
SCHEDULED FRAGMENTATION:
βββββββββββββββββββββββββββββββββββββ
βββ Meeting at 10:30
βββ Another at 2:00
βββ 1:1 at 4:30
βββ Day chopped into small blocks
βββ No time for deep work
SELF-INFLICTED:
βββββββββββββββββββββββββββββββββββββ
βββ Checking Slack "just in case"
βββ Email refresh habit
βββ News sites, Twitter
βββ Starting multiple tasks
βββ Not finishing before switching
PROCESS-DRIVEN:
βββββββββββββββββββββββββββββββββββββ
βββ Multiple projects simultaneously
βββ On-call while feature building
βββ "Everything is urgent" culture
βββ No WIP limits
βββ Systemic not personal problem
Strategies to Reduce
WIP Limits
LIMITING WORK IN PROGRESS
βββββββββββββββββββββββββ
PERSONAL RULE: MAX 2 ITEMS
βββββββββββββββββββββββββββββββββββββ
βββ 1 primary task (focus)
βββ 1 backup task (if blocked)
βββ Not more
BENEFIT:
βββββββββββββββββββββββββββββββββββββ
Less open work = less context to hold
Less context = less to switch between
Less switching = more productivity
IMPLEMENTATION:
βββββββββββββββββββββββββββββββββββββ
In GitScrum:
βββ Personal WIP limit: 2
βββ Column WIP limits
βββ Visual enforcement
βββ Culture of finishing
DISCIPLINE:
βββββββββββββββββββββββββββββββββββββ
Resist urge to "just start" something new
Finish current work first
If blocked, help unblock or take backup task
Don't accumulate partial work
Focus Time Protection
PROTECTING FOCUS TIME
βββββββββββββββββββββ
BLOCKED CALENDAR TIME:
βββββββββββββββββββββββββββββββββββββ
Calendar: 9:00 AM - 12:00 PM "Focus Time"
βββ No meetings scheduled
βββ Notifications silenced
βββ Deep work only
βββ Available for emergencies
βββ Team respects the block
COMMUNICATION BOUNDARIES:
βββββββββββββββββββββββββββββββββββββ
Slack status: π Focus Mode until 12PM
βββ Will respond after focus block
βββ Urgent = call me / page me
βββ Not urgent = it can wait 3 hours
βββ Train team to respect this
NOTIFICATION MANAGEMENT:
βββββββββββββββββββββββββββββββββββββ
During focus time:
βββ Close email
βββ Quit Slack (or DND)
βββ Phone on silent
βββ Block distracting sites
βββ Physical: headphones signal
TEAM AGREEMENT:
βββββββββββββββββββββββββββββββββββββ
"Team focus hours: 9-11 AM
No meetings, no pings, no interruptions.
Emergencies only (production down)."
Batching Similar Work
BATCHING FOR EFFICIENCY
βββββββββββββββββββββββ
CODE REVIEWS:
βββββββββββββββββββββββββββββββββββββ
Instead of: Review PRs as they come
Do: Review batch at 11 AM and 4 PM
βββ 11 AM: All morning PRs together
βββ 4 PM: All afternoon PRs together
βββ Stay in "review mode" once
βββ Fewer switches
MEETINGS:
βββββββββββββββββββββββββββββββββββββ
Instead of: Meetings scattered throughout day
Do: Batch meetings in one block
βββ Morning: Focus time (no meetings)
βββ 1-4 PM: Meeting block
βββ After 4: Focus time or flex
βββ Fewer mode switches
COMMUNICATION:
βββββββββββββββββββββββββββββββββββββ
Instead of: Check Slack every 5 min
Do: Check at specific times
βββ 9 AM: Catch up
βββ 12 PM: Before lunch
βββ 5 PM: End of day
βββ Emergency: Phone call (rare)
βββ Async-first culture
ADMIN WORK:
βββββββββββββββββββββββββββββββββββββ
Instead of: Handle admin throughout day
Do: Friday afternoon admin block
βββ Expenses, time tracking
βββ Email cleanup
βββ Calendar organization
βββ One context, one time
Reducing Meeting Fragmentation
DEFRAGMENTING THE DAY
βββββββββββββββββββββ
BEFORE (Fragmented):
βββββββββββββββββββββββββββββββββββββ
9:00 Start work
9:30 Meeting (30 min)
10:00 Work attempt (shallow, meeting hangover)
11:00 Meeting (1 hr)
12:00 Lunch
1:00 Work (finally!)
2:00 Meeting (30 min)
2:30 Work attempt (barely started)
3:00 "Quick sync" (30 min)
3:30 Work (defeated)
5:00 Home with nothing done
Result: 4 meetings, 0 deep work blocks
AFTER (Batched):
βββββββββββββββββββββββββββββββββββββ
9:00 Focus time (no meetings allowed)
12:00 Lunch
1:00 Meetings batched (2.5 hours)
3:30 Focus time
5:00 End of day
Result: Same 4 meetings, 5.5 hours deep work
HOW TO BATCH:
βββββββββββββββββββββββββββββββββββββ
βββ Block focus time on calendar
βββ Decline meetings in focus blocks
βββ Offer alternative times in meeting block
βββ Consolidate recurring meetings
βββ Cancel/shorten unnecessary meetings
βββ Team agreement on meeting-free times
GitScrum Configuration
Work Organization
GITSCRUM FOR FOCUS
ββββββββββββββββββ
WIP LIMITS:
βββββββββββββββββββββββββββββββββββββ
Settings β Board β WIP limits
βββ Per person: 2 items max
βββ Per column: Team size Γ 1.5
βββ Enforced: Warning or blocking
TASK CLUSTERING:
βββββββββββββββββββββββββββββββββββββ
Group related tasks:
βββ Same feature tasks together
βββ Complete a feature before switching
βββ Use epic/story grouping
βββ Batch similar work types
LABELS FOR BATCHING:
βββββββββββββββββββββββββββββββββββββ
βββ needs-review (batch reviews)
βββ quick-win (batch small tasks)
βββ documentation (batch writing)
βββ Filter and batch
FOCUS VIEW:
βββββββββββββββββββββββββββββββββββββ
My Work β Active Sprint β My Items
βββ Only see my 2 items
βββ No distracting full board
βββ Clear focus
βββ Reduced cognitive load
Best Practices
For Reducing Context Switching
Anti-Patterns
CONTEXT SWITCHING TRAPS:
β Multiple projects simultaneously
β Slack always open and pinging
β Meetings scattered throughout day
β "Quick question" culture
β On-call while feature building
β No WIP limits
β Starting new before finishing old
β Notifications always on