In a large SCRUM project, Team Specialization may be required. There are three dimensions of Team Specialization.
The first dimension is the need for accomplishing specific tasks. For example, one Specialized Team might be an integration team that has specialized knowledge of continuous integration.. That knowledge could be especially important when and if there is a Release Readiness Sprint.
The second dimension is the need for special skills of single team members. Theoretically, all Scrum Team members are generalists and specialists in that they have knowledge of various fields and are experts in at least one. However, this might not be the case in a large project. Members of Specialized Teams may need to possess specific skills—such as special domain knowledge like security—which may not be available with all large project teams for which it is needed. For a large project, it would be extremely costly to train everybody in all domains. These experts with special skills and knowledge may work as temporary team members in different teams, and sometimes it may be necessary to hire them from external sources. Adding a new team member will impact the team velocity.
The third dimension is that there may be limitations in team flexibility. As mentioned above, in a large project it would be extremely costly to train everybody in all domains. That means that every team will have one or more domains they are good at, a few domains they can and will work on with some inputs and training, and other domains they cannot work on. When it comes to Sprint planning, every team will have a subset of User Stories that are naturally theirs, some that they can work on, and some they can’t work on because they don’t have the knowledge/skills.
The project will have to take the risk that they may not be able to get all the top-priority User Stories done in a Sprint due to these limitations and may need to develop some User Stores of lower priority while waiting for the availability of team members with specialized skills.