Software Org Design
During hypergrowth, your team will double every 6 to 12 months. As the company scales, the communication complexity within the company will increase faster.
In this period, the managers must always keep the organization lean and structured for greater net output. A lean organization consists of lean teams. A lean team outperforms a large team as the cost of distributing knowledge increases non-linearly with when a team becomes bigger. There is a theory that describes this phenomenon: The number of possible communication paths in a team is approximately half the square of the number of people in the team.
Building a great org structure with confidence requires two considerations:
- The philosophy: The preliminary principle design document that describes why an organization should be designed in a certain way.
According to ReOrg: How to Get it Right, more than 80% of reorgs fail to deliver the hoped-for value. Many of them happen because the managers don’t specify the objectives, key actions, or simply do things in the wrong order. Setting the right principle preliminary principle design document helps guide the process.
2. The map: Basic questions about the value of resources and communication techniques/paths.
Only after the above are considered can we dive into designing an org structure that creates a leveraged output from an input.
Designing an org is not about the reporting lines, in which how most of the structuring is done. It’s about optimizing the communication paths between the teams that eventually shape the end product, dictate the culture, and align values. This is done by delineating each team and how they are interconnected. Continue to optimize the communication paths until you are down to a simple system.
A team is the most trusting and therefore the most efficient when it consists of five to nine people, who work towards a shared goal. These units should be one of the below team topologies for a modern software product:
- Stream-aligned team: In most cases, this team is focused on a specific business domain
- Enabling team: Work with a Stream-aligned team to overcome obstacles
- Complicated Subsystem team: A team of specific and deep knowledge of a particular technical area
- Platform team: Team types that provide internal tools to accelerate delivery by Stream-aligned teams
The restriction of these four team types acts as a robust template for an effective organizational design. These teams are to be designed with loose coupling and high cohesion in mind. Twilio did this through a process called mitosis.
Once a reasonable structure is set, ensure there are clear boundaries of responsibilities that are written down. Then continue to increase the quality of communication between the teams with consistency and interfaces. The parameter being optimized is the cognitive load minimization for each team. The outcome is less need for ad-hoc communication and readily available information. Strive to achieve less and better communication.
Conway’s law tells us that we need to understand what software architecture is needed before we organize our teams. Otherwise, the communication paths and incentives will end up dictating the software architecture. Therefore, team assignments are the first draft of the architecture. The bottom line is, get the right org system in place which would govern how the product will be architected, then heavily reduce the amount of communication required to run an organization so that people can get some work done.