Overview Flashcards
Four Team Types
Stream Aligned: a team aligned to the main flow of business change, with cross-functional skills mix and the ability to deliver significant increments without waiting on another team.
Platform: a team that works on the underlying platform supporting stream-aligned teams in delivery. The platform simplifies otherwise complex technology and reduces cognitive load for teams that use it.
Enabling: a team that assists other teams in adopting and modifying software as part of a transition or learning period.
Complicated Subsystem: a team with a special remit for a subsystem that is too complicated to be dealt with by a normal stream-aligned team or platform team. Optional and only used when really necessary.
Three Interaction Modes
Collaborating:
Driver of Innovation and Rapid Discovery but Boundary Blurring
Two teams work together a shared goal, particularly during discovery of new technology or approaches. The overhead is valuable due to rapid
pace of learning
High Interaction and Mutual Respect
X-as-a-Service:
Clear Responsibilities and Predictable Delivery but Needs Good Product Management
One team consumes something provided by another team (such as an API, a tool, or a full software product). Collaborating is minimal.
Emphasize the User Experience
Facilitating:
Sense and Reduce Gaps in Capabiliities
One team (usually enabling team) facilitates another team in learning or adopting a new approach.
Help and Be Helped
Team Type and Interaction Matrix
Stream Aligned
Enabling
Complicated Subsystem
Platform
Team Type and Interaction Matrix
—————————————— Collaboration X-as-a-Service Facilitating
Stream Aligned Typical Typical Occasional
Enabling Occasional —- Typical
Complicated Subsystem Occasional Typical —-
Platform Occasional Typical —-
General Maximum Cognitive Load for a Team
2-3 Simple Domains.
Four Additional Ingredients for Team/Organization Effectiveness
Healthy Org Culture: an environment that supports professional development of individuals and teams - one which people feel empowered and safe to speak out about problems, and the organization expects to learn continuously.
Good Engineering Practices: test first design and development of all aspects of the systems, a focus on CD and operability practices, pairing and mobbing for code review, avoiding the search for the single “root cause” for incidents, designing for testability, and so on.
Healthy Funding and Financial Practices: avoiding pernicious effects of a CapEx/OpEx split between different parts of the IT organization (or at least mitigating the worst aspects of this by estimating CapEx/OpEx through sampling the work), avoiding project-driven deadlines and large batch budgeting whenever possible, and allocating training budgets to teams or groups rather than individuals.
Clarity of Business Vision: the executive or leadership provides a clear, non-conflicting vision and direction for the rest of the organization, with horizons at human-relevant timescales (such as 3 months, 6 months, 12 months) and clear reasoning behind the priorities, so people in the organization can understand how and why these were chosen.
Characteristics of a Stream-Aligned Team
Team produces a steady flow of features (per week or even multiple times per day). CI/CD needed to ship features frequently
Team is quick to change direction based on stakeholder feedback. Ability to experiment is key. Feature flags, automated testing and blue-green deployments needed.
Team (end to end development) is self contained to the team (autonomy). Minimal hand offs to other teams.
Team addresses code quality/tech debt.
Team is cross-functional (balanced… no single person responsible for a thing). They are full time owners of system,
Team self evaluates with health metrics Deployment frequency Lead time Change failure rate Mean time to restore service)
Characteristics of an Enabling Team
Composed of specialists in a given technical domain to help bridge capability gap for other teams.
Proactively seeks to understand needs of stream-aligned teams. Jointly agreeing when more collaboration is needed.
Team stays ahead of the curve in keeping abreast of new approaches, tooling and practices in their area of expertise.
Goal is to increase autonomy of stream aligned teams.
Focus on Research and Experimentation and make recommendations on tooling, frameworks and ecosystem choices. Includes notifying stream-aligned teams of important updates (e.g. framework updates, EOL, etc).
Generally limited engagement with defined “expiry” date where other team can take over task.
Promote learning
Characteristics of a Complicated Subsystem Team
Responsible for maintaining part of a system that depends on specific skills and knowledge (e.g. billing, algorithms, ML). Teams are specialists.
High collaboration with stream aligned teams during early exploration and development phases.
Reduced interaction on subsystem interfaces and feature evolution and usage during later dev phases (e.g. subsystem stabilization).
Complicated subsystem delivery is higher than if/when the subsystem was being developed by stream aligned team (before decision to split).
Goal of the team is to reduce the cognitive load of stream-aligned teams who work on or use the subsystem.
Team prioritizes work based on needs of Steam Aligned team.
Teams should be used sparingly and should not be embedded into stream-aligned teams.
Characteristics of a Platform Team
Platform teams enable stream aligned teams to deliver work with substantial autonomy. Platform teams provide internal services that stream aligned teams can use.
Strong collaboration with stream aligned teams.
Fast prototyping techniques involving stream aligned teams for fast feedback.
Strong focus on usability and reliability for their services.
Lead by example (dog food their own services)
Platform teams create capabilities to be used by multiple stream aligned teams with little overhead. This minimizes cognitive load of stream aligned teams.
Collaboration Mode: Pros and Cons
Advantages
Rapid innovation and discovery
Fewer hand offs
Disadvantages
Wide shared responsibility for each team
More detail/context needed between teams, leading to higher cognitive load
Possible reduced output during collaboration compared to before
Constraint
Mode should only be used with one team at a time.
Typical Uses:
Stream Aligned teams working with Complicated Subsystem Teams;
Stream Aligned teams working with Platform Teams;
Complicated Subsystem Teams working with Platform Teams
X-as-a-Service Mode: Pros and Cons
Advantages
Clarity of ownership with clear responsibility boundaries
Reduced detail/context needed between teams, so cognitive load is limited
Disadvantages
Slower innovation of the boundary or API
Danger of reduced flow if the boundary or API is not effective
Constraint:
Team should expect to use X-as-a-Service interaction with many other teams simultaneously whether consuming or providing a service.
Typical Uses:
Steam aligned teams and complicated subsystem teams consuming Platform-as-a-Service;
Steam aligned teams and complicated subsystem teams using a component or library as a service from a complicated subsystem team.
Facilitation Mode: Pros and Cons
Advantages
Unblocking of stream aligned teams to increase flow
Detection of gaps and misaligned capabilities or features in components and platforms
Disadvantages
Requires experienced staff to not work on “building” or “running” things
The interaction may be unfamiliar or strange to one or both teams involved in facilitation.
Constraints
A team should use mode with a small number of teams simultaneously.
Typical Uses
Enabling team helping any other team
Any team helping a Stream Aligned team.
5 Steps: Getting Started with Team Topologies
- Start with the Team
- Identify Suitable Streams of Change
- Identify Thinnest Viable Platform
- Identify Capability Gaps in Team Coaching, Mentoring, Service Management and Documentation
- Share and Practice Interaction Modes and Explain New Ways of Working
Step 1: Start with the Team
What does team need to: Act and operate as an effective team? Own part of the software effectively? Focus on meeting the needs of users? Reduce unnecessary cognitive load? Consume and provide software and information to other teams?