One day, at my team’s standup meeting, I declared that everyone on the team was a tester. Then I drew this picture:
Tester is the base class and Developer is the child class. A specialization of a tester. I don’t know if it was the picture I drew. But the devs and tester on that team worked together better than any other team I have been on.
My guess is that everyone felt they were working together to build a quality product. As opposed to devs do some work and tester checks they did it right. We encouraged developers to jump between coding and helping the tester test.
In football, the players on offense are a group of specialists. A quarterback, a couple of receivers, running backs and linemen. The quarterback’s job is to lead the team to the end zone and score a touchdown. His other job is to either hand off the ball to his running back or pass the ball to one of his receivers. The running backs role is to run the ball. Receivers catch the ball. Linemen block the defense from tackling the guy with the ball. But on a football team, if everyone just did their job you are likely not going to win. Sometimes the quarterback has to run the ball or block a defender or even go out for a pass on a halfback option. The one job that all other roles share is receiving, even linemen.
Testing is the receiving of software. The developers are the running backs. The testers are the receivers. The Scrum Master is the quarterback. The Development Manager is the coach. The touchdown is delivering software that provides value.