When it comes to creating software in an agile environment, there are inherent risks involved: uncertain priorities or scope due to the rushed nature of agile methods, lack of documentation, not having a solid testing framework in place, and the unpredictable nature of software development. Anticipating all of these risks and having processes in place to mitigate them can help keep your project on track and in budget in an agile environment. In Agile is About Risk Mitigation, Robert Sfeir believes taking a preemptive approach to assessing some of the risks involved with agile software development is essential, and your team can do that by answering some questions before you begin, such as:
- Is there a market for this product?
- Is it a new technology?
- Does our architecture support it?
- Can you deliver it for an appropriate cost?
- Does your team have the skills and resources to design this product?
- Can you get effective feedback to determine when you should address risk?
While being able to answer “yes” to these questions is a good start, there’s more to successful agile development practices than that. Sfeir says, “I believe Agile teams always aim to deliver value by continuously reducing risk.” How is that accomplished though? With the aforementioned risks of agile development involved, the best way to maintain an agile environment, then, is to do your best to recognize, prepare, and address them from the outset.
Project Scope and Documentation
The nature of agile development requires an almost fly-by-the-seat-of-your-pants attitude. That means that you are quickly designing, testing, and releasing iterations, sometimes without a whole lot of planning or documentation. That can be incredibly risky, and this approach can create problems down the road.
First, without thorough planning and a clear project scope, any minor setback can become a major setback. Few things can bust a budget faster than having to spend additional time fixing bugs or glitches that were never even on your radar. Second, a lack of documentation can make it difficult for new people to catch up if they are added to the team. And even for team members that have been there from the beginning, a lack of information can prove problematic. These two risks can be circumvented by not just planning for the unexpected but by maintaining thorough and detailed documentation from the beginning of the project, starting with the scope, through each iteration. Documenting changes and processes keeps everyone involved, which can help reduce misunderstandings and problems.
Further, early lack of planning and documentation can increase your risk when the client suddenly wants to add new features that weren’t originally agreed upon. These unexpected changes can wreak havoc on your project timeline and put you over-budget. In Common Risks in Agile Projects, Donna Raphael-Rene outlines how you can prevent the client’s desire for new features from completely derailing your agile methods:
- Prepare a clearly defined project scope
- Define requirement specifications and acceptance criteria
- Get the stakeholders to sign off on the scope
- Determine what requirements need to be involved in the current phase vs. future phases
- Create a change control process that everyone can agree upon
- Monitor the project process against the scope
Testing and Releasing in an Agile Environment
But clients aren’t the only people who can add to the risk of agile development methodologies. Actual users today are demanding, vocal, and have high expectations. You have to keep them happy by delivering high quality software. When you’re on a rapid, continuous delivery cycle, major flaws can slip through the cracks and reach users if you don’t have the right testing tools in place. The solution is to have a solid test plan in place and testers--preferably ones who mimic your target audience-- available on-demand so they can perform prompt testing and provide quick, relevant feedback to your developers.
Professional testers can find bugs early on to help prevent them from reaching your actual users who aren’t likely to have the patience for you to work out major kinks after you have launched. In 4 Steps to Decreasing Risk in Agile Environment, Alexander Sergeev states, “Continuous testing of important application features will enable you to avoid expensive, global changes that could occur unexpectedly.” Creating a sustainable, predictable testing and delivery pace is a solid solution for reducing the risk of releasing a buggy, substandard software that fails to meet users’ expectations.
Adam Fridman in The Massive Downside of Agile Software Development discusses reducing this risk even further and says the key is for testers, customers, and developers to constantly communicate with each other: “All involved in the project must have close cooperation.” This can be difficult to achieve initially, but it is a must for agile development to take place. Fridman adds, “[The agile] method requires very little planning to get started, and assumes the consumer’s needs are ever changing.” As such, if the consumers’ or testers’ feedback or communications are unclear, a software developer might focus on the wrong areas, wasting time and money in the process.
Expecting and Planning for the Unexpected
Once you have a clear scope, proper documentation, and sound testing practices, you still have to be prepared for the unpredictable nature of software development. How exactly can you plan and prepare for the unexpected, especially when estimating the time it will take you to complete a project is already difficult? A project manager can pad the numbers in an attempt to mitigate unforeseen setbacks, but there is more to it than that when it comes to problems that can negatively impact the timeline and budget. In his article The Problems with Agile Development, Matt Bridges says, “The reason agile product development programs so frequently runover time and over budget is because humans are quite bad at understanding probability and predicting the future.” Because we will never be able to predict the future, Bridges suggests that to achieve the perks of agile development--faster results and higher quality software--you can reduce some of the risks associated with agile development by creating a Risk Key.
A Risk Key categorizes the uncertainties involved with the project, whether they be scope uncertainties or implementation uncertainties. He recommends labeling each uncertainty as either red, yellow, or green. Red-labeled items need to be addressed early on, and Bridges says usually research can help resolve these type of implementation uncertainties. The key uses strong, clear language with a common vocabulary. Again, the takeaway for handling the unexpected is communication.
Agile development is all about quickly releasing high quality software while effectively managing and reducing risks. That may sound like a tall order, but more and more companies are finding that agile methodologies are the way of the future. According to Mark C. Layton, “Agile methodologies, when implemented correctly, inherently reduce risk in product development.” The best ways to reduce risk and keep your project on track include:
- Planning for the unexpected
- Gaining client buy-in on the scope
- Documenting your processes and changes
- Garnering relevant, continuous feedback
- Using and adapting your tools and techniques
- Maintaining open lines of communication between everyone involved in the product, from the client to the testers to the developers to the users
You will never be able to predict the future. You cannot anticipate every setback or every need. You can only do your best at recognizing the risks involved with agile development early on and researching the best ways to address and resolve them. You have to be willing to adapt your tools and techniques to keep up with users’ high expectations. By acknowledging the uncertainties involved with software development, you will be better prepared to handle whatever comes your way.