Evolutionary Architecture and Conway’s Law
Way back … in 1968, Melvin Edward Conway, an early computer scientist, computer programmer, and hacker postulated that…
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.
Or more concisely…
Any piece of software reflects the organizational structure that produced it.
For example, if you have four groups working on a compiler, you’ll get a 4-pass compiler!
This became known as the Conway’s Law.
Implication of Conway’s Law on Evolving Architecture
Let us assume that there is some truth in Conway’s Law. Then what implication does have on large agile projects?
In agile project you do not do a “Big Up Front” architecture. You do it in smaller increments. You take the architectural decisions at the last responsible moment. So, the architecture of your software evolves parallel to the stories getting delivered.
Small agile project can have a flat structure, a single team and no hierarchy.
For larger projects you will necessarily have to create multiple teams. You will need to partition the problem and assign a slice of the problem to a team. There are different ways to partition the problem like – feature wise, component wise, technology wise, tier wise etc. But there is no escaping the fact that you need to partition your problem.
If we accept Conway’s Law then your architecture would reflect how you have partitioned the problem to assign the work to the team.
So, here is the question that you need to answer – in which order should you do the following:
- Split the problem
- Form the teams
- Arrive at the high level architecture
…doing enough “Up Front Design” to be able to arrive at a high level architecture so that the problem can be split in such a in way that each slice can be assigned to a team?
Research study that support Conway’s Law
…products tend to “mirror” the architectures of the organizations in which they are developed … we find strong evidence to support the mirroring hypothesis…
Well … this research is strictly not a validation of Conway’s Law but it remonstrates link between organization structure and software quality!