Agile development is a phrase used in software development to describe methodologies for incremental software development. Agile development is an alternative to traditional project management where emphasis is placed on empowering people to collaborate and make team decisions in addition to continuous planning, continuous testing and continuous integration.
The traditional method of software development, called the waterfall approach, is a linear system of steps:
- Collect project requirements
- Design the layout
- Write code
- Test and debug
- Present product to client for acceptance testing
- Tweak the product
- Make final delivery
Like a river flowing over a waterfall, reversing course is impossible. Changes made at any stage in the process require beginning anew at whichever step is affected. In other words, if the project requirements change, development must restart at step one.
How Agile Development is Different
The agile methodology uses a different approach. The concept has actually been around since the 1970s, but it did not begin to garner widespread acceptance among software developers until the 1990s. In simplest terms, the agile approach is to break a project into freestanding “chunks” that allow greater flexibility throughout the development cycle.
Agile development typically uses the following framework:
- Collect project requirements, including the features the client needs
- Create a product backlog containing all project requirements
- Divide product backlog into a series of steps, called sprints, that have a one to four week duration
- Test each sprint and deliver to client for approval
- Begin the next sprint
Why Choose the Agile Methodology?
The agile approach to software development offers a number of benefits to the client. These include flexibility, engagement, reduced risk, predictability and improved quality.
In today’s business environment, conditions can change overnight. A new law or regulation may require having additional features built into the software. Explosive growth may require a change in scope. New technology, such as an enhanced mobile device, may need to be incorporated into the software functionality.
With the waterfall method, modifications are — at best — disruptive. Typically, every step of the process will need to be repeated to accommodate each new alteration.
With the agile method, changes can be accommodated during the next sprint. Less duplication of effort translates into reduced costs.
Under the waterfall method, clients typically have little contact with the development team between finalizing the project requirements and conducting approval tests. For a large project, this gap can be six months or more. The client will have little or no idea whether the product is being developed to meet his specifications until shortly before completion, leaving no time for adjustments.
With the agile development method, clients can review the product during each sprint. It may be possible to provide “mini-demos” to review functionality, graphic design or user experience. If tweaks are needed, they can be easily incorporated and reviewed during the next sprint.
Clients bear a variety of risks when they choose to have software developed. With the traditional approach, the risk level remains high from inception to completion. Will the product be delivered on time? Will it meet all of the requirements specified?
The agile approach minimizes risks to the clients. First, the client has frequent, tangible evidence that the project is proceeding as planned. Second, because each sprint item can be reviewed, the client can see that the required functionality is being included. Lastly, because the client can prioritize specific features, these features can be delivered first, allowing the client to maximize the business value received from individual aspects.
By developing a massive project using a series of sprints, the vendor can define the cost of each sprint. This allows the client to understand approximately how much each feature costs, improving his ability to prioritize features.
The client also knows when a specific feature will be available. If sufficient reasons exist, the client might want to begin testing the feature prior to the completion of the project or even release it early.
At the end of the project, most clients find that they receive a higher-quality product. There are several factors involved that help make this true.
- Sprints are more manageable than a bulky project, allowing team members to focus on details instead of becoming lost in the “big picture.”
- Each step can be tested independently, allowing defects to be identified quickly as well as potential future conflicts discovered and avoided.
- Collaboration between clients and developers as well as between team members is enhanced.
- Clients give feedback after reviewing each iteration, allowing developers to not only improve specific features noted, but they can also incorporate what they learned into features not yet developed.
Working software trumps piles of paper
The agile approach is based on the concept that working software is of more benefit to a client than written designs; that the way to measure progress is to see the software in action; and that quality software delivered quickly is valuable to the client. By involving the client in each sprint, the project becomes extremely transparent, allowing the client to have confidence in the development team. Such transparency can easily overcome any communication gaps or internal business philosophies between the client and the developer.