Conway’s Law states that:
“organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.”
In other words, the communication patterns in your team are duplicated in your software. I recently had a chat in which my counterpart made the point that if we take Conway’s Law to be true, it should stand that the mental state of the individuals doing the communicating is having a great affect on your software.
When dealing with networks, we most often focus on the edges between the nodes. Without computers talking to each other, there is no network, so it makes sense to focus on connection and uptime. Yet when dealing with networks of humans, I believe Conway’s Law calls on us to start by examining the state of the nodes themselves.
In contrast to inanimate interactive entities, like servers, human nodes are neither uniform nor neutral. Much the way DNA contains a set of plans for how an organism’s development unfolds, humans are carriers of their own design patterns. The way these design patterns are expressed in an organization (aka within the network) will vary based on things like their past lived experiences and identities, whether or not they perceive that their contributions are respected, or whether they’ve gotten enough sleep or calories, just to name a few. An individual human node will respond to stimulus differently based on the state of these factors, which shift how they will communicate on a given day. Conway’s Law postulates that this is reflected in the software system they’re building. Then, there’s a concurrent process running where they interact with other humans in your organization, each with design patterns of their own. This dance of interrelation produces the state of your software.
While preemptively controlling for every possible aspect of the communication between the humans designing your system is unlikely, it stands to reason that optimizing for the well-being of the individuals doing the work can be a sort of resilience engineering. Things like proper compensation, respect for boundaries, a blameless culture, and clear opportunities for advancement create circumstances most likely to engender an open, well-regulated, constructive mental state in your individuals. If Conway’s Law is right, maintenance on the state of the human nodes in a network paves the way for more constructive communication patterns, and better software.