Conway’s Law came up in dialogue with a Swiss Investment Bank, who was citing this as a challenge in building software products. The concern was that “a software system whose structure closely matches its organisation’s communication structure works better (defined broadly) than a system whose structure differs from its organization’s communication structure”. “Better” in this context means higher productivity for the people developing and maintaining the system, through more efficient communication and coordination, and higher quality. All of a sudden this was making sense – productivity and quality were both tangible and desirable.
Fast forward to today, the adoption of Microservices provides us with further reason to suggest that Conway’s Law is even more relevant. Microservices, in short, a pragmatic implementation of Services Oriented Architecture (SOA) based on loosely coupled API’s is well suited to the implementation of small teams working on autonomous components. Martin Fowler and James Lewis go into more depth on the subject, highlighting the fact that these architectures allow organisations much more flexibility in aligning the architecture of their systems to the structure of their teams to ensure that Conway’s law works for us.
Conversely, that leads us to reflect on the implications if we can’t make Conway’s Law work for us? Under what circumstances might that be the case? Let’s consider an instance where an organisations structure and software are not in alignment. I have seen this where a distributed team are put to work on a monolithic legacy codebase. The communications channels that Conway refers to were not aligned. This was a source of frustration and tension within the implementation teams, resulting in poor performance and a loss of quality.
The alternative to this is a modular codebase (enabled by Microservices) that can be worked on by small distributed teams, located anywhere. Netflix and Amazon, for example, structure themselves around multiple small teams, each one with responsibility for a small part of the overall system.
Microservices embraces Conway’s Law to leverage the power of distributed teams, making distributed teams the norm irrespective of whether they are located onshore, offshore or nearshore. Enterprises that are unable to engage a distributed team due to monolithic products or codebases are likely to be at a competitive disadvantage or worst case markedly increasing their technical debt.