When carving ownership boundaries in a monorepo, why do teams try to align project/module ownership tags with the org's team structure, and what goes wrong when that alignment drifts, per Conway's Law?
answer
- architecture mirrors org chart
- team reorg without re-tagging = drift
- inverse Conway maneuver
- cross-boundary PRs need multi-team sign-off
- ownership as living config
basics
~10 sConway's Law says a system's architecture tends to mirror the communication structure of the org that built it. If module ownership doesn't match team structure, changes constantly need cross-team coordination, slowing everyone down.
solid answer
~50 sConway's Law observes that a system's module boundaries end up mirroring the communication paths of the teams that build it, because coordination is expensive and code crossing a team boundary requires cross-team communication to change safely. Deliberately aligning module ownership tags to actual team structure exploits this: most changes stay within one team's owned modules, so most PRs need only that team's review. When alignment drifts — a reorg splits a team but ownership tags aren't updated, or a module was designed around an old team shape — changes start crossing ownership boundaries constantly, PRs need multiple teams' sign-off for routine work, and velocity drops even though the code itself didn't get harder to write. The fix is treating ownership boundaries as living config to re-tag after reorgs, sometimes via a deliberate 'inverse Conway maneuver.'
go deeper
Has heard of Conway's Law as 'org structure shapes system structure' and can restate the idea.
Recognizes symptoms of drift, like slow cross-team PRs or unclear ownership, when pointed at a scenario.
Proactively re-tags or reorganizes ownership boundaries after a reorg and designs new modules with the current team topology in mind.
Uses the inverse Conway maneuver deliberately — shapes team structure and module boundaries together as one design decision, and owns the org-wide policy for when ownership maps get revisited.
## What Conway's Law says Conway's Law, first stated by programmer Melvin Conway in a 1968 paper, observes that organizations which design systems are constrained to produce designs that are copies of the communication structures of those organizations. ## The mechanism behind it The mechanism behind it is straightforward once stated: building any nontrivial piece of software that spans more than one person requires coordination. - Coordination between two people who **sit on the same team**, share a manager, and talk daily is **cheap**. - Coordination **across a team boundary** — different priorities, a Slack message that waits a day for a reply, a meeting that has to be scheduled — is **expensive**. Engineers, often unconsciously, route around expensive coordination by drawing module and API boundaries so that most of their day-to-day changes stay within the cheap-communication zone, i.e., within their own team's owned code. Do that enough times across an organization and the resulting system's module graph ends up shaped like the org chart, not because anyone designed it top-down, but because it's the path of least resistance for every individual change. ## How it plays out in a monorepo In a monorepo specifically, this plays out through **ownership tags**: when a project's scope tag or CODEOWNERS entry names a team, and that team's actual composition and remit line up with the module's real boundaries, most pull requests touching that module only ever need approval from — and coordination with — people already working toward the same goals. This is the state teams aim for when they say they want ownership aligned with the org: not an aesthetic preference, but an attempt to make the cheap-coordination path and the correct-review path the same path. ## When the two drift apart The trouble starts when the two drift apart, which happens constantly in a growing organization: a team gets split into two (checkout becomes cart and payments), a team merges into a larger group, or a module's original owning team is disbanded and its responsibilities are informally redistributed without anyone updating the ownership metadata to match. Once that drift exists, changes that used to stay within one team's cheap-coordination zone now routinely need approval from a different team than the one actually doing the day-to-day work. Concretely this shows up as: - PRs needing sign-off from a CODEOWNERS entry mapping to a team the author doesn't work with day-to-day; - a rising rate of PRs requiring multiple different owning teams' approval because the module boundary now straddles two teams' actual responsibilities; - a general sense that everything requires talking to another team now, even though code complexity hasn't changed. The friction is organizational, not technical, and it's easy to misdiagnose as a codebase problem when it's really a Conway's-Law misalignment problem. ## The inverse Conway maneuver The deliberate fix is called the 'inverse Conway maneuver': instead of letting architecture passively emerge from whatever the org chart happens to be, an organization designs the target module or service boundaries first, based on the business domains it wants to be independently changeable, and then intentionally shapes team structure to match those boundaries, so Conway's Law works for the intended architecture instead of against it. This is the reasoning behind many 'align teams to domain boundaries' reorgs in companies practicing domain-driven design or platform-team models: the org chart is treated as a lever for shaping the system, not just an HR artifact. ## The limits of the alignment goal It's worth being explicit about the limits of this alignment goal: perfect one-to-one correspondence between teams and modules is not always desirable or even achievable. Shared or platform code — authentication libraries, a design system, core infrastructure tooling — is intentionally owned by one team but consumed by many, and forcing every consumer to fork or privately own a copy just to preserve alignment usually trades one problem, occasional cross-team coordination on a well-scoped shared module, for a worse one: duplicated, divergent implementations with no single source of truth. The realistic goal is that most day-to-day change stays within team boundaries, with a small number of deliberately shared, well-governed exceptions — not that every dependency edge in the module graph maps exactly onto an org-chart edge.
- What is the inverse Conway maneuver?Deliberately designing the target architecture first, then reorganizing teams to match it, so the org's natural communication patterns reinforce the desired module boundaries instead of fighting them. It flips the usual passive emergence of architecture into an intentional design lever.
- How would you detect that ownership tags have drifted from real team structure?Look for a rising rate of PRs requiring approval from multiple different CODEOWNERS entries, or modules whose commit history shows steady contributions from many teams with no clear single owner actually driving the code.
- Is perfect one-to-one alignment between teams and modules always the goal?No — shared or platform code is intentionally owned by one team but used by many, and forcing every consumer to own a private copy just for alignment usually creates worse duplication and drift than a well-scoped shared module with clear review gates.
Like a building whose floor plan was designed for the old department layout — after a reorg moves people around, everyone's now walking through someone else's office just to reach their own team, until the walls get rebuilt to match the new org chart.
saying these in an interview costs you the question
- Treats Conway's Law as a curiosity with no actionable consequence for ownership design
- Assumes ownership tags, once set at repo creation, never need revisiting
- Conflates 'aligning ownership to teams' with 'every team must own 100% disjoint code, no sharing ever'
- Can't name a concrete symptom of misalignment, like multi-team-approval PRs or cross-team blocking dependencies