I was recently involved in a discussion regarding the concept of cross functional Scrum teams. The argument was presented that if you have a team with testers, BAs, and coders, does it make sense for testers to code, BAs to test, and coders to gather requirements? This seems to go against what these individuals do well and ultimately truly want to do. I think those are fair points, but on a Scrum team, the team is really presented a goal, and they must determine how to get there.
Let’s look at the game of basketball. The goals of basketball are very simple, get the ball through a hoop and prevent your opponent from doing the same. You have a team of 5 players on the floor and the team must figure out how to do this. The traditional basketball team is made up of a center, a power forward, a small forward, a shooting guard, and a point guard. These positions all have areas for which they are responsible. The center and forwards play close to the basket and are responsible for rebounding and points near the hoop. The point guard handles the ball and is the floor general. The shooting guard has backcourt responsibilities and looks to create baskets from the outside, either through a jump shot or a drive to the basket. This is an oversimplification, but close enough.
With that being said, there are times when the situation in the game changes and the shooting guard may need to go inside and fight for rebounds. The point guard may get trapped in the backcourt and need to pass to someone else to bring the ball up-court, the center may be left along at the top of the key and be forced to take jump shorts. So essentially, the shooting guard is playing the role of the forward, someone else is taking the role of the point guard, and the center is taking the role of a shooting guard. To accomplish the team goal of scoring and preventing the other team from scoring these real time adjustments and cross functionality must take place.
Similarly, on a Scrum team, the coders should be doing the coding, the BAs should be performing the analysis, and the testers should be testing, in general. However, the team should have a goal and if to accomplish the goal, someone needs to help with the testing, or a developers needs to gather some requirements, or a BA should need to get into the code (gasp!), the team should be ready and willing to step in and fulfill the overall needs of the team.
(LeBron James - Cross functional NBA All Star)