How can the requirements gathering and management process be improved by implementing Agile techniques?
Too many companies get trapped in “analysis paralysis.” Business analysts spend months putting together huge requirements documents. Then the development team is asked to tell management how long it will take to complete all those requirements. Delays and delivering the wrong thing are the only guarantees.
In Agile development, we must work in small increments and short iterations. Stakeholders are forced to prioritize. This means that at the very least, the most valuable features will get delivered in a timely manner. The development team collaborates with the business to help define each theme or epic, helping business experts understand risks and dependencies in the potential technical implementations. Rough estimates of both business value and story points can be made at the theme or epic level, which helps the business plan (knowing that the plan will have to change, but that is true no matter what development process is used – that’s just reality!)
The development team works with the customer team to identify end-to-end slices through each theme or epic which will deliver value and address the risks of the overall project early. These are turned into user stories, along with the other slices of less critical functionality or less valuable features. Working on the highest-priority stories in the first short iteration means that unexpected issues are identified early in the project, and appropriate steps can be taken to stay on track.
Business analysis involves specialized skills, and I advise Agile teams to get training in techniques such as Ellen Gottesdiener and Mary Gorman’s structured conversations. Many Agile testers know good questions to ask to elicit examples of desired behavior that can be turned into executable specifications to drive coding at the acceptance test level. The testing and business analyst roles have a lot of overlap. Still, teams struggling with requirements (as most teams do) should consider hiring a specialist with Agile requirements analysis expertise to help the whole team gain proficiency in getting the right requirements needed to start testing and coding.
Agile development provides many different ways to maintain a backlog or portfolio of requirements, track the progress of developing those, and making course corrections early and often. Get your developer and customer teams together regularly to discuss whether “just enough” requirements are available for each user story. Try small experiments with new approaches to gathering and documenting business-facing specifications that guide development.
This was first published in March 2012