๐ฌ๐ผ๐ ๐๐ผ๐ณ๐๐๐ฎ๐ฟ๐ฒ ๐ฎ๐ฟ๐ฐ๐ต๐ถ๐๐ฒ๐ฐ๐๐๐ฟ๐ฒ ๐ถ๐ ๐ฎ๐น๐๐ฎ๐๐ ๐ฐ๐ผ๐บ๐ฝ๐น๐ฒ๐
๐ฎ๐ ๐๐ผ๐๐ฟ ๐ผ๐ฟ๐ด๐ฎ๐ป๐ถ๐๐ฎ๐๐ถ๐ผ๐ป
This is Conway's Law. Melvin Conway wrote it down in 1967:
"Organizations who design systems are constrained to produce designs which are copies of the communication structures of these organizations."
This means that the structure of a software system is shaped by the structure and communication patterns of the team building it. The team's needs win over the system's needs, even when nobody means for that to happen.
The patterns fall straight out:
- ๐ฆ๐บ๐ฎ๐น๐น, ๐ฑ๐ถ๐๐๐ฟ๐ถ๐ฏ๐๐๐ฒ๐ฑ ๐๐ฒ๐ฎ๐บ๐ produce modular service architectures.
- ๐๐ฎ๐ฟ๐ด๐ฒ, ๐ฐ๐ผ๐น๐น๐ผ๐ฐ๐ฎ๐๐ฒ๐ฑ ๐๐ฒ๐ฎ๐บ๐ produce monoliths.
A company split into ๐ณ๐ฟ๐ผ๐ป๐๐ฒ๐ป๐ฑ, ๐ฏ๐ฎ๐ฐ๐ธ๐ฒ๐ป๐ฑ, ๐ฎ๐ป๐ฑ ๐ฑ๐ฎ๐๐ฎ๐ฏ๐ฎ๐๐ฒ departments will ship a three-tier system with painful integration between the tiers. Each tier was optimized by a different team for a different goal.
In a broad sense we can even say that ๐๐ฅ ๐ฑ๐ฒ๐ณ๐ถ๐ป๐ฒ๐ ๐๐ผ๐ณ๐๐๐ฎ๐ฟ๐ฒ ๐ฎ๐ฟ๐ฐ๐ต๐ถ๐๐ฒ๐ฐ๐๐๐ฟ๐ฒ๐.
Amazon learned this the hard way. In the early 2000s, the company was a monolithic organization shipping monolithic software. As they scaled, the system started to block innovation. Teams couldn't ship without coordinating across the entire codebase. The architecture mirrored the org chart, exactly as Conway predicted.
Bezos changed both at once. The monolith broke into hundreds of microservices, each owned by a "two-pizza team" of 5 to 10 engineers who owned the service end-to-end: design, deployment, on-call.
This is the ๐๐ป๐๐ฒ๐ฟ๐๐ฒ ๐๐ผ๐ป๐๐ฎ๐ ๐ ๐ฎ๐ป๐ฒ๐๐๐ฒ๐ฟ. Instead of letting the org shape the software by accident, you reshape the org to produce the software you want.
What is interesting is that the most organizations ignore Conway's Law. They treat org structure and software architecture as independent things. They draw clean architecture diagrams, then watch the system shape itself around their org chart anyway.
What are your experiences with Conway's Law?
Image: Manu Cornet (bonkersworld. net).