Leer en español · Lire en français · Auf Deutsch lesen
Section 3.7 of 3.8 · Intermediate · 22 min read
Conway's law and the shape of organisations
Video lesson
5 min · narrated, with captionsListen only (audio)
Read the transcript
When you design a system, you're also designing who needs to talk to whom. In this lesson you'll learn Conway's law, the evidence for it, the arithmetic of team size, and how architects use the law on purpose.
Imagine four groups of builders, each building one part of a house. They never talk to each other. You'll get four parts that join awkwardly, with the joins exactly where the groups met. Software works the same way. The parts of a system, and the connections between them, tend to copy which teams talk to each other. And the reverse is just as true.
In 1968, the magazine Datamation published an article by Melvin Conway called How Do Committees Invent? Its conclusion is now known as Conway's law: organisations which design systems are constrained to produce designs which copy their communication structures. The reasoning is almost mechanical. Two parts of a system connect through an interface, and an interface exists only where the people designing those parts negotiated it. So the system's structure mirrors the organisation's. His example: eight people were to write two compilers. Five were assigned to COBOL and three to ALGOL. The COBOL compiler ran in five phases, and the ALGOL compiler in three.
Here's how it looks today. The checkout and catalogue teams talk to each other, but every schema change goes through a shared database team. So the system they build couples through a shared database. Both services read and write shared tables. Nobody planned that. It's what happens when the only joins in a product are where the people building it actually talked.
Is it true? In 2012, MacCormack, Baldwin and Rusnak compared matched pairs of products, one from a tightly coupled firm, one from a loosely coupled open source community. In every pair, the loosely coupled organisation's product was more modular. A Microsoft Research study of Windows Vista found that facts about the organisation behind each part predicted which parts were failure-prone better than conventional code metrics did. But a 2016 review of a hundred and forty two studies found mirroring common rather than universal. Studies of open projects often don't support it, perhaps because shared tools and open discussion let people coordinate anyway. It's a strong tendency, not a law of physics.
Team size matters too. A group of n people has n times n minus one, divided by two, possible communication paths. Three people have three. Five people have ten. And eight people have twenty eight. The paths grow roughly with the square of the group: double the team and you quadruple the paths.
A food delivery company's ordering product is built by one team of eight: twenty eight paths. It plans to grow to twenty four engineers. As one team of twenty four, that's two hundred and seventy six paths: about ten times as many, for three times the people. As three teams of eight, there are eighty four paths inside teams. If each team has one point of contact with each other team, that adds just three. About eighty seven in all. But if ownership is unclear and every change needs every engineer, you're back to two hundred and seventy six. So splitting people into teams only helps if the system is split to match, so that most changes need only one team. The architecture is what makes the smaller graph possible.
If systems mirror organisations, you can use that deliberately. The inverse Conway manoeuvre shapes teams for the architecture you want: one long-lived team per intended boundary, owning its code, data and pipeline, and working with others through published APIs and events. It has limits. Reorganising teams doesn't restructure a tightly coupled codebase. And if you draw the boundaries wrongly, Conway's law will faithfully reproduce the mistake. Team cognitive load limits how much one team can own: the domain, the code, the infrastructure and the on-call duties. A team owning twelve services across four domains is overloaded, however clean each service's code. So give every module, service and data store one owning team. Shared ownership in practice means no ownership. And remember: reorganisations are architecture decisions.
The full section covers the research in detail, and what to do when the org chart and the architecture disagree. Next, in Section three point eight, we look at simplicity and measuring structure. See you there.
What you need to know
- Melvin Conway's 1968 Datamation paper argued that organisations which design systems are constrained to produce designs that copy their own communication structures.
- The reason is mechanical: an interface between two subsystems exists only where their designers negotiated it, so the system's graph mirrors the organisation's communication graph.
- MacCormack, Baldwin and Rusnak (2012) found that products from loosely coupled organisations were consistently more modular than matched products from tightly coupled ones, though a 2016 review found mirroring common rather than universal.
- A group of n people has n(n-1)/2 communication paths, so coordination cost grows roughly with the square of team size, and small teams owning matching parts of the system keep it manageable.
- The inverse Conway manoeuvre shapes teams and their interactions for the architecture you want, but it only works slowly against an existing coupled codebase.
- Team cognitive load limits how much of a system one team can own; boundaries should give each team a part it can fully understand, build and run.
What Conway actually said
In April 1968 the magazine Datamation published "How Do Committees Invent?" by Melvin Conway, a computer programmer and consultant. Its conclusion is the sentence now known as Conway's law: organisations which design systems are constrained to produce designs which are copies of the communication structures of these organizations
. The name came later: Fred Brooks cited the paper in The Mythical Man-Month (1975) and called the idea Conway's law.
Conway's argument is more precise than the slogan. A system is made of subsystems connected by interfaces. For two subsystems to connect, the people designing them must have negotiated and agreed that interface, so they must have communicated. If the designers of two subsystems do not communicate, there is no interface for them to agree on. There is therefore a structure-preserving correspondence (Conway used the mathematical term homomorphism) between the graph of the system and the graph of the organisation that designed it. His example: a contract research organisation had eight people to write a COBOL and an ALGOL compiler. Five were assigned to COBOL and three to ALGOL. The COBOL compiler ran in five phases; the ALGOL compiler in three.
Two further points from the paper are often forgotten. First, Conway was explicit that "system" is meant broadly: it applies to any designed thing, not only software. Second, his practical conclusion was about flexibility. Because the first design is rarely the best one, and because an organisation tends to fix its structure early (once teams are formed, the design is already partly decided), he argued that design organisations should be kept lean and flexible and organised according to the communication the design actually needs.
The mirror
The evidence: the mirroring hypothesis
For decades Conway's law was supported mainly by anecdote. Since the 2000s researchers have tested it, usually under the name mirroring hypothesis: the technical dependencies in a product will match the organisational ties (communication, co-location, employment) among the people who build it.
The best-known software study is by Alan MacCormack, Carliss Baldwin and John Rusnak, published in Research Policy in 2012 as "Exploring the duality between product and organizational architectures: a test of the mirroring hypothesis". They compared matched pairs of products with similar functions, one built by a tightly coupled organisation (a commercial firm with a co-located team) and one by a loosely coupled organisation (a distributed open-source community): for example, two financial management packages, two word processors, two databases, and Linux compared with commercial operating-system kernels. They measured modularity by propagation cost, the average share of a system's files that a change to one file can affect directly or indirectly. In every pair the product from the loosely coupled organisation was more modular, and in the most extreme pair the difference was several-fold. The authors interpret this as evidence that distributed teams, who cannot easily coordinate, are pushed towards designs that need less coordination.
A Microsoft Research study of Windows Vista by Nachiappan Nagappan, Brendan Murphy and Victor Basili (2008) approached the question from the quality side. Metrics describing the organisation that built each binary (how many engineers touched it, how many had left, how far apart in the management hierarchy the contributors sat) predicted which binaries were failure-prone better than conventional code metrics such as churn, complexity, coverage and dependencies.
The evidence is not unanimous, and the honest summary matters. A 2016 review of 142 empirical studies by Lyra Colfer and Carliss Baldwin found mirroring common in studies of industries and firms, but not universal, and found that studies of open collaborative projects often did not support it, presumably because shared code repositories, issue trackers and open discussion let distributed contributors coordinate without the usual organisational ties. Mirroring is a strong tendency, not a law of physics, and good tools and practices can partly break it.
Communication paths and why team size matters
A group of n people has n(n − 1) / 2 possible one-to-one communication paths. The number grows roughly with the square of the group: doubling the team quadruples the paths. Brooks used the same arithmetic to explain why adding people to a late project makes it later: each newcomer must be trained and adds new paths that everyone must maintain.
Architecturally, the arithmetic explains two things. First, a single team cannot grow indefinitely and still keep a shared understanding of its code; past a certain size it fragments into informal sub-groups, and by Conway's law the code fragments along the same lines, whether or not anyone designed those seams. Second, the number of paths between teams matters as much as within them: if every team must talk to every other team to ship a change, the system's structure is effectively one large, coupled unit, however many services it has.
Paths grow much faster than people
Worked example
Worked example: communication paths in a growing product group
A food-delivery company's ordering product is built by one team of 8 engineers. It plans to grow to 24 engineers. Compare one large team with three teams of 8 that have clear ownership.
| One team of 8 | 8 × 7 / 2 = 28 paths. |
|---|---|
| One team of 24 | 24 × 23 / 2 = 276 paths: about ten times as many for three times the people. |
| Three teams of 8, internal paths | 3 × 28 = 84 paths inside teams. |
| Three teams, paths between teams | If each team has a single point of contact with each other team (say the tech lead), that adds 3 × 2 / 2 = 3 paths between teams. Total about 87. |
| Three teams, everyone coordinates with everyone | If ownership is unclear and every change needs every engineer, the graph is effectively the 276-path graph again. |
| What it shows | Splitting people into teams only helps if the system is split to match, so that most changes need only intra-team communication. The architecture is what makes the smaller graph possible. |
The formula gives potential paths, not actual conversations; the point is how quickly coordination cost can grow, not a precise prediction.
Team Topologies (Skelton and Pais) suggests long-lived teams of roughly 5 to 9 people, consistent with the arithmetic: small enough that the paths remain manageable.
The inverse Conway manoeuvre
If organisations tend to produce systems that mirror their structure, you can use the tendency deliberately: design the team structure and communication paths for the architecture you want, and let the system grow into that shape. Jonny LeRoy and Matt Simons named this the inverse Conway manoeuvre in an article in the Cutter IT Journal in December 2010, and it has since become a standard technique in microservice and platform programmes.
In practice it means deciding the intended boundaries first (for example, ordering, payments, delivery tracking and restaurant onboarding as separate services), then forming one long-lived team around each, giving it ownership of the code, data and deployment pipeline, and arranging that teams interact mainly through published APIs and events rather than shared code or shared databases. Where cross-team contact is genuinely needed, make it explicit: a platform team offering a self-service product, an enabling team helping for a limited time.
The manoeuvre has limits. It works with the grain of an existing system only slowly: reorganising teams does not restructure a tightly coupled codebase, and for a while the new teams will be fighting the old architecture. Martin Fowler notes that it cannot quickly fix a rigid existing system. It also assumes you know the right boundaries; if you draw them wrongly and then harden them into team structures, Conway's law will faithfully reproduce the mistake and make it expensive to change. That is why teams often start with a modular monolith and move boundaries before making them organisational.
Team cognitive load
Conway's law tells you that team boundaries become system boundaries. A second constraint tells you how big each team's part can be. Team cognitive load, a concept Matthew Skelton and Manuel Pais brought into software organisation design in Team Topologies (2019; second edition 2025), is the total amount a team must hold in its heads to build, run and change what it owns: the business domain, the code, the infrastructure, the tools, the on-call duties.
They borrow from psychology the distinction between intrinsic load (the inherent difficulty of the task, such as understanding the domain), extraneous load (effort imposed by the environment, such as a manual deployment procedure or an obscure build) and germane load (the effort of learning that improves future work). The design goal is to minimise extraneous load, for example through platforms and automation, so that capacity goes to the intrinsic and germane kinds.
For architects the consequence is direct. A service or component boundary should give its owning team a part of the system it can fully understand. If a team owns twelve services across four domains, the team is overloaded, and either quality, speed or on-call health will suffer, however clean each service's code. Conversely, a domain so complicated that no stream-aligned team can absorb it (a pricing engine with actuarial models, a video codec) may justify a specialist team and a clear boundary around its subsystem.
Letting team structure shape boundaries
Taken together, these ideas give architects a set of working rules:
Align boundaries with team ownership. Every module, service, data store and pipeline should have one owning team. Shared ownership in practice means no ownership, and the code will reflect whatever the last contributor needed.
Minimise the communication each change needs. A boundary is in the right place if most changes to a business capability can be made, tested and deployed by one team. Watch for changes that routinely need three teams to coordinate: they show that the system's structure and the team structure disagree.
Make cross-team interfaces explicit and stable. Interfaces between teams deserve versioning, documentation and contract tests; interfaces within a team can stay informal and change freely.
Revisit both together. Reorganisations are architecture decisions; architecture decisions are organisational decisions. An architect who is not consulted on team changes, or a manager who reorganises without considering the code, is ignoring a force that will act regardless.
The patterns for team types and interaction modes, and how to evolve them, are covered in Team Topologies and socio-technical design.
When the org chart and the architecture disagree
| Situation | What you see in the system | Typical remedy |
|---|---|---|
| Teams organised by technical layer (front end, back end, database) | Every feature needs three teams and three hand-offs; layers grow thick, generic interfaces; releases are coordinated | Cross-functional teams aligned with business capabilities, each owning a vertical slice |
| Microservices owned by one team per service, but a central data team owns all schemas | A distributed system that couples through a shared database; schema changes queue for weeks | Give each service team ownership of its data; the data team provides a platform and standards |
| Two teams share ownership of one service | Conflicting conventions inside one codebase, merge conflicts, nobody on call for the hard parts | Split the service along the teams' concerns, or give it to one team |
| One team owns many unrelated services | Neglected services, stale dependencies, slow incident response: cognitive overload | Consolidate services, move some to other teams, or invest in platform tooling |
| Outsourced vendor builds one subsystem under a fixed contract | A rigid, heavily specified interface that is very expensive to change | Treat the boundary as a one-way door; place it where change is least likely |
| A reorganisation moves a capability to a new team, but the code stays in the old team's repository | The new team works around code it does not own; erosion of the intended boundary | Move code, pipelines and on-call along with the responsibility |
Check your understanding
Why, in Conway's argument, must the structure of the system resemble the structure of the organisation?
Because each interface between subsystems has to be negotiated by the people designing them; where people do not communicate, no interface gets designed, so connections in the system follow connections between people.
How many communication paths does a team of 12 have?
12 × 11 / 2 = 66.
A company reorganises into teams per microservice but keeps one shared database that every team changes. What does Conway's law predict?
The services will stay coupled through the database and changes will need coordination among all teams, because the communication structure (everyone touching the same schema) has not changed.
What is extraneous cognitive load, and how can architecture reduce it?
Effort imposed by the environment rather than the problem, such as manual deployments or obscure tooling; platforms, automation and clear boundaries reduce it so teams can focus on their domain.
Sources and further reading
- Melvin Conway: How Do Committees Invent? (Datamation, April 1968)
- Martin Fowler: Conway's Law
- MacCormack, Baldwin and Rusnak: Exploring the duality between product and organizational architectures (Research Policy, 2012)
- Team Topologies: key concepts
- Thoughtworks Technology Radar: Inverse Conway Maneuver
Have a question about this section? ArchitectBot, the course’s AI study assistant, answers from the course first.
Ask: “We are splitting our monolith into services and also reorganising our 40 engineers. Which should come first, and how do I use Conway's law to decide the team boundaries?”