I’ve been thinking a lot about repository architecture lately. At my financial services company, we’re at that uncomfortable in-between stage—40+ engineers, 8 product teams, microservices architecture, and a multirepo structure that’s starting to show cracks.
Here’s what keeps me up at night: Google, Meta, Uber, and Airbnb all consolidated their codebases into monorepos. These aren’t small companies experimenting—they’re operating at massive scale. Google famously runs most of their codebase in a single repository, enabling atomic commits across services and simplifying dependency management. Meta’s approach allows developers to access most of the company’s codebase, fostering productivity by letting teams resolve dependency issues independently.
But here’s the uncomfortable truth: they also invested heavily in custom tooling. Google built Bazel. These aren’t off-the-shelf solutions most of us can just adopt.
The Coordination Tax is Real
In our current multirepo setup, I see the friction daily:
-
Cross-service refactors become multi-week projects. Last quarter, updating our auth library required coordinating PRs across 12 repositories. The actual code change? Maybe 2 hours of work. The coordination, testing, and staged rollout? Three weeks.
-
Shared libraries create versioning hell. Team A updates the logging library, breaking Team B’s service in staging. We only discover this when both changes hit the integration environment.
-
Duplicate work everywhere. Three teams independently implemented the same rate-limiting logic because discoverability across repos is terrible.
Monorepos promise to eliminate this friction. Atomic commits mean you can update a shared library and all its consumers in a single PR. Code visibility means you discover existing solutions instead of rebuilding them. Large-scale refactoring becomes possible because you have access to the entire codebase.
But Team Autonomy Matters Too
Yet I also see the value in what we have:
-
Teams ship independently. No one’s blocked by someone else’s broken build. Each team controls their release cadence and deployment process.
-
Clear ownership boundaries. When the repo is yours, responsibility is unambiguous. No confusion about who owns which service.
-
Freedom in technical choices. Teams can pick the testing framework or deployment approach that works for them without requiring organization-wide consensus.
The research I’ve read frames this as a fundamental tradeoff: monorepos optimize for integration and coordination, while multirepos optimize for independence and autonomy.
The Question I’m Wrestling With
At what scale does the coordination tax outweigh the value of team independence?
I think the answer depends on a few factors:
-
How coupled are your teams? If teams frequently make cross-service changes or share significant code, monorepos start to make sense. If teams are truly independent, multirepos might be fine.
-
How aligned are your release cycles? If you ship features that span multiple services, coordinating releases across repos is painful. If teams ship independently, multirepos reduce blast radius.
-
What’s your tooling investment appetite? Monorepos at scale require serious tooling—build caching, selective CI, dependency graphs. Are you ready to build or buy that infrastructure?
-
What’s your team culture around ownership? Some teams thrive with clear repo boundaries. Others collaborate better with full code visibility.
I’ve seen the hybrid approach work well: keep core platform services in a monorepo, while product teams maintain separate repos. This balances integration where it matters with autonomy where it helps.
What’s Your Experience?
For those of you who’ve made this transition—either direction—what was the tipping point?
- What scale or team structure made the current approach unsustainable?
- How did you handle the tooling investment for monorepos (or the coordination overhead for multirepos)?
- Did the benefits you expected actually materialize, or did new problems emerge?
I’d especially love to hear from folks who’ve worked at companies that consolidated to monorepos. Was it worth the migration pain? How long before you saw real productivity gains?
We’re not quite at the breaking point yet, but I can feel it coming. I want to make this decision based on evidence and experience, not just following what the big tech companies do.