Software Engineering: A Modern Approach
1 Agile Teams: Characteristics, Types, and Organization
In this article, we will start by explaining the key characteristics of agile teams. Next, we will introduce the types of such teams that are commonly found in software companies. Finally, we will discuss the well-known Spotify Model, which defines a matrix structure for scaling agile teams.
1.1 Characteristics of Agile Teams
As we studied in Chapter 2, agile teams should be multidisciplinary, self-organized, and autonomous. Typically, an agile team consists of fewer than 10 professionals who follow a specific agile methodology. For example, if using Scrum, they might conduct planning meetings, daily stand-ups, retrospectives, and reviews. As we will see next, agile teams are often also called squads.
An agile team must have the autonomy to put its user stories into production. In fact, this is a central goal of the concept: to create an environment where each team works like a micro-startup with significant autonomy within the organization. To achieve this, it is essential to minimize dependencies between teams.
In organizations composed of agile teams, there are no functional silos, such as a database team, a quality assurance team, a testing team, or a deployment team. Instead, professionals with different backgrounds and responsibilities are distributed across various teams, which become autonomous cells for developing, maintaining, and delivering software.
1.2 Types of Agile Teams
In software organizations, the following types of teams may exist:
- Feature Teams
- Component Teams
- Platform Teams
- Consulting Teams
We will explain each of these teams next.
Feature Teams
Feature teams (also known as product delivery teams) are the most common type of agile team. As the name suggests, these teams are responsible for specific features of the software product developed by the organization. For example, in an online store, there might be teams responsible for the checkout process, payments, product recommendations, and the catalog of products.
To make their mission clearer, some feature teams are responsible for specific personas. For example, a software system with three personas X, Y, and Z may be developed by three feature teams, each responsible for one persona.
In the book Team Topologies, authors Manuel Pais and Matthew Skelton refer to such teams as stream-aligned teams. Regardless of the name, the goal is the same: these teams are tasked with solving problems that make life easier for customers and generate value for the organization.
Feature teams are the most common type of agile team in software organizations. According to Pais and Skelton, the ratio of feature teams to other teams usually varies from 6:1 (that is, for every seven teams, six are feature-focused, while one is not) to 9:1 (nine feature teams for one team of another type).
Component Teams
These teams are responsible for very specific components of a software product. The classic example is teams responsible for the mobile clients of a system, including Android, iOS, etc. Other examples include teams responsible for components whose development requires specific knowledge. For example, we can mention components for video processing, fraud detection, machine learning models, real-time databases developed internally by a company, etc.
Platform Teams
These teams develop internal tools and platforms used by the other teams. That is, they are teams that implement tools for the other teams in the organization. For instance, they may develop tools to facilitate deployment on cloud services, to perform A/B tests, for monitoring application performance, etc.
Ultimately, the goal is to free the other teams from concerns related to the implementation of such technical services, which are not directly related to the business.
The difference between component and platform teams is as follows: a component team develops software that is integrated into the organization’s final product, whereas platform teams develop software that is not part of the final product but supports its development or deployment.
Consulting Teams
In larger software organizations, there might be teams whose purpose is to provide consulting and training to the other teams. For example, they can provide consulting on test automation, usability, software quality, architecture, database performance, etc. They are also often called enabling teams.
Additionally, these teams can assess and recommend new technologies for the organization. They can also recommend the retirement of certain technologies or the update of others.
1.3 Spotify Model
The Spotify Model defines an organizational structure for agile teams, which is particularly useful when a company grows and begins to have dozens or even hundreds of teams. When this occurred at Spotify, they adopted the following matrix organizational structure:
In this matrix model, there are two main types of structures:
Vertical structures, represented by squads and tribes. Squads are the term used in the model to refer to the agile teams discussed earlier in this article.
Horizontal structures, represented by chapters and guilds.
Next, we will detail each of these structures (except for squads, which have already been explained).
Tribes
Tribes are groups of squads that work on similar features or systems. Each tribe has a leader responsible for ensuring that the squads are working in a coordinated way and in line with business priorities. A tribe should have a maximum of 100 members. If this limit is exceeded, another level should be created, consisting of Alliances or Business Units, which are groups of tribes.
Chapters
Chapters are structures that group professionals with the same technical competencies. For example, there might be chapters of frontend developers, backend developers, Android developers, data scientists, designers, etc. These professionals are scattered across the teams on a day-to-day basis. However, at a defined frequency, they meet to exchange ideas, define best practices, etc. As shown in the figure above, the chapters bring together professionals from the same tribe. They have a formal leader who is responsible, alongside the company’s Human Resources department, for issues such as hiring, training, and promotions.
Guilds
Guilds are informal and sometimes temporary communities. That is, they are groups of employees who voluntarily meet to share common interests, such as a technology, architecture, or process. Participants in a guild are not required to belong to the same tribe.
The concept of a guild existed before the Spotify Model was proposed, under names such as communities of practice or interest groups.
Adoption of the Spotify Model
The Spotify Model was proposed in 2012. In 2014, two videos in the form of animations went viral and helped make the model widely known.
Since that time, the adoption of the model, even at Spotify, has gone through major changes and adaptations. This is explicitly acknowledged by the authors of the Spotify Model article:
Spotify is (like any good agile company) evolving fast. This article is only a snapshot of our current way of working—a journey in progress, not a journey completed. By the time you read this, things have already changed.
Therefore, as is normal when dealing with software processes, the adoption of squads, tribes, chapters, and guilds cannot blindly follow the manual. Adjustments to the context are always necessary.
Exercises
1. Describe a problem with organizational structures based on functional silos, that is, separate teams of developers, database administrators, testers, operations, designers, etc.
2. In the article about the Spotify Model, the following examples of squads are cited: (a) to implement the Spotify Android client; (b) to provide payment functionalities. How would you classify these squads according to the types of teams we presented above?
3. Suppose you work in a company organized into squads, tribes,
chapters, and guilds. Then, you have two bosses
(or leaders).
Explain who these leaders are and what the role of each one is.
4. Describe a disadvantage of the Spotify Model.
5. Consider a large online food delivery company. Describe at least three tribes that this company could use to organize its squads.
Check out the other articles on our site.