Async-First Engineering: How to Run Dev Teams Across Time Zones Without Chaos
A practical playbook for building and scaling distributed engineering teams. Written culture, decision logs, async code review, and the myth of the synchronous overlap window.
Async-First Engineering: How to Run Dev Teams Across Time Zones Without Chaos
I've watched too many founders assume that building a distributed engineering team requires everyone to live on the same coast. They optimize for a 10am-3pm UTC overlap window, hire accordingly, and then wonder why their team is fragmented, context-switching constantly, and burning out.
The real issue isn't time zones. It's that they're trying to run an async team using synchronous processes.
I've led teams across San Francisco, London, Mumbai, and Sydney. When you stop pretending that 9am standup calls are an acceptable substitute for intentional communication design, that's when async-first engineering actually works.
The Stakes: Async Isn't About Flexibility, It's About Velocity
Let's be direct: distributed teams move faster when they're truly async-first. Not because remote workers are more productive (that's context-dependent), but because you eliminate the communication bottleneck.
In synchronous teams, decisions wait for meetings. Code reviews wait for live feedback. Onboarding stalls while a senior engineer finds a 30-minute block. You end up with a team where 60% of the calendar is meetings and 40% is deep work—if you're lucky.
In async-first teams, blocking is rare. Decision documents circulate while people sleep. Code reviews happen across shifts. New engineers unblock themselves by reading decision logs instead of scheduling an ask-the-founder call.
But—and this is the part every founder misses—async doesn't mean isolated. It means intentional. You trade synchronous availability for written clarity. That's the deal.
If you get this wrong, you end up with chaos: decisions made without context, code reviews that spark 48-hour email threads, senior engineers who feel obligated to stay up late for meetings, and junior engineers who never actually get mentored because there's no documented culture to inherit.
The Framework: Three Pillars of Async Engineering
I operate async teams around three non-negotiable practices:
1. Written Culture & Decision Logs
Your engineering culture doesn't live in onboarding presentations or town halls. It lives in documents.
I mean: explicit write-ups of how you make decisions, why you chose your tech stack, what "done" means for a PR, how you handle production incidents, what happens when two senior engineers disagree about architecture.
This is not bureaucracy. This is inheritance.
When a new engineer joins, instead of spending their first month in meetings learning why your system works the way it does, they read a living document. When a disagreement surfaces, instead of rehashing old arguments, someone links to the decision that settled it.
I typically maintain three core documents:
- Engineering Operating Manual: How we code, review, deploy, and debug. What we value: shipping speed? Test coverage? Documentation? Make it explicit.
- Architecture Decision Log (ADL): Why we chose Next.js. Why we don't have a monorepo. Why we wrote that service in Rust instead of Node. One page per decision, including the alternatives considered.
- Incident Response Runbook: What happens after production breaks. Who gets paged. What blamelessness actually means. How we communicate to customers.
These documents aren't perfect. They're living. You update them as your team and understanding evolve.
2. Async Code Review With Clear Expectations
Code review in async teams can't be a gate. It has to be a teaching moment.
I define clear reviewer expectations upfront:
- What I'm reviewing for: Does this pass tests? Does it follow the architectural patterns we've documented? Is it understandable to someone new?
- Timeline: I review pull requests within 24 hours, not within 2 hours. That's the promise.
- Comment style: I explain why we shouldn't do something, not just flag it. "This pattern will make it harder for new engineers to understand the request lifecycle" beats "use hooks instead."
And I define pull request expectations for authors:
- Context is your responsibility: Link to the task. Explain what changed and why. A 500-line PR with no description gets pushed back.
- Test coverage: If this is a change to user-facing behavior, I expect tests that prove it works.
- Self-review first: Read your own PR before submitting. If you wouldn't understand it in six months, rewrite it now.
The magic happens when you make code review less about approval and more about raising the bar. Your best engineers teach through reviews. Async-first teams use PRs as a written record of how they solve problems.
3. Scheduled Overlap for High-Bandwidth Work
Here's what catches people off guard: async-first doesn't mean never meeting.
It means being ruthless about which meetings actually require real-time presence.
I create one 1-hour weekly window where the team overlaps. Not for standup (write that async in Slack). For design reviews, hard architectural decisions, and mentoring sessions. These are the conversations where talking beats email.
If your San Francisco team works 9am-6pm PT and your London team works 9am-6pm GMT, that overlap is 1pm-5pm PT = 9pm-1am GMT. You rotate. You don't make anyone stay up for standup.
Everything else is async. Planning? Async. Spec review? Async. Post-mortems? Usually async (the incident response was synchronous; the writeup is async).
Concrete Example: How Async Saved a 12-Person Team
I joined a Series A SaaS company with engineers in California, Portugal, and Singapore. They had a standing 7am PT daily standup (4pm Portugal, 11pm Singapore). People were burning out. Code reviews were languishing. Juniors weren't learning.
We implemented:
-
Async daily standup in Slack: Everyone posts by 10am their local time. Not a parade of "I did X, today I'll do Y." Structured around blockers: "I'm stuck on auth token refresh; need input from @Sarah."
-
A shared decision log: Three months in, they'd had the same conversation about whether to migrate from REST to GraphQL four separate times. I documented the previous decision, the tradeoffs, and why we'd revisit it in Q3. Next time someone asked, the answer was already there.
-
Async PR review with a 24-hour SLA: Friday code reviews happened Saturday morning Singapore time. Still fresh, still quick.
-
One weekly 30-minute design call: Tuesdays, 2pm PT. The Portugal and Singapore teams rotated. Not everyone had to be there; we recorded it.
Five weeks in, the number of open PRs dropped 40%. Senior engineers stopped working late. Onboarding went from "shadow someone for a month" to "read these docs, try a small PR, we'll review and teach."
The code quality got better. The team felt less fragmented.
The Counterpoint: When Async Breaks Down
Async-first works great until you're making a decision that affects the entire quarter's roadmap and three people have conflicting opinions.
Here's the truth: sometimes you need a meeting.
The mistake is calling a meeting when you should write a document, or writing a document when you need a meeting. The solution is knowing which is which.
Write docs for:
- Information distribution (architecture decisions, runbooks, how we do code review)
- Feedback collection (design review, RFCs, hiring calibration)
- Decisions that benefit from async input (people think better when they sleep)
Meet for:
- Disagreements that require real-time resolution (especially if they're emotional)
- Building trust with new team members
- Career conversations and mentorship
- Incident response in progress
And here's what I've learned the hard way: some founders and CTOs love async because it lets them avoid managing. They hide behind documents instead of having hard conversations. Async is not a substitute for leadership. It's a force multiplier for leaders who know how to communicate.
Where I Come In
I help fractional CTO roles scale teams across time zones without sacrificing engineering velocity or culture. If you're hiring distributed talent and not sure how to keep the team cohesive, or if your current async processes are creating miscommunication instead of clarity, let's talk. I'll help you build the written culture and decision-making frameworks that actually work.
Action Checklist
- Audit your current meetings. How many require real-time presence? How many could be async + recording?
- Draft your first Engineering Operating Manual. One page. The essentials only.
- Establish a code review SLA (e.g., 24 hours) and share it with the team.
- Create an Architecture Decision Log template and document your three most-asked-about decisions.
- Schedule one weekly overlap window for high-bandwidth work. Rotate if necessary.
- Set async standup norms: blockers only, no status parades.
Related Reading
Let's discuss your team's async strategy
Get in touch →