The Best and Brightest of Agile Methods
Interestingly, some industry thought leaders and consultants believe Agile is a development-only set of methods, neglecting the strong emphasis on project and risk management. I have read these analyses and have given careful consideration to their viewpoints. However, I believe this idea mischaracterizes the Agile methods, totally neglecting the strong emphasis on project and risk management. At its core, Agile methods are about project and risk throughout the entire software development project lifecycle.
Author: Brian Button, VP Engineering and Director of Agile Methods, Asynchrony Solutions
There are two different process models to consider when thinking about project management methodologies: predictive and adaptive.
In the predictive model, most project variables are defined at the start of the project, changes are tightly controlled, and success is measured by adherence to plan. The best predictive processes deliver the original set of requirements on time and on budget.
Adaptive projects don’t try to fix the long term, detailed plan of a project at inception. Instead, they make measurable progress towards short term goals, inspect and adapt the process based on what was learned implementing the short term goals, and set the next goals. Adaptive projects are judged by suitability of the end product to its intended use.
Predictive processes make sense where everything can be known at the start of a project, while adaptive processes work best where change must be a consideration.
Agile methods are the epitome of adaptive processes. They convey the largest advantage in an environment where project requirements change. In these environments, analysis and design work done at the start of the project – with little knowledge about the project – adds significant risk.
Agile teams do analysis and design to create a rough project budget and timeline, decide on the high level functionality that will need to be in the system, and experiment with aspects of the system architecture based on features known at the start. The software development teams then iterate and create features based on the analysis, design, and architecture that were defined. They learn about the pre-work and correct it. While iterating, teams do more analysis, design, and architecture for system parts being built. At the end of each iteration, what has been built is complete, functional, tested, documented, and ready to be shipped. Then, the entire iteration cycle begins again, factoring in the learning that occurred during the previous iteration.
While this may sound chaotic, nothing could be further from the truth. At every project point, an implementation plan exists. High level planning occurs at the start of the project, and the plan is continually updated based on actual progress. Based on the speed of progress, scope and team size may be managed early in a project to ensure that enough functionality is ready by the required date, or the date can be moved to allow required functionality to be completed. Teams are consulted continuously throughout the development cycle to ensure focusing its efforts on essential features suitable to the owner’s needs.
Adopting an Agile method is hard and a significant cultural change. A company’s culture must provide an environment where the people doing the work are empowered to do the work in the best way they see fit. They do estimates, create the plans, dole out work, and are responsible for living up to the commitments they make. The managers of these projects need to become leaders and supporters rather than traditional managers. Managers must have a lot of trust in their staff and it requires a lot of courage and faith on their part. But the payback is huge.
Teams that adopt an Agile approach like Scrum, learn how to deliver software of the highest quality and on schedule, generate feedback to delight their customers, and are able to ship a working system on time and with the specific features that the end-user had desired all along.