softwarearchitecture systemdesign

SA01.8 - Domain Driven Design

“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.