Software Engineering Team Topologies
Software engineering team topologies is a model for organizing software teams to achieve fast flow and high quality. Matthew Skelton and Manuel Pais introduced it in their 2019 book, Team Topologies: Organizing Business and Technology Teams for Fast Flow.
The model is based on four fundamental team types
- Stream-aligned teams: These teams deliver a specific feature or flow of value to customers. They are typically cross-functional and include members with all the skills and knowledge necessary to deliver the feature end-to-end.
- Platform teams: These teams are responsible for building and maintaining internal platforms that are used by stream-aligned teams. They typically have deep expertise in a particular area, such as infrastructure, security, or data engineering.
- Complicated subsystem teams: These teams are responsible for developing and maintaining complex subsystems of the overall software system. They typically have deep expertise in a particular area, such as machine learning, distributed systems, or algorithms.
- Enabling teams: These teams provide support to stream-aligned teams, platform teams, and complicated subsystem teams. They may focus on tasks such as quality assurance, security, or compliance.
The four team types interact with each other in three core ways
- Collaboration: Teams collaborate to share knowledge, expertise, and resources. For example, a stream-aligned team might collaborate with a platform team to integrate their feature with an existing platform.
- Facilitation: Some teams facilitate the work of other teams. For example, an enabling team might provide quality assurance services to stream-aligned teams.
- X-as-a-Service: Some teams provide services to other teams on an on-demand basis. For example, a platform team might provide a database service to stream-aligned teams.
Conway’s Law
Conway’s Law states that “organizations which design systems (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.” This means that the way that an organization is structured will have a direct impact on the design of the systems that it builds.
Team Topologies and Conway’s Law
Team Topologies and Conway’s Law are complementary. Team Topologies is a way to structure software teams in a way that is conducive to fast flow and high quality. Conway’s Law tells us that the structure of the organization will have a direct impact on the design of the systems that it builds.
Here is an example of how Conway’s Law can impact the design of software systems:
- If an organization is siloed, then the software systems that it builds will likely be siloed as well. This can make it difficult to integrate and maintain the systems.
Team Topologies can help to address this problem by creating cross-functional teams that are aligned with the value streams that they deliver. This helps to break down silos and encourage communication and collaboration between teams.
Benefits of Team Topologies
The Team Topologies model has a number of benefits, including:
- Accelerated flow: By implementing the Team Topologies model, teams can significantly enhance the speed at which they deliver customer features. The model streamlines the process by minimizing handoffs and bottlenecks, resulting in faster and more efficient delivery.
- Enhanced software quality: One of the primary advantages of adopting the Team Topologies model is its ability to improve the overall quality of software products. By implementing clear team structures and responsibilities, the model helps reduce the risk of mistakes and duplication of effort, leading to higher-quality software.
- Improved team well-being: The Team Topologies model acknowledges the importance of team well-being and takes steps to address it. By reducing team cognitive load and fostering a collaborative and supportive work environment, the model promotes happier and more fulfilled teams. This, in turn, can result in increased productivity and job satisfaction.
How to implement Team Topologies
There is no one-size-fits-all approach to implementing Team Topologies. The best approach will vary depending on the size and structure of the organization, as well as the specific needs of the software system.
However, there are a few general steps that organizations can follow to implement Team Topologies:
- Identify the four team types: The first step is to identify the four team types that are needed to deliver the software system. This can be done by analyzing the system’s architecture and identifying the different features and subsystems that need to be developed and maintained.
- Create the teams: Once the four team types have been identified, the next step is to create the teams. This involves identifying the right people for each team and ensuring that they have the skills and knowledge necessary to do their job effectively.
- Define the team interactions: The next step is to define the way that the teams will interact with each other. This should be done in a collaborative way, with input from all of the teams involved.
- Implement and evolve the team topologies: Once the team topologies have been defined, they need to be implemented and evolved over time. This is an ongoing process that should be driven by the needs of the organization and the software system.
Challenges of implementing Team Topologies
While Team Topologies has a number of benefits, there are also some challenges to implementing it. These challenges include:
- Changing the organizational culture: Team Topologies requires a shift from a traditional siloed organizational culture to a more collaborative culture. This can be a difficult change to make, especially in large organizations.
- Educating teams about Team Topologies: Teams need to be educated about the Team Topologies model and how it works. This can be a challenge, especially for teams that are used to working in a traditional siloed environment.
- Changing the way that work is done: Team Topologies requires teams to change the way that they work. This includes changing the way that they communicate, collaborate, and deliver value. This can be a challenge for teams that are used to working in a traditional way.
Software engineering team topologies is a powerful model for organizing software teams to achieve fast flow and high quality. It is a complex model, but it is well worth the investment of time and effort to implement.
If you are interested in learning more about team topologies, I recommend reading the book Team Topologies by Matthew Skelton and Manuel Pais.