Last week I finished Team Topologies: Organizing Business and Technology Teams for Fast Flow by Matthew Skelton and Manuel Pais. This is a great book on organization design. The authors talk about how works get done via formal org chart, informal relationship based influence and inter-personal and inter-team reputations.
They bring Conway’s law which states organizations design systems that mirror their own communication structure. They further affirm that if the architecture of the system and the architecture of the org are at odds, the architecture of the org wins. Another topic the authors touch in this book is cognitive load and how to categorize teams in 4 fundamental topologies based on that. Along with the types also comes how the teams should interact with each other.
- Stream-aligned team: A stream is the continuous flow of work aligned to a business domain or organizational capability. Continuous flow requires clarity of purpose and responsibility so that multiple teams can coexist, each with their own flow of work. I personally don’t like the term stream-aligned and prefer the term product engineering or product development team.
- Enabling team: An enabling team is composed of specialists in a given technical (or product) domain, and they help bridge this capability gap.
- Complicated-subsystem team: A complicated-subsystem team is responsible for building and maintaining a part of the system that depends heavily on specialist knowledge, to the extent that most team members must be specialists in that area of knowledge in order to understand and make changes to the sub-system.
- Platform team: The purpose of a platform team is to enable stream-aligned teams to deliver work with substantial autonomy.