Conway's law and its inverse
Organizations ship their communication structure. The observation is nearly sixty years old and uncomfortably reliable, and the interesting part is what you do with it once you believe it.
The observation
A system's structure tends to mirror the structure of the organization that built it.
Four teams building a compiler produce a four-pass compiler. Nobody decided that. The interfaces between teams become the interfaces in the software, because those are the interfaces that require negotiation.
The mechanism is that agreeing across a team boundary is expensive, so people design to do it less. The architecture is the shape of least conversation.
The inverse
If structure follows the organization, then choosing the organization chooses the structure.
This is the "inverse Conway maneuver": decide what architecture you want, then arrange teams so that it's the natural thing to build.
It works, and it's slower and more political than writing the architecture down, which is why it's discussed more often than it's done.
flowchart TB
O["how the organization communicates"] --> A["the architecture that gets built"]
A --> N["because agreeing across a boundary is expensive"]
I["inverse: choose the teams"] --> B["to get the architecture you want"]
I --> S["slower and more political than deciding directly"]
What it means with one person
This application has one contributor.
Conway's law doesn't vanish; it degenerates. With one person there are no communication boundaries at all, so the law predicts nothing. Any architecture is equally reachable, because no arrangement requires a negotiation.
That's an unusual and temporary freedom, and it raises the question this course is about: the code has ten bounded contexts and the organization has one person, so what are the boundaries doing?
Three possible answers
They're a bet on a future organization: structure built now so that adding people later is cheap.
They're a thinking tool: boundaries that make the system navigable regardless of who's navigating it.
They're cargo culting: a shape copied because good systems have it, without the problem that makes it necessary.
All three are plausible from the outside, and lesson 2 measures the codebase to work out which one it is.
Key takeaways
- A system's structure mirrors the communication structure of the organization that built it.
- The mechanism is that agreeing across a team boundary is expensive, so designs avoid it.
- The inverse maneuver chooses teams to get an architecture, and it's slower than deciding directly.
- With one contributor the law degenerates: no boundaries means any architecture is reachable.
- Ten bounded contexts and one person raise the question of what the boundaries are for.
Keep going with lesson 2
The shape this codebase has
Counts files and cross-references per context, revealing a shared core and an Admin context with zero fan-in.
A free account also gives you the quizzes, your progress and notes, and the discussion.