A Postal Problem
Imagine you had a network of elements like the one below.
Let’s consider some scenarios for what this could represent:
Lines of Telephone Communication: perhaps this is a network of people that call each other? If we allow for the fact that switches and multiplexers can exist (ways to route multiple calls across the same lines), then how best can we conserve the physical, copper wires? The best solution would be to take a Travelling-Salesman solution across the network.
Lines of Influence: maybe the medium is free, and we don’t need to talk via copper pipe. How best can we get people to talk with each other?
If a message gets sent in this network, there are potentially X routes it could take.
The reason for this is that the human brain is exceptionally good at both classifying and composing components and systems.
It’s fair enough that we would want to use these same tools for organising our software teams, then. This is Conway’s Law, which we have discussed before:
“organisations which design systems … are constrained to produce designs which are copies of the communication structures of these organisations.” - Melvin Conway, Conway’s Law
So, let’s play a game. We have the following graph, which represents the linkages needed to have a working team, business, biological organism or piece of software:
The problem is, it’s complicated.
You want to work as a team, so work needs to be split up Again, you’re in the position of Kitchen Estimating and Fractal Shape, where you can’t see the shape of what you’re building in advance. You divide the work (and the team) into a hierarchy. (Conway’s law) But - what’s this going to do to your deadlines? You now have multiple concurrent projects, and you have to pick the worst case scenario for when things are going to be complete. Can we do better? Rebalancing probably won’t help, since you never know how much more there is to do.
Cost = Links x Degree of Freedom (Nodes)
But, you can add a hierarchy, which reduces nodes within a certain space.
Add Your Star On GitHub to receive an invite to the GitHub Risk-First team.