Team Topologies
"Team Topologies: Organizing Business and Technology Teams for Fast Flow" by Matthew Skelton and Manuel Pais is a practical guide to organizational design and team dynamics for modern software development. Here's a summary of its key concepts and recommendations:
Conway's law
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
The strongest form of communication happens in an individual team working closely together with a very consistent shared context and specific purpose. In software this number is supposed to be 8 people. The importance of having long lived teams that are given enough time to get to a state of high performance and then stick together and capitalise on it.
- Tuckman team performance model (Forming, Storming, Norming, Performing)
Team Design Consideration: Minimising Team Handoffs, Queues, and Communication Overhead
You also need what the book calls “sensing” which is where an organisation possesses enough feedback mechanisms to ensure software and service quality is understood as early and clearly as possible.
Putting this in plainer terms, when you are thinking about team design and organisational structure, you need to consider how much collectively you are expecting the team to:
- know
- be able to perform
- be able to make effective decisions about
- be able to make brilliant.
Sure, giving as much ownership of a product or service as possible to one team avoids team boundaries, but it also increases the cognitive load on the team and potentially the minimum number of people needed in a team.
Influential Principles
- Amazon: Highlights the benefit of minimizing handoffs, queues, and communication.
- Sweller: Advises avoiding excessive cognitive load on teams.
- Dunbar: Suggests keeping teams to around eight people.
Picks from
- (Team topologies summary)[https://markosrendell.wordpress.com/2020/02/04/team-topologies-book-summary-part-1-of-3-key-concepts/]
The Four Team Types
- Stream-aligned team: Focused on a specific product or service and aligned with the flow of business value. They have end-to-end responsibility.
- Enabling team: Helps stream-aligned teams by providing expertise, knowledge, and support in areas such as infrastructure, tooling, and specialized practices.
- Complicated subsystem team: Responsible for areas requiring deep technical expertise and focus, often parts of the system that are too complex to be handled by stream-aligned teams.
- Platform team: Provides internal services and tooling that streamline the work of stream-aligned teams, enabling them to deliver value faster and more efficiently.
The Three Modes of Team Interaction
- Collaboration: Two teams work together on a shared goal, usually short-term.
- X-as-a-Service: One team provides a service to others, facilitating clear expectations and a reliable interface.
- Facilitating: One team supports another to enhance capabilities or adopt new technologies, often short-term.