Async-First Communication in a Distributed Team: What We Gave Up and What We Gained
Going async-first is not the same as eliminating meetings. The change requires explicit norms around response time, decision documentation, and escalation paths.

Going async-first is not eliminating meetings — it's making synchronous time expensive and decision artifacts cheap. We shifted a 140-person engineering org across 11 time zones to async-default over eight months. We did not reduce meetings by 80%; we reduced decision latency caused by waiting for meetings by roughly half.
What async-first meant for us (explicit definitions)
Written policy, not vibe:
- Default communication: GitHub issue, RFC doc, or Slack thread with summary block — not DM, not "got a minute?"
- Expected response window: 24 hours for non-urgent; 4 hours during overlap window (09:00–13:00 UTC core hours)
- Meetings require agenda + desired outcome published 24h ahead or they get declined by org norm
- Decisions documented in ADR/RFC within 48h of resolution — meeting notes alone don't count
We kept: weekly team sync (30 min), incident bridges, 1:1s, design reviews for tier-1 launches.
We cut: status roundtables, "alignment" with no decision authority, duplicate staff meetings after reorgs.
What we gave up
Spontaneous context
Hallway (Zoom sidebar) problem-solving was fast. Async replacement: office hours blocks on calendar — optional drop-in, recorded optional. Not the same energy; junior engineers reported feeling slower to unblock for first 6 weeks.
Mitigation: #quick-questions channel with 4-hour SLA from on-call rotating "unblocker" — not perfect, reduced DMs to tech leads.
Social cohesion
Distributed teams already felt this; async-first amplified. We did not pretend Loom videos replace lunch. Funded quarterly in-person for teams with high cross dependency — travel budget line item, not perk.
Immediate consensus on ambiguous calls
Async threads extend disagreement visibility — good for quality, bad for speed on low-stakes choices. We added DACI (Driver, Approver, Contributors, Informed) template in RFC headers. Driver can decide after 48h thread without unanimous love.
Manager "pulse" via meeting cadence
Managers lost passive signal from standup tone. Required investment in written weekly snippets from ICs (3 bullets: done, blocked, next). Felt like overhead until it replaced 3 meetings.
What we gained
Decision archaeology
Six months in, searchable Slack/GitHub history answered "why did we choose Postgres over Dynamo?" without scheduling oral history. Tied directly to RFCs that get read — we enforced RFC template with "Alternatives considered" section mandatory.
Deep work blocks
Calendar heatmaps showed 2.3h/day average meeting load → 1.1h/day post policy (self-reported + calendar scrape sample n=40). p95 focus block length up — engineers cited this most in retro.
Inclusion across time zones
APAC engineers stopped being "meeting afterthoughts." Decisions posted before their morning; comment window extended. Escalation path explicit — if APAC objects after EU decided, reopen not rubber-stamp.
On-call sanity
Fewer "war room that should have been a doc" pages. On-call rotation design added "async incident update every 30 min in channel" — stakeholders read; only responders on bridge.
Norms that failed first time
| Norm | Failure | Fix |
|---|---|---|
| "No meetings Wednesday" | Ignored for exec escalations | Protected blocks only for IC-calendared meetings |
| "Reply in thread" | Thread necromancy after decisions | Lock thread + link ADR when decided |
| "Record all meetings" | Nobody watched recordings | Required 5-line written summary instead |
| "Async means no urgency" | Incidents waited for business hours | PagerDuty unchanged; async rules suspend on SEV1/2 |
Escalation paths (critical)
Async without escalation = paralysis. Our ladder:
- Thread disagreement → Driver summarizes positions at 48h
- Approver decides → ADR published
- Still blocked (cross-team resource) → sync 25-min escalation scheduled by Driver, max 2 per week per team
- SEV incident → full sync, async rules suspended
Escalation meetings are expensive — budget cap prevents meeting creep returning.
Tooling (boring on purpose)
- Notion for RFCs/ADRs (async comments, version history)
- Slack threads with emoji react = ack (not "thanks" reply spam)
- GitHub issues for work tracking — single source of truth
- No async tool procurement spree — policy change, not SaaS shopping
Metrics we watched
- Time from RFC open → decision (target p50 5 days)
- Meeting hours/person/week (calendar API sample)
- "Blocked >3 days" tag count in issue tracker
- Engagement survey: "I know where to find decisions" — 58% → 81% over two quarters
What I'd do next
- Manager training on written feedback — async exposes weak written communication from leads
- Decision SLA by tier — tier-3 choices 48h max wait, tier-1 launches may require sync design review
- Audit meeting invites monthly — recurring meetings need renewal justification
Async-first is a tax on clarity up front and a rebate on rework later. Without escalation paths and decision templates, it's just slow Slack.
Written communication standards
We adopted minimal templates to reduce Slack novel length without killing nuance:
Status snippet (weekly, async):
- Shipped / In progress / Blocked (one line each max)
- Link to PR or RFC, not paragraph description
Decision thread opener:
- Context (2 sentences)
- Options considered (bullets)
- Proposal + by when you need objections
Threads exceeding 40 messages without decision get summarized by Driver or escalated to sync — prevents infinite async.
Training: 2-hour workshop on "writing for engineers who read on phones" — half the org reads Slack mobile primary.
What I'd do next
Manish Bookreader
Electronics enthusiast, Embedded Systems Expert, Linux/Networking programmer, and Software Engineer passionate about AI, electronics, books, and cooking.

