When a team is formed, each team member has a specific area of expertise. In software teams, we have developers, testers, analysts. In meta-teams, we have a group of specialists, each of them being a subject matter expert in their respective area. This is normal for a team as their stepping stone to starting collaborating and delivering products. However, no team can achieve hyper-productivity until it is cross-functional.
Cross-functionality is part of the Scrum definition and is listed as a pre-requisite for Scrum success in Jeff Sutherland book "Scrum: The Art of Doing Twice the Work in Half the Time". Why is it so important? Imagine a software team where all coding for the sprint is complete but the testers are just getting busy with the test cases while thousands of tests are run as part of their regression test. You need developers to be ready to write test cases, automate regression testing suite, and run those cases. You need testers who understanding basic development work, and analysts who understanding both competencies and speak their language.
So how do you turn your team of narrow specialists into a truly cross-functional team? Let us first review the definition: "... interdisciplinary Teams are also referred to as „cross-functional teams. Each team member brings different skills to the table, all of which complement the skills of the others, making it possible to cope with a variety of tasks and find innovative solutions." This definition is fully applicable. In this case, team members "swarm" in supporting each other in accomplishing their sprint objectives so that user stories move through the workflow without obstacles. This approach increases productivity, supports innovation, and creates truly collaborative environment.
As always, the best answer is in identifying the right balance between team members having deep knowledge in each of their areas while having working understanding on adding tasks to other team members' stories. How do you identify the best way to accomplish this? As always, by experimenting, by trying the best ways to increase cross-functionality and collaboration on your teams, and thoughtfully learning from your mistakes. You can try pairing, cross-training, creating mini-teams, and other ways to build Communities of Practice while promoting collaboration and team support. This is a pre-requisite for a healthy Agile environment.