Team Topologies: Organizing Business and Technology Teams for Fast Flow
Rate it:
Kindle Notes & Highlights
5%
Flag icon
As the complexity of the system increases, so, generally, do the cognitive demands on the organization building and evolving it.
8%
Flag icon
relying on the org chart as a principal mechanism of splitting the work to be done leads to unrealistic expectations.
12%
Flag icon
an organization that is arranged in functional silos (where teams specialize in a particular function, such as QA, DBA, or security) is unlikely to ever produce software systems that are well-architected for end-to-end flow.
12%
Flag icon
Communication paths (along formal reporting lines or not) within an organization effectively restrict the kinds of solutions that the organization can devise.
14%
Flag icon
One key implication of Conway’s law is that not all communication and collaboration is good.
15%
Flag icon
Communication within teams is high bandwidth. Communication between two “paired” teams can be mid bandwidth. Communication between most teams should be low bandwidth.
16%
Flag icon
don’t select a single tool for the whole organization without considering team inter-relationships first. Have separate tools for independent teams, and use shared tools for collaborative teams.
17%
Flag icon
an organization should never assign work to individuals; only to teams.
18%
Flag icon
Every part of the software system needs to be owned by exactly one team. This means there should be no shared ownership of components, libraries, or code.
19%
Flag icon
Reward the Whole Team, Not Individuals
19%
Flag icon
Looking to reward individual performance in modern organizations tends to drive poor results and damages staff behavior.
19%
Flag icon
Restrict Team Responsibilities to Match Team Cognitive Load
20%
Flag icon
A simple and quick way to assess cognitive load is to ask the team, in a non-judgmental way: “Do you feel like you’re effective and able to respond in a timely fashion to the work you are asked to do?”
21%
Flag icon
identify distinct domains that each team has to deal with, and classify these domains into simple (most of the work has a clear path of action), complicated (changes need to be analyzed and might require a few iterations on the solution to get it right), or complex (solutions require a lot of experimentation and discovery).
21%
Flag icon
If a domain is too large for a team, instead of splitting responsibilities of a single domain to multiple teams, first split the domain into subdomains and then assign each new subdomain to a single team.
21%
Flag icon
a team responsible for a complex domain should not have any more domains assigned to them—not even a simple one.
21%
Flag icon
avoid a single team responsible for two complicated domains.
21%
Flag icon
Instead of choosing between a monolithic architecture or a microservices architecture, design the software to fit the maximum team cognitive load.
25%
Flag icon
At the end of the day, technology teams need to invest in proven team practices like continuous delivery, test-first development, and a focus on software operability and releasability. Without them, all the effort invested in a team-first approach to work and flow will be greatly undermined or at least underachieved.
33%
Flag icon
A stream-aligned team is a team aligned to a single, valuable stream of work; this might be a single product or service, a single set of features, a single user journey, or a single user persona. Further, the team is empowered to build and deliver customer or user value as quickly, safely, and independently as possible, without requiring hand-offs to other teams to perform parts of the work.
35%
Flag icon
An enabling team is composed of specialists in a given technical (or product) domain, and they help bridge this capability gap. Such teams cross-cut to the stream-aligned teams and have the required bandwidth to research, try out options, and make informed suggestions on adequate tooling, practices, frameworks, and any of the ecosystem choices around the application stack.
36%
Flag icon
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 subsystem.
37%
Flag icon
The purpose of a platform team is to enable stream-aligned teams to deliver work with substantial autonomy. The stream-aligned team maintains full ownership of building, running, and fixing their application in production. The platform team provides internal services to reduce the cognitive load that would be required from stream-aligned teams to develop these underlying services.
37%
Flag icon
“Ease of use” is fundamental for platform adoption and reflects the fact that platform teams must treat the services they offer as products that are reliable, usable, and fit for purpose, regardless of if they are consumed by internal or external customers.
43%
Flag icon
tightly coupled architectures negatively influence the capacity of having autonomous teams with clear responsibilities.
50%
Flag icon
What must be avoided is the need for all teams to communicate with all other teams in order to achieve their ends; just as a jazz band coordinates the music it plays, we should expect to carefully curate the communication that takes place within an organization.
50%
Flag icon
Collaboration: working closely together with another team X-as-a-Service: consuming or providing something with minimal collaboration Facilitating: helping (or being helped by) another team to clear impediments
51%
Flag icon
The collaboration team mode is suitable where a high degree of adaptability or discovery is needed, particularly when exploring new technologies or techniques. The collaboration interaction mode is good for rapid discovery of new things, because it avoids costly hand-offs between teams.
51%
Flag icon
A team should use collaboration mode with, at most, one other team at a time. A team should not use collaboration with more than one team at the same time.
51%
Flag icon
The X-as-a-Service team interaction mode is suited to situations where there is a need for one or more teams to use a code library, component, API, or platform that “just works” without much effort, where a component or aspect of the system can be effectively provided “as a service” by a distinct team or group of teams.
53%
Flag icon
The facilitating team interaction mode is suited to situations where one or more teams would benefit from the active help of another team facilitating (or coaching) some aspect of their work. The facilitating interaction mode is the main operating mode of an enabling team (see Chapter 5) and provides support and capabilities to many other teams, helping to enhance the productivity and effectiveness of these teams. The remit of the team undertaking the facilitation is to enable the other team(s) to be more effective, learn more quickly, understand a new technology better, and discover and ...more
53%
Flag icon
humans work best with others when we can predict their behavior.
53%
Flag icon
Teams interacting using the collaboration mode should expect to have high interaction and mutual respect with the collaborating team.
54%
Flag icon
Teams interacting using the X-as-a-Service mode should expect to emphasize the user experience of the thing being provided as a service.
54%
Flag icon
Teams interacting using the facilitating mode should expect to help and be helped.
56%
Flag icon
Use the Collaboration Mode to Discover Viable X-as-a-Service Interactions
Jason
AKA Conquer and Divide
56%
Flag icon
Collaborate on potentially ambiguous interfaces until the interfaces are proven stable and functional.
56%
Flag icon
Change the Team Interaction Mode Temporarily to Help a Team Grow Experience and Empathy
56%
Flag icon
Use Awkwardness in Team Interactions to Sense Missing Capabilities and Misplaced Boundaries
57%
Flag icon
Collaboration: two teams work closely together for a defined period to discover new patterns, approaches, and limitations. Responsibility is shared and boundaries blurred, but problems are solved rapidly and the organization learns quickly. X-as-a-Service: one team consumes something (such as a service or an API) provided “as a service” from another team. Responsibilities are clearly delineated and—if the boundary is effective—the consuming team can deliver rapidly. The team providing the service seeks to make their service as easy to consume as possible. Facilitating: one team helps another ...more
57%
Flag icon
the most important thing is not the shape of the organization itself but the decision rules and heuristics used to adapt and change the organization as new challenges arise; that is, we need to design the design rules, not just the organization.
57%
Flag icon
Collaboration is good for rapid discovery and avoiding hand-offs and delays, but the downside is a higher level of cognitive load.
57%
Flag icon
X-as-a-Service is best for situations where predictable delivery is more important than rapid discovery.
57%
Flag icon
Collaboration is expensive. Unnecessary collaboration is particularly expensive, especially as it can mask or hide deficiencies in underlying platforms or capabilities. Any ongoing collaboration activity must, therefore, be justified as valuable discovery, valuable capability building, or valuable deficiency-filling activity.
65%
Flag icon
many organizations are unaware of how a poorly chosen “reorg” can destroy an organization’s strategic capability for innovation and sustainable software delivery.
Cliff Hazell liked this