The only unbreakable Law
Basically points to Conway's Law How committees invent? as a good candidate for a Software Architecture "law". He also mentions:
-
Brooke's Law which addresses Communication constraints The mythical man-month
Brooks's law is an observation about software project management that "Adding manpower to a late software project makes it later." 1 2
-
Amdahl's Law which addresses non parallelizable dependencies
In computer architecture, Amdahl's law (or Amdahl's argument 1) is a formula that shows how much faster a task can be completed when more resources are added to the system. The law can be stated as: "the overall performance improvement gained by optimizing a single part of a system is limited by the fraction of time that the improved part is actually used". 2
Communication within a team has (or at least should have) close-to-zero overhead. The only communication that has zero overhead is with oneself.
Anywhere there is a need for communication, there are constraints that need to be addressed:
- How much can I communicate. I literally mean volume of information
- Am I communicating effectively? Can the other person/team understand what we are saying?
- Are our goals aligned? Do we want the same things?
If there is any divide within an organization, you are creating the need for communication channels with varying bandwidth.
This adds complexity/friction which determines the kind of system you are capable of designing as a team.
If there is a need for a communication channel between two teams (let's say infrastructure and development) there is inevitably going to be some sort of responsibility segregation given it removes the need for given communication channel, or at least reduces the amount of information that has to go through.
Any kind of organizational structure created (for the org chart or the code base) comes from the need of simplifying a problem that may be too complex to solve with the current capabilities available. Divide and conquer as some may say. But its adding accidental complexity to the actual problem.