softwarearchitecture systemdesign
“Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.”
— Melvin Conway (1967)
What It Means
The way teams are structured within an organization directly influences the architecture of the software they develop.
For example:
- If an organization has separate teams for UI, backend, and database, they will likely build a layered architecture.
- If teams are domain-based (cross-functional teams working on specific business areas), they will likely create microservices or modular architectures.
Implications of Conway’s Law
- Software architecture tends to mirror the company’s team structure.
- To build a desired architecture, organizations may need to reshape their teams (e.g., from technical silos to cross-functional teams for microservices).
- Poor communication between teams can result in disconnected or inefficient system designs.