A group of people can solve a problem more efficiently sitting around a table than if they’re farther apart. If you’ve ever worked on a team project, you know this. It’s easier to share ideas and build on them. Obstacles are sorted out quickly. The whole team gets into that state known as “flow.” But what if your project requires more people than can fit around a table? What if you have people sitting around different tables on different floors of a building? In different cities? On different continents?
I’ve led software product teams for over 10 years, and I’ve found a fairly straightforward way to keep them performing even as they’ve grown to over 150 engineers. It’s based on Conway’s Law, which states:
“organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations”
Conway’s Law is usually invoked when putting a bad design into the context of the dysfunctional organization that produced it. I believe, however, that it also holds the key to producing better designs when multiple teams are involved.
Notice that Conway’s Law refers to “communication structures” and not “organizational structures.” While there is some overlap, communication structures are governed more by practical reality than executive mandate, particularly where physical proximity is concerned. Even within the same organizational unit, people sitting across the table from one another will experience higher-bandwidth communications than people sitting on opposite ends of the room. The farther apart people are, the lower the communication bandwidth. Walking across the room reduces bandwidth slightly because it interrupts flow. A conference call reduces bandwidth further because some non-verbal signals are lost. A textual message to someone in another time zone is extremely low-bandwidth since an entire idea must be serialized into a text string and deserialized by someone else (possibly of different cultural origins) asynchronously.