14.2. Definition
Agile is an iterative short process focused on customer feedback and satisfaction. In such processes, the customer is allowed to verify that the features are being developed as they want and to suggest improvements. It also offers the customer the opportunity to release the product or software earlier than originally planned if the version presented at the end of a cycle is deemed good enough. This is one of the many reasons Agile is favoured for software development. Agile products can be brought to market quickly and then continuously improved with subsequent updates. For many years, some “traditional” and Agile project managers viewed each other with a certain amount of skepticism about the value of each other’s methods. However, in recent years, project managers have seen the value of the techniques used in both of these two “camps” of project management. As a result, it is not unusual to see the design of a building using Agile techniques, and software development projects conducting a traditional risk analysis.
In the world of software development, a related methodology, Agile, is becoming increasingly popular. Although Agile had its roots in software development, companies have also expanded its use into a variety of project types, including product development, capital projects, and service projects.
There are many types of Agile processes including:
- Agile Scrum: Designed for completing complex projects, as described on ScrumGuides, Scrum is the most widely used form of Agile. When people talk about Agile, they are usually talking about Scrum, which means a framework that people choose to conduct projects in an agile way. In the scrum framework, people and teams are optimally structured to deliver value in a collaborative way. Scrum includes Values, Developers, Owners, Teams and Masters. The scrum master here is equivalent to the project manager in traditional PM, while the scrum team is the project team and the customer is the product owner.
- Extreme Programming: Emphasizes short development cycles with frequent releases of software for evaluation, after which a new development cycle begins. It is the most successful of agile types as it focuses on customer satisfaction. You can read more about extreme programming at “Extreme Programming: A Gentle Introduction“
- Rapid Product Development: Emphasizes “simultaneous, coordinated activities by multi-functional teams, striving for smooth transitions between phases for the most rapid time-to-market” (ORC International: Expert Advisory Services, n.d.). You can read more about Rapid Product Development in this “Introduction to Rapid Product Development.”
All forms of Agile emphasize an iterative approach (Figure 14.1) to product development, with the project specifications evolving along with the customer’s notion of the software requirements. A project starts with a conversation between the developer and the product owner about what the customer wants the software to do. In Scrum terminology, the customer is the product owner, and the features that the product owner wants in the software are known as product stories.
With a description of the product stories in hand, the Agile developer gets to work, creating pieces of software that address individual product stories. After a one- to two-week cycle of development (known in Scrum as a sprint) the developer hands off the new software to the product owner so she can try it out and make suggestions for improvement. The developer then begins another sprint, incorporating those suggestions into a new iteration. After every sprint, the product owner has the chance to redirect the team to new product stories or to revise the team’s understanding of the existing product stories. Through these repeated interactions, which provide fast, focused feedback, the developer and the product owner zero in on a software application that does what the product owner needs it to do. If time and money are tight, as they often are, the product owner has regular opportunities to make choices about which product stories are the most important, and which can be dispensed with if necessary.
Agile development is essentially a learning process through which the developer and the product owner create a shared understanding of how many features they can create, given the allotted time and money. It’s very much a living order approach to project management, in that the early stages involve some ambiguity and many unknowns. According to Robert Merrill (2017), a Senior Business Analyst at the University of Wisconsin-Madison, and an Agile coach, “Agile is a way to manage projects in the face of unpredictability and constraints—often very rigid time and budget constraints. The fast feedback allows the team to create the best possible software within the given constraints” (Merrill, 2017).