Growing Generalized Specialists on an Agile Team
It’s difficult for an agile team comprised solely of specialists to be fully productive. If team members are unable to help others with their tasks, the team will not maximize its potential.
The agile community calls team members who are capable of working in a variety of roles generalized specialists. A generalized specialist is not a jack of all trades. It is an individual with deep knowledge in a particular specialization who also has learned to be productive in other team roles.
While we cannot expect our staff to become experts in all areas, it’s possible to teach motivated individuals how to be productive in other roles, particularly those most related to their specialization.
Here are some tips on how to grow generalized specialists on your team.
Teach developers how to automate tests
Test automation is essential in agile, if for no other reason than to support fearless refactoring. We already expect developers to be able to write effective unit tests, so why not leverage their skills to support other necessary test automation activities?
The test automation needs that developers can most easily learn to support include automation for story acceptance tests and application smoke tests. I would hesitate to throw a developer into designing these types of tests without some testing techniques training, but having them automate tests that others have created is a good use of their programming skills. Plus, their software engineering background should reinforce a “treat tests as code” philosophy that will result in more maintainable automation scripts for the team.
Teach business analysts and UI designers how to do exploratory testing
Anyone with strong critical thinking skills, some training, and practice can learn how to become an effective exploratory tester. As testing time is often squeezed at the end of sprints, getting everyone on the team capable of participating in testing efforts can make a huge productivity difference.
Those with strong product domain knowledge, such as business analysts or UI designers, are great candidates. Because much of their analysis and design work is often performed during the first half of each sprint, they may have some spare cycles to help test later on.
Teach testers how to improve user stories and acceptance criteria
While your testers may not necessarily be experts in your product domain (although some of them surely are!), their role demands they understand your software product end to end. This understanding, coupled with their critical eye toward testability, can help make your user stories more understandable, less ambiguous, and easier to implement.
User story acceptance criteria also often goes hand in hand with tests that validate stories, meaning testers will be good at writing appropriate user story acceptance criteria, too.
Teach ScrumMasters how to plug holes
ScrumMasters come in all shapes and sizes, so it is difficult to give specific guidance for how they can broaden their skills, but a good ScrumMaster will seek out roles they can participate in to increase productivity. Spend some time understanding your ScrumMaster’s background to see which role they can best support.