Conway's law
Conway's Law is a principle in software engineering and organizational theory formulated by computer programmer Melvin Conway in 1967. It states:
"Organizations which design systems... are constrained to produce designs which are copies of the communication structures of these organizations."
In simpler terms, Conway's Law suggests that the way software systems are structured and organized tends to mirror the communication and collaboration patterns within the teams or organizations developing them. This means that the architecture and design of a software system often reflect the social and organizational dynamics of the team responsible for its development.
For example, if a company has separate development teams for different components of a software system, those components may end up being more loosely integrated or modular, reflecting the communication barriers between the teams. Conversely, if teams have strong communication and collaboration, the software architecture may be more cohesive and interconnected.
Understanding Conway's Law can help organizations make more informed decisions about how to structure their teams and communication channels to better align with the desired software architecture and development outcomes. It underscores the importance of effective collaboration and communication among teams working on complex software projects.