Conway's Law
Conway's Law: organizations design systems that mirror their communication structure. If four teams build a compiler, you get a four-pass compiler.
Conway's Law = your software will look like your org chart whether you want it to or not. Four pizza teams build a four-service system. It's architectural gravity — you can't fight it, so design with it.
Conway's Law is descriptive, not prescriptive — it will happen whether you plan for it or not. The practical implication for HLD: service boundaries and team boundaries must be co-designed. If you design a microservices architecture that requires three teams to coordinate for every deployment, you have created a distributed monolith that mirrors a siloed org structure. The 'Inverse Conway Maneuver': deliberately structure teams to match the desired architecture. If you want two independently deployable services, you need two teams that can make decisions independently — including owning their own data stores and deployment pipelines.
Team Topologies (Skelton & Pais) provides a structured vocabulary: Stream-aligned teams (own a product area end-to-end, from customer need to production), Platform teams (provide self-service infrastructure capabilities to stream-aligned teams), Enabling teams (temporary consultants that upskill stream-aligned teams on a specific capability), Complicated-subsystem teams (own a particularly complex subsystem requiring deep specialist knowledge). The key insight: platform teams must treat stream-aligned teams as their customers — a platform that requires tickets and 2-week lead times is not a platform, it is a bottleneck. Cognitive load is the operating constraint: each team should own enough to be autonomous but not so much that they cannot maintain deep expertise in their area.
When designing a new microservices architecture, I start by drafting the target org chart alongside the service map. If I can't map each service to a team that can own it independently, the service boundaries are wrong. I apply the Team Topologies model: stream-aligned teams own customer-facing domains (checkout, catalog, search); a platform team provides the Kubernetes platform, CI/CD, and observability tooling as internal products; enabling teams are used temporarily to uplift stream-aligned teams on new capabilities (e.g., migrating to gRPC).
Designing a microservices architecture and then assigning team ownership as an afterthought. The org chart will reshape the architecture back to something it can maintain. Align teams and architecture from the first design session.