1.1.2 Agile Defined
Agile is an approach in which the solution for a business problem or opportunity can evolve over the life of the project. It promotes:
- Frequent delivery of usable system functionality
- Iterative planning as user needs are more defined
- Delivery of high-value functionality early in the project
- Empowered teams to make decisions and be accountable for taking ownership
- Continuous improvement by incorporating feedback and lessons learned on an ongoing basis
These characteristics enable rapid and flexible response to change and frequent Stakeholder exposure. Consequently, agile lends itself most appropriately to projects in which accurate estimates, stable plans, and reliable predictions are not available in the early project stages.
While some may think agile can solve the issues associated with traditional project management and system development that many organizations face, use of agile should be thoughtfully considered for what it might realistically help achieve based on the organization’s ability and capacity to be adaptive. Agile is a way of thinking and doing with several core principles that should be followed. These include the following six concepts detailed below:
- Iterative development
- User centered design*
- Iterative planning
- Flexible scope management
- Team ownership
- Continuous improvement of processes
*User centered design is not formally one of the principles of agile. However, it is a positive, well-regarded complement to agile processes and is a key tenet for State of California’s implementation of agile.
As depicted in Figure 1-1, agile includes short development lifecycles, also known as iterations, that are repeated over the course of the project. The duration of each iteration may be anywhere from 1-4 weeks as appropriate for the specific project, and focuses on just a portion of the project’s functional scope. Full functionality is built-up cumulatively through a number of iterations, each of which produces a functioning increment of the overall solution. Because working system functionality is produced at the end of every iteration, users have early and frequent exposure to the developing system which provides ongoing opportunities to “course correct” if the system is not meeting expectations.
User-centered design is a frame of thought where user needs are fundamental to every aspect of the project, including conceptualization, planning, and design. Priority is placed on delivering value to users via a solution that meets or exceeds expectations. Instead of developing a solution based on a pre-determined set of requirements, success is defined by creating a system that enables users to complete their business in a way that adds value and makes sense from the users’ perspective. This is done through continuous involvement of the business owner to solicit feedback and create solutions that best reflect the users’ needs. This way of thinking is important to both project management and system development, whether agile or traditional waterfall is followed.
The following are a few benefits of a user-centered design approach:
Solidifying the Business Case
When identifying business problems or opportunities to conceptualize a project, understanding user needs confirm that you have a solid business case. By understanding who the users are, what they need, how their needs could be met, and when the users need a solution (Figure 1-2), a project is justified in simple terms that can be easily aligned to organizational mission and goals.
Prioritizing the Scope
Having a clear picture of when the solution is needed by users allows a business owner to prioritize scope items and determine the best release strategy for their work. By developing and delivering scope items that meet the users’ highest priorities first, the risk of not delivering core functionality goes down significantly, and user satisfaction and probability of project success go up.
Discovering and Validating User Needs
Frequent user feedback through the business owner and the demonstration and usage of functioning product increments help drive development of quality solutions. Feedback is solicited throughout the project lifecycle to discover and ensure user needs are met. Through early and frequent presentation of functionality to the user at the end of each iteration, and actual usage of developed functionality by users, agile teams gain immediate feedback to determine whether they are on track to achieving the product vision. They also use this feedback loop to refine the vision and overall strategy, and adjust future work plans accordingly.
While agile training and education typically focuses on the activities associated with system development, knowing how to manage an agile project is equally important. Within agile, planning must occur at multiple levels, as shown in Figure 1-3. Agile planning should address day-to-day activities, iterations, releases, the entire project, the organization’s project portfolio, and the broader organizational strategy.
A Project Charter should be drafted when initiating a project whether it will follow an agile approach or a more traditional project management lifecycle. The Project Charter for an agile project should contain a concise and specific vision statement that outlines the purpose of the project and what it hopes to achieve. A roadmap describes the prioritized list of functionality which, when developed, will move the project towards accomplishing the vision described in the charter. The roadmap also outlines the project scope elements and the description of each functional element is elaborated upon as learning occurs within each successive iteration. Progressive elaboration is highly encouraged based on the belief that project teams will know the least about what the user wants and how to achieve it at the beginning of a project. The agile approach is to refrain from elaborating on the vision in detail until the project team is ready to collaborate with the user to develop the functionality.
Flexible Scope Management
Agile teams progressively learn more during each iteration to better understand the scope of work and gain more clarity regarding what the users need. The project team is focused on delivering the greatest business value to users first as opposed to delivering all possible functionality at once. This approach requires a flexible project scope when other factors such as time and budget are constrained. An agile project’s end is not based on when the project scope is completed, but rather when the planned time has elapsed and the benefit of releasing resources to begin another development effort outweighs the value of continuing to develop the remaining functionality. Many projects in state organizations may not be afforded autonomy to manage the project scope in this manner; in those cases, it is vital for the team to understand and differentiate the “must haves” from the “nice to haves” early in the planning effort. This facilitates delivery of must-haves early in the development cycle to provide users the greatest benefits as soon as possible.
Agile teams consist of members who represent the users as well as those who possess the technical skills necessary to develop the solution. The team works together to plan, analyze, design, develop, test and integrate functionality within short development cycles. Agile teams decide how the work will be accomplished in order to best satisfy user needs. In this way, they assume accountability and ownership for delivering a quality solution.
In order for team ownership to take root, project teams must be empowered by management to operate independently. Management trust and support of change is equally important to building an effective team and the overall success of an agile project.
Continuous Improvement of Processes
At the end of each iteration, agile teams receive immediate feedback on their work from Stakeholders and users through a product review meeting. In addition, agile teams typically inspect their processes, tools, communication, environment, and other project management related issues every iteration. The team makes adjustments immediately which are leveraged in the next iteration. This continuous improvement increases the team’s ability to produce desired outputs by focusing on quality assurance. As soon as one iteration ends, a new one begins.
Updated: September 22, 2017