
Eat Your Own Dog Food

Daniel Lopes

Conway's Law states that your software architecture will inevitably mirror how your teams communicate and are organized. If you have three teams working on a compiler, you'll get a three-stage compiler. This isn't just observation—it's a predictable force that smart engineering leaders can use strategically by organizing teams to match their desired system architecture.
Conway's Law describes the inevitable relationship between how your organization communicates and how your systems are structured. When teams are siloed, systems become fragmented. When teams collaborate closely, systems become tightly integrated. This happens whether you plan for it or not.
The principle comes from Melvin Conway's 1967 research, which formally proved that "any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure." Conway submitted this to Harvard Business Review, got rejected for "lack of proof," then published it in Datamation magazine in 1968. Fred Brooks later popularized it as "Conway's Law" in his influential 1975 book "The Mythical Man-Month".
Why this matters for engineering teams
Conway's Law explains many common architectural problems. When your deployment process involves five different teams, you end up with complex, multi-stage deployment pipelines. When your frontend and backend teams rarely talk, you get APIs that don't quite fit the user interface needs. When teams are organized by technology layer (database team, API team, frontend team), you get systems that reflect those boundaries rather than user workflows.
The law has the greatest impact when multiple teams collaborate on shared systems. Physical separation, different time zones, or organizational silos create communication friction that directly translates into system friction. Teams that can't easily coordinate produce systems that can't easily integrate.
Real-world evidence from major tech companies
Amazon provides the clearest example of Conway's Law at scale. Their eCommerce platform started as a monolith built by a small, unified team. As Amazon grew and organized into separate teams for web, fulfillment, and billing, their architecture evolved into microservices that mirror these business domains. Their famous "two-pizza teams" approach—where teams should be small enough that two pizzas can feed them—produces autonomous services owned end-to-end by autonomous teams.
Netflix demonstrated the strategic application through what's called the "Inverse Conway Maneuver." They had about 20 fragmented observability applications built by three separate teams, creating a disjointed user experience. Netflix deliberately reorganized these teams into a single, unified group focused on observability as a platform. The result: a cohesive system that serves users better than the previous fragmented approach.
Spotify's squad model shows Conway's Law in a positive light. Small, cross-functional squads each own specific product features, resulting in a modular product architecture where autonomous teams build autonomous components. The communication patterns within squads (tight collaboration) and between squads (loose coordination) directly reflect the system architecture.
The strategic opportunity: Inverse Conway Maneuver
Smart engineering leaders don't just accept Conway's Law—they use it strategically. The Inverse Conway Maneuver involves deliberately organizing teams to achieve desired system architecture. Instead of letting existing communication patterns dictate system design, you restructure teams first to encourage the architecture you want.
This means defining your target architecture, then aligning team boundaries with system boundaries. Want loosely coupled microservices? Create autonomous, cross-functional teams organized around business capabilities rather than technical functions. Want better integration between components? Ensure the teams building those components communicate regularly and share context.
Practical implementation for modern development
Conway's Law applies directly to current practices like microservices, DevOps, and agile development. Cross-functional agile teams naturally produce more modular software because they handle everything from requirements to deployment. DevOps practices break down the traditional development-operations silos, leading to systems designed for operational concerns from the start.
For microservices specifically, Conway's Law suggests that service boundaries should match team boundaries. If you have five teams, you probably want around five major services, not fifty. Each team should be able to develop, test, and deploy their service independently, which requires both organizational autonomy and architectural decoupling.
The law also explains why premature adoption of complex architectures often fails. A small startup team trying to build microservices often creates unnecessary complexity because their communication patterns don't match the architectural complexity they're attempting. The team communicates as one unit but tries to build as if they were multiple units.
"Conway's Law is just about org charts" - The law focuses on actual communication patterns, not formal organizational structure. Two teams might report to the same manager but rarely coordinate, or teams in different departments might collaborate closely. What matters is how information flows, not who reports to whom.
"You should always organize teams to match current architecture" - This gets Conway's Law backward. The strategic insight is organizing teams to match your desired architecture, not your current one. If your current architecture has problems, reorganizing teams around it just perpetuates those problems.
"Conway's Law means perfect team-to-system mapping" - The law describes communication structure influence, not one-to-one team-to-component mapping. A single team might own multiple small services, or multiple teams might contribute to different aspects of a large system, as long as the communication patterns support the desired architecture.