chrisharvey - Fotolia
One of the many benefits of Agile software development is teams can change requirements, design, development and test plans as needed to keep the application delivery on time and on budget -- all while creating a quality product that the customer likes to use. Conversely, less planned-out software development approaches can seem comparatively random or even chaotic, resulting in a sloppy product.
Agile enables software product changes to occur as frequently as necessary, well beyond initial delivery. An Agile methodology keeps the application or product relevant through shifts in the target market or company roadmap, and changes arrive in the customer's hands in a shorter time period.
Change, for all its usefulness, is still difficult to manage -- and it's easy to get wrong. Follow these 10 tips to successfully implement iterative change management in Agile software development systems. They range from how to treat software requirements to a methodology for iterations and the sprint backlog, as well as ways to make user stories better and -- always -- keep developers and testers in the loop.
1. Embrace change and make adjustments
Non-Agile methodologies make an implicit assumption that requirements are final and that a change management process can accommodate only minor variations in them. Design requirements, also called acceptance criteria, are subject to constant, planned change in Agile iterations. Agile enables product managers to demonstrate working software and elicit customer feedback. If the user needs aren't met, the product owner and developers make change requests to the application code, and possibly alter the delivery schedule. Thus, change management is an inherent part of the Agile software development process.
2. Design to customer expectations
The ability to demo working applications means you can design for customer expectations. Rather than create and develop an application workflow based on only written requirements or feature descriptions, keep the customer informed of the application and its functionality. If a development team spends six months working on an app and delivers it on time to the customer, that's a good thing -- as long as that application aligns with the customer's expectations. If it doesn't meet user needs, the delivery is not successful. Keep the customer in the loop and manage requirement changes accordingly for long-term application success.
3. Emphasize user stories from the start
With Agile development, app-dev teams address the highest-value stories in the earliest iterations. Higher-value stories include those that are the most visible or most necessary for customers, or ones that are technically challenging. The earlier the dev team addresses technology challenges, the better the customers will understand how the application functions. This user story prioritization also helps manage delays and changes earlier in the development cycle, rather than at the end. It's far easier -- and less costly -- to go through both small and significant changes at the beginning of the application's development cycle than once a great deal of code is completed.
4. Review and prioritize changes
When product owners introduce changes during coding iterations, they must prioritize them for the development team. Compare existing stories to all upcoming changes, and then determine how developers can logically and efficiently code them with the least interruption and time. Don't simply drop changes onto the planning board. In a review, evaluate the design approach for each change to ensure it fits in with the existing application code. Otherwise, significant changes will require even more time and updated stories.
5. Manage between sprints
Avoid change management in Agile projects in the middle of an iteration, when planning and coding cycles are underway. Plan out changes across future iterations as needed, adding change requests to the sprint backlog. Give the development team time to look over upcoming changes and synchronize its work to keep coding and the application release on schedule. Surprise changes can degrade software quality. Plan within the structure of your Agile sprints.
6. Keep user stories updated and accurate
The project manager or product owner must keep stories up to date with accurate descriptions and acceptance criteria. There is no bigger waste of time than when a developer writes code to the wrong story details. Not only does that scenario interrupt productivity, it frustrates all members of the software development team. Make Agile change management a rapid, immediate task to ensure accurate user stories.
7. Communicate with developers
Share any design changes with the development team, and schedule them into an iteration. During a crisis, it's tempting to skip this step. However, if you don't communicate changes to developers, they simply don't get done. If you don't provide details on the change in the story, you're unlikely to get the output that you expected. Take the time, as early as possible, to talk to the development staff about a change coming in from the customer.
Be wary of promising a feature to a user unless you've verified with a developer that it is possible. Customers might not be happy when they don't get an immediate "yes," or even get told "no," but that's not the worst-case scenario. Just see what happens when you promise a feature you then cannot deliver.
8. Collaborate with testers
When you communicate with the development team about changes to features and stories, don't forget to include the QA and software testing members. Never assume the developer will update the story information for you -- do it yourself and make testers part of the change discussion. Provide the QA team with as much information as possible, which they can use to create more effective tests and improve the application's quality. Better understanding leads to more thorough test coverage.
9. Handle changes efficiently
In some gated development approaches, teams handle changes through a change control board, which discusses and then accepts or rejects proposals. This method can take an excessive amount of time, counter to the Agile approach.
With change management in Agile, teams need efficiency. Don't wait days, weeks or months for a change decision from a set board. Product owners must gather the development team together to discuss the change.
10. Manage customer expectations
The project manager must communicate with customers prior to application release, but also during the course of development. Customers should understand what to expect in the release, what changed and why. The more a customer is aware of what's coming their way, the better prepared they will be for the release. The element of surprise doesn't mesh with business success. Communicate what is in a release, especially if it requires demos or training sessions.
Editor's note: This article was originally written by Nari Kannan in 2011, when Kannan was chief delivery officer of V-Soft Consulting Group Inc. Amy Reichert updated and expanded the article in 2019, adding more advice for adopters of the Agile methodology.