What are Complicated-Subsystem Teams?

Created on 2022-09-23 06:10

Published on 2022-09-23 06:12

What are Complicated-Subsystem Teams?

The previous articles taught us about Stream-Aligned Teams and Enabling Teams. Complicated-Subsystem Team is the third type of team within team topologies. Like the enabling teams, these solve a specific set of challenges for the stream-aligned teams. So let's dive right in to find out what they are and how they are solved. 

Any product or system developed by the stream-aligned teams has numerous smaller modules and subsystems. While some of these modules can be built by themselves with the level of expertise they possess, there are a few which can't be developed. 

This is because of their cognitive load. These subsystems require particular skill sets and deep knowledge to be designed and developed. Since stream-aligned teams do not have these, complicated-subsystem teams enter the scenario. 

These teams usually consist of a higher number of specialists who understand the most intricate aspects of the subsystems and are in charge of building and maintaining them. Like the enabling teams, these reduce the cognitive load from the stream-aligned teams. 

One of the main reasons these teams exist separately is that having such specialists in every stream team is impractical. Furthermore, it would mean spending more over a subsystem specifically for every stream team. 

Besides this, the productivity of these specialists also comes into question. After all, having a specialist work only on one or a few subsystems in a single stream is much less productive than having a team of specialists working on subsystems whenever and wherever required.

So, as you see, it's a very niche team type. A few instances of complex subsystems could include facial recognition, AI or NLP-oriented systems, etc. 

Usually, when the complicated-subsystem teams work, they are highly collaborative with the stream-aligned teams in the initial stages. Here, the two determine the various goals and requirements of the subsystems and get a broad idea of how they will achieve them. 

However, after that, they tend to work more independently and do not require much from the other parties. These teams must also be aware of the overall architecture and the rest of the system to integrate their modules seamlessly. 

Besides cost and productivity, one of the most significant advantages of having these teams as separate ones is the developer velocity or the speed with which these systems are delivered. They are incredibly high, and the quality is not compromised either. 

Overall, this is how the complicated-subsystem teams function in tandem with the other teams. We'll look at our final type of team in the upcoming article, the Platform Team.