We just crossed 80 engineers at our EdTech startup, and I need to share something I got wrong that nearly cost us our culture.
When I joined as VP Engineering 18 months ago, we had 25 engineers and too many meetings. Calendar tetris was killing productivity. I’d seen this problem at Google and Slack - the answer seemed obvious: go async-first. I read all the playbooks, brought in the consultants, and we went hard.
The wins were real. Within 6 months:
- 50% reduction in standing meetings
- Documentation quality skyrocketed
- Engineers reported 3+ hours more focused work daily
- Distributed hiring became possible (we’re now across 6 timezones)
I was feeling pretty good about myself. Then the cracks started showing.
Our junior engineers were struggling. Decision velocity slowed to a crawl. A critical architectural decision about our database sharding strategy sat in an async RFC thread for THREE WEEKS. People were adding comments but no one was driving to closure. Meanwhile, our competitor shipped a similar feature.
The breaking point was our Q3 engagement survey. Team cohesion scores dropped 40%. One senior engineer wrote: “I feel like I’m working alone with 79 strangers.”
I had optimized for efficiency and lost the human element.
Here’s what I learned: Async-first doesn’t mean async-only. We needed what I now call “Synchronous Moments That Matter” - a framework for when you override the async default.
Three categories where sync is non-negotiable:
-
Crisis Response - Production incidents, security issues, anything time-critical. Spinning up a Zoom is faster than a Slack thread when the site is down.
-
Complex Debates - Technical decisions with significant trade-offs need live discussion. Async threads spiral into misunderstanding. We now do: async RFC for context, 60-min sync debate with decision-makers, async approval process.
-
Team Building - This was my biggest blind spot. You can’t build trust asynchronously. We now protect 2 hours per week for “low-agenda collaboration” - demo days, retros, pair programming sessions, even just shooting the shit.
Everything else stays async. Code reviews, status updates, most planning, documentation. But these three categories get synchronous time, guilt-free.
We’re three months into this hybrid model. Team cohesion scores recovered. Decision velocity is back up. And ironically, we’re now at 45% fewer meetings than when we started - because we’re more intentional about which ones matter.
My question for this community: How do you balance async efficiency with the human connection that makes great teams? Where do you draw the line between “this can be async” and “we need to get in a room”?
I’m still figuring this out. Would love to hear what’s worked for you, and what’s failed spectacularly.