skip to content

What is Conway's Law, and why does it matter when a company splits a monolith into microservices?

level: juniorimportance: must knowfreq 75%

answer

  1. 1968 Melvin Conway paper
  2. org chart = architecture
  3. cheap interfaces at team seams
  4. distributed monolith failure mode
  5. Amazon two-pizza teams

basics

~20 s

Conway's Law says the software you build ends up shaped like the teams that built it. If teams don't talk much, the code splits along those same lines. So when moving to microservices, you have to think about team structure, not just code structure.

solid answer

~40 s

Conway's Law (Melvin Conway, 1968) states that a system's architecture mirrors the communication structure of the organization that designed it. In practice, module boundaries tend to line up with team boundaries, because interfaces are cheaper to formalize across teams (an API contract) than within one team (informal chat). For microservices this matters because a 'clean' service diagram drawn on a whiteboard will not stay clean if the teams don't match it: a service that spans two teams accumulates synchronous calls, shared tables, and coordination overhead as those teams negotiate changes. A service owned end-to-end by one team can iterate and deploy independently. So service boundaries are really an organizational design decision as much as a technical one, and ignoring that produces architecture that fights the org chart.

go deeper

for a junior

Should state the law correctly (architecture mirrors org communication structure) and give one intuitive reason team boundaries become code boundaries. Doesn't need historical detail or maneuver terminology.

for a middle

Should connect the law directly to microservices migrations: explain why a service owned by two teams tends to degrade, and recognize the 'distributed monolith' failure mode by name or description.

for a senior

Should discuss the inverse Conway maneuver as a deliberate lever, weigh the cost of reorganizing teams against the cost of ignoring the law, and give a concrete production symptom (shared DB, chatty cross-service calls).

for a principal

Should treat team topology as a first-class architectural decision alongside domain modeling, discuss when reorganizing is NOT worth it (e.g., a stable, rarely-changed service doesn't need dedicated team realignment), and reference real precedent like Amazon's team model.

## The mechanism Conway's Law comes from a 1968 paper by computer scientist Melvin Conway, which observed that 'organizations which design systems...are constrained to produce designs which are copies of the communication structures of these organizations.' The mechanism is not mystical: software has to be split into modules, and **each module boundary is a place where two pieces of code must agree on an interface**. Formalizing an interface (a REST contract, an event schema, a function signature) is **expensive** — it requires explicit negotiation, versioning discipline, and documentation. People take that expensive step at the edges of frequent, informal communication: - **Within a team**, changes get negotiated in a stand-up or a Slack thread and code can stay tangled without anyone noticing, because the humans compensate for the mess with conversation. - **Across a team boundary**, that informal compensation doesn't happen at the same bandwidth, so the code is forced into a cleaner, more contractual shape. The upshot: the seams in your software will appear wherever the seams in your organization's communication are, whether you planned it that way or not. ## What it does to a microservices migration Why this matters for microservices specifically: a microservices migration is usually sold as a purely technical exercise — 'split the monolith along bounded contexts' — but bounded contexts drawn on paper only stay stable if a team's day-to-day ownership matches them. If Team A and Team B jointly own the 'Orders' service, every change to `Orders` requires cross-team coordination: - PR reviews from both sides - a shared deploy calendar - negotiation over the data model Over months, that friction produces exactly the symptoms microservices were supposed to eliminate: - synchronous cross-service calls that ought to have stayed in-process - a shared schema nobody wants to migrate because it breaks the other team - features that ship slower than they did in the monolith In other words, Conway's Law explains why 'we split the code into 20 services but our team structure didn't change' migrations routinely produce a **distributed monolith**: tightly coupled deployment and change patterns, just now with network calls between the pieces instead of function calls. ## The trade-off The trade-off is between architectural ambition and organizational cost. | Boundaries follow… | What that buys, and what it costs | |---|---| | the 'textbook-correct' domain model | Drawing service boundaries there is cheap on a whiteboard but expensive in practice if it requires teams to reorganize, retrain, or take on new operational responsibilities — see the **'inverse Conway maneuver'**, the deliberate practice of restructuring teams first so the architecture Conway's Law produces is the one you want. | | the existing team structure | Conversely, drawing service boundaries there is organizationally cheap but can bake in whatever team boundaries already exist for historical, not domain, reasons — you get services that map to reporting lines rather than to actual business capabilities, which is its own long-term liability. | ## Failure modes in production Failure modes show up concretely in production. 1. **The shared-ownership service**, the most common: two teams both have write access to one service's repo, both deploy it, and neither treats it as fully theirs on-call. Incidents in that service get slow triage ('is this our bug or theirs?'), and the codebase accumulates competing conventions because there's no single team enforcing consistency. 2. **Chatty cross-service calls**, a second failure mode, recreate a monolith's function-call latency profile over the network: because two teams working on nominally 'separate' services actually talk constantly, their services end up needing synchronous, fine-grained calls to satisfy that tight collaboration, producing cascading latency and availability coupling. 3. **The 'org chart service'**, a third: a service exists because a team exists, not because the business domain calls for a boundary there, and it gets awkwardly stitched into workflows that cross domains. ## The lesson in practice A concrete illustration: Amazon's shift to what became known as **'two-pizza teams'** (small, autonomous teams each owning a service end-to-end, publicized around the mid-2000s) is frequently cited as a deliberate application of Conway's Law — restructure the organization into small, loosely coupled teams first, and the resulting software architecture (what became the AWS service ecosystem) naturally inherited that loose coupling. The lesson generalizes: if you want a target architecture, the fastest lever is often not a better architecture diagram, but changing who talks to whom, how often, and across which boundaries.

  • If a company reorganizes its teams to match a target microservices architecture, what is that practice called?
    That's the inverse Conway maneuver — instead of letting the architecture passively drift to match existing team communication patterns, the organization deliberately restructures teams first (splitting or merging them, redrawing ownership) so that Conway's Law then produces the desired service boundaries as a side effect. It flips the causality from 'architecture follows org chart' to 'org chart is designed to produce the desired architecture.'
  • What's a concrete symptom in a codebase that tells you Conway's Law is currently working against your architecture?
    A service that requires sign-off or deployment coordination from more than one team is the clearest tell, along with a shared database table two different teams both write to. You'll also see this in code review latency: cross-team PRs on a jointly-owned service sit far longer than single-team PRs, because informal daily communication that would normally smooth over disagreements doesn't reach across the team boundary.
  • Does Conway's Law only apply going from org to architecture, or can it run the other way?
    It genuinely runs both ways in practice, which is exactly what the inverse Conway maneuver exploits: architecture also shapes communication, because engineers naturally talk more with people who own adjacent, tightly-coupled code. If you draw service boundaries first and assign teams to match them, the resulting team communication pattern will tend to reinforce (not fight) that boundary over time.

It's like a company's internal memos: if two departments rarely email each other, whatever they do end up agreeing on gets written down as a formal, careful document; two people at the same desk just shout across the room and never write anything down — so the 'formality boundary' in the paperwork mirrors the seating chart, the same way software interfaces mirror team boundaries.

saying these in an interview costs you the question

  • Says microservices boundaries are purely a technical/domain-modeling decision with no organizational component
  • Can't explain why cross-team-owned services tend to get messy
  • Confuses Conway's Law with 'design your architecture to look like a diagram of microservices'
  • Has never heard of the inverse Conway maneuver when discussing this topic
  • Assumes reorganizing teams has no cost, treats it as a free lever

context