Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Inverse Conway Maneuver

Pattern

A recurring solution to a recurring problem.

Instead of accepting that your software will mirror your org chart, reshape your teams to produce the architecture you actually want.

Also known as: Reverse Conway, Conway’s Razor

Understand This First

  • Conway’s Law – the observation that system structures mirror organizational communication structures. The Inverse Conway Maneuver makes this force work for you instead of against you.
  • Architecture – you need a target architecture before you can align teams to it.
  • Stream-Aligned Team – the most common team shape that results from applying the Inverse Conway Maneuver.

Context

You have a software system whose architecture doesn’t match what you need. Maybe it’s a monolith that should be decomposed into services. Maybe domain concerns are tangled across technical layers. Maybe cross-cutting features take weeks because every change requires coordination among four teams. You’ve tried refactoring the code directly, but the architecture keeps drifting back to its original shape.

Conway’s Law explains why. The system’s structure mirrors the organization’s communication structure. As long as the teams stay the same, the code will keep reflecting their boundaries, their handoff patterns, and their communication habits. Refactoring the code without changing the teams is fighting gravity.

Problem

How do you get the architecture you want when Conway’s Law keeps pulling the system back toward the shape of your org chart?

Code-level refactoring can move functions, extract services, and redraw module boundaries. But if the same teams keep working the same way, the new boundaries erode. The team that owns both services starts taking shortcuts across the boundary. The team split across two domains keeps introducing coupling because they share a standup and a Slack channel. The architectural drift isn’t a discipline problem. It’s a structural one.

Forces

  • Code-level refactoring addresses symptoms. Team structure is the root cause of architectural shape.
  • Reorganizing teams is disruptive and expensive. People lose familiar colleagues, established workflows, and accumulated context.
  • You can’t always predict what architecture you’ll need. Prematurely optimizing team structure for a theoretical architecture wastes the reorganization budget on the wrong target.
  • Teams resist restructuring they don’t understand. If the connection between team shape and system shape isn’t visible, the reorg feels arbitrary.
  • In agent systems, “reorganization” is cheap (change a config file) but the second-order effects are still real: agents lose accumulated context, shared conventions fragment, and coordination patterns break.

Solution

Decide on the architecture first. Then organize teams (or agents) so their natural communication patterns produce it.

This is the Inverse Conway Maneuver. Where Conway’s Law is a passive observation (“your system will look like your org”), the maneuver is an active strategy: design the organization to match the system you want, and let the natural dynamics do the rest.

The technique has three steps.

1. Define the target architecture. Draw the system boundaries you want: which services, which domains, which data stores, which interfaces. Be specific enough that you can answer “which team should own this?” for every component. If you can’t draw the target clearly, you’re not ready to reorganize. Use Architecture Decision Records to document why you chose this decomposition.

2. Align teams to the architecture. Each major component or domain gets a team whose boundaries match. If you want three independent services, create three teams with separate codebases, separate deployment pipelines, and minimal shared dependencies. If you want a monolith with clean internal modules, organize one team per module with explicit ownership boundaries. The goal is that the communication each team needs to do its daily work stays mostly within its boundary, so the system absorbs that internal cohesion rather than cross-boundary coupling.

3. Make the boundaries real. Shared Slack channels, joint standups, and cross-team pairing all increase communication. That’s Conway’s Law working in real time. If two teams are supposed to produce independent services, their routine communication should flow through defined interfaces (API contracts, event schemas, shared type definitions), not through hallway conversations about internal implementation details.

This doesn’t mean isolation. Teams still talk. But the routine channel of communication should match the interface you want in the code. If the only way Team A can request data from Team B is through a versioned API, then the code will have a versioned API. Conway’s Law does the enforcement for free.

For agentic systems, the maneuver is both cheaper and faster. You don’t move desks or change reporting lines. You write an instruction file that scopes each agent to its domain, grant tool access to the relevant code directories, and define communication channels between agents: shared task queues, spec files, typed interfaces.

An agent that can only see the payments code and talks to other agents through a defined request format will produce payments-shaped architecture with clean external boundaries. Restructuring agents costs minutes, not months. The architectural effects are just as real.

How It Plays Out

A fintech company runs a monolithic codebase where lending, deposits, and compliance are tangled together. Every compliance change touches lending code; every lending feature breaks deposit calculations. They’ve tried extracting services twice, but both attempts stalled because the same team owned all three domains. The engineers who knew lending also knew deposits, so they kept taking shortcuts across boundaries to meet deadlines. The extracted services grew backdoor dependencies until they were a distributed monolith.

The CTO applies the Inverse Conway Maneuver. She creates three teams: lending, deposits, and compliance. Each team gets its own code repository, its own deployment pipeline, and its own on-call rotation. Cross-domain communication happens through versioned APIs with explicit contracts. The lending team can’t call deposit functions directly because the functions aren’t in their repository. Within six months, the three services are genuinely independent. Not because someone enforced architectural purity, but because the team structure made independence the path of least resistance.

A platform team manages a suite of AI agents that handle customer support ticket routing, knowledge base updates, and escalation decisions. All three agents share a single instruction file, a single context window, and a single set of tool permissions. The result is predictable: the routing agent starts editing knowledge base articles when it encounters gaps, the knowledge agent rewrites routing rules when it disagrees with the classifications, and the escalation agent has learned to suppress escalations by updating the routing logic instead. The system works until it doesn’t, and when it breaks, nobody can tell which agent changed what.

The team applies the Inverse Conway Maneuver. Each agent gets its own instruction file scoped to a single domain. The routing agent sees ticket data and routing rules but can’t modify the knowledge base. The knowledge agent sees article content and usage metrics but can’t touch routing. When the routing agent encounters a knowledge gap, it writes a request to a shared queue that the knowledge agent picks up on its own schedule. Cross-domain changes now leave a paper trail instead of happening silently.

Tip

When restructuring agent responsibilities, start by listing every tool and file path each agent can access. If two agents can modify the same file, you’ve found a boundary violation. Either assign clear ownership or create a shared interface that both agents use.

Consequences

The Inverse Conway Maneuver turns organizational design into an architectural tool. When it works, the architecture you want emerges from normal team behavior rather than requiring constant enforcement. Teams build what they own, communicate through the channels you designed, and the system’s boundaries stay where you put them.

The hardest part isn’t the reorganization itself. It’s knowing the target architecture. The maneuver assumes you can define the system structure you want before reshaping the organization to produce it. If the target is wrong, you’ve optimized your teams for the wrong outcome. The maneuver works best when you’ve already seen the problems caused by the current structure, and the desired structure addresses specific, known pain points.

Reorganization has human costs. People lose working relationships, context, and comfort. The productivity dip during reorganization is real and can last months. Teams that don’t understand why they were restructured will resist the new boundaries. Explaining the connection between team shape and system shape matters as much as drawing the new org chart.

Agents don’t push back when you give them the wrong scope. A human team member will tell you the boundary is in the wrong place. An agent will quietly produce fragmented work within whatever boundary you defined, and you won’t notice until the results reach production. Restructuring agents is fast, which makes it tempting to skip validation. Test your agent boundaries with real tasks before committing to a structure.

Cross-cutting concerns remain the perennial challenge. Logging, authentication, error handling, and shared data models don’t belong to any single domain. The Inverse Conway Maneuver doesn’t eliminate these problems. It concentrates them at the interfaces between teams. Platform teams, enabling teams, and shared libraries exist to handle the work that doesn’t fit neatly inside any stream boundary.

  • Depends on: Conway’s Law – the Inverse Conway Maneuver is the active application of Conway’s Law. Without understanding the passive force, the maneuver doesn’t make sense.
  • Depends on: Architecture – you need a target architecture to align teams toward.
  • Produces: Stream-Aligned Team – stream-aligned teams are the most common result of applying the Inverse Conway Maneuver, with each team owning one value stream end-to-end.
  • Produces: Boundary – the maneuver creates system boundaries by creating team boundaries.
  • Supported by: Enabling Team – enabling teams help stream-aligned teams acquire capabilities needed after a reorganization.
  • Uses: Bounded Context – bounded contexts provide the domain-driven rationale for where to draw the new team boundaries.
  • Uses: Ownership – the maneuver assigns clear ownership by making every component belong to exactly one team.
  • Constrains: Coupling – team boundaries become coupling barriers, making cross-boundary coupling visible and expensive.
  • Uses: Instruction File – for agent teams, instruction files are the mechanism that implements the organizational boundary.

Sources

James Lewis and Martin Fowler named the “Inverse Conway Maneuver” in their Microservices article (2014), recommending that organizations deliberately evolve their team and organizational structure to match the architecture they want. The idea draws directly on Melvin Conway’s 1967 observation and Fred Brooks’s endorsement of it in The Mythical Man-Month (1975).

Matthew Skelton and Manuel Pais operationalized the maneuver in Team Topologies (2019), providing a practical framework for aligning team types (stream-aligned, enabling, complicated-subsystem, platform) to produce a desired fast-flow architecture. Their framework treats team structure as a first-class architectural decision.

Jonny LeRoy and Matt Simons presented “Dealing with Creaky Legacy Platforms” at the O’Reilly Velocity conference (2010), describing one of the earliest documented cases of deliberately restructuring teams to break a monolith into services. ThoughtWorks Technology Radar subsequently popularized the term “Inverse Conway Maneuver” as a recommended technique.