Melvin Conway is one of the founders of computer programming, but he is mostly known for the “Conway’s Law”.
In the original form, the law states that:
“Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations”
Think a bit about that: every time you design a new system, the design you produced is deeply influenced by the internal structure of your organization.
In other words, and rephrasing the Conways’s law with an example:
“If in your organization there are 4 groups working on a compiler, you will end up creating a 4-pass compiler.”
On the practical side, there is a hugely underestimated consequence of the Conways’ law: to change how products and systems are done inside your company, you will have to change the structure of the company, too.
Think of it next time you encounter someone that is “adopting Agile” or that is claiming “we are now targeting software quality over all other metrics”. Is the internal structure going to change accordingly?
On the other hand, applying Conway’s law can be an opportunity, if we switch it upside down:
We should model our teams and our communication structures after the architecture we want.
https://twitter.com/jesseplusplus