No man is an island. Everyone needs a team. The development team is a self-organizing, cross-functional team that creates a potentially marketable version of a product after each iteration. The team size is 3-9 members. The team of fewer than three people doesn’t need such approach to be applied. Whereas the team of more than 9 members will have problems with coordination and interaction.
There is only one role inside the team - a developer. No other positions, roles or sub-teams are required.
But why is that and who is the Developer?
We often think that developer is a programmer. Actually, that’s not entirely true. MacMillan vocabulary, for example, gives a broader understanding of the term - someone whose job is to create new ideas and products. Scrum says that the developer is one of the product creators.
Sometimes you can read in the media: Developers accelerated using Scrum, which led to failures in QA work. But this situation has nothing to do with Scrum, because according to this approach the team should issue a potentially ready-to-sell product, not a piece of code that requires testing. Testing and deployment are included in the concept of a ready-to-sell product and must be performed within the team. Here we go to the next term.
A cross-functional team is the team that have all the knowledge and skills necessary to create a ready-to-sell product. When it comes to software production, the team consists of designers, analysts, programmers, testers, devops-engineers, ect. In other words, all that’s necessary to complete the task. If some specialists are not in the team, there is a need to refer to external resources working by the different rules. At this point, the development slows down or stops. If a team is completely autonomous, both in terms of knowledge and authority, it can work at its own pace and the result depends only on the team. If a team depends on external people who have other goals, priorities and rules, it will be very difficult to achieve an effective result. The autonomy in decision is provided by the product owner, the autonomy in skills is provided by the team’s cross-functionality.
Here we face the contradiction:
- We need a team of people with all the skills.
- The team size is from 3 to 9 people, otherwise communication suffers.
Moreover, people can get sick, go on vacation. Skill overlap is required. So, what do we do? To resolve this contradiction, it is necessary that people not only perform one task, but can help other team members. Instead of narrowly targeted specialists (I-Shaped people), the team requires people with broad qualifications, T-shaped personalities (T-Shaped people or generalists). Scrum does not require all people to be T-Shaped and have all the skills. It is important that all the necessary skills are inside the team. And it’s up to the team to decide what combination of people and skills is needed to achieve this.
Cross-functionality, small team size, broad skills, substitutability and focus on the product as a general result, lead to the absence of positions or roles within the team. Such division will bring in problems, rather than help the team.
Without the posts, but with overlapping and helping each other, the team itself begins to decide how it works better. A self-organizing team appears - the group able to decide how to manage its daily tasks. The collective mind, which is more powerful than the individual.