Published April 13, 2021
by Doug Klugh
Separating Concerns
Accelerate software delivery by building small, independent teams — each with responsibility for the entire lifecycle of the services they create. As Mel Conway observed in 1967, building loosely-coupled teams will result in more modular, decomposed architectures. In comparison, large product teams that typically require fine-grained communication tend to create tightly-coupled, Monolithic Architectures. Independent teams build services with independent concerns, whose services evolve separately from one another while promoting the Law of Demeter.
« Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure. »
- Melvin E. Conway
As this shows that modular architectures evolve from loosely-coupled (development) teams, we can extend Conway’s Law to align development teams with the organizational structure of the users. This will facilitate various software engineering principles to ensure that changes that support one user group community will not impact other communities of users. For example, the Single Responsibility Principle tells us to build software modules that serve, at most, one actor — to separate functionality that changes for different reasons. By aligning our development teams to individual user groups, our software architecture can easily support this principle and many others. Establishing a team structure that reflects the organization of the users will go a long way in facilitating a good software architecture.