Since 2001, when the Agile Manifesto was first published, Agile software development has become an increasingly popular way of approaching the creation of new software.
Unlike the traditional Waterfall approach to software development, which is a sequential process, Agile uses an iterative approach in which software features are developed incrementally. Contrasting the two methods brings one primary difference to the forefront: with Agile, the feedback loop between stakeholders and the development team is rapid and continuous and customer requirements are constantly validated throughout the process.
This is one of the biggest advantages of Agile software development. Waterfall, in contrast, requires a significant investment up front to try to eliminate unknowns, document the design, and establish a well-defined and complete set of requirements. An meaningful ongoing feedback loop with the customer is much more difficult to achieve using this method.
In this post I’ll provide a brief overview of Agile development. I’ll be discussing Scrum, which is a specific Agile framework, and the basis for the Agile methodology we use here at NetFore.
I’ll also look at six key advantages of Agile for those looking to build a new software application quickly, efficiently and cost effectively.
Agile Development Overview
Let’s start with a quick overview of how Agile works, in this case using the Scrum implementation.
At Netfore we typically begin with a “discovery” phase that consists of a workshop with the customer (called a “stakeholder” in Scrum terminology). The outcome of the discovery process is an agreement about something called a “minimum viable product” or MVP.
What is an MVP? It’s a version of the product that includes just the core set of features required to deploy the product to an initial set of users. The product will not ship to end users without meeting the MVP criteria.
The requirements for the project are captured in a product “backlog” in the form of a list of “user stories”. A user story is a description of a software feature from an end-user perspective. The backlog includes all the user stories needed to create the MVP, plus any additional requirements the stakeholders consider important. The backlog is prioritized so that the MVP items are at the top of the list.
Before starting any development, the stakeholders and development team prioritize and size items and schedule them for a particular development iteration. These iterations are called “sprints”. A sprint can last anywhere from 1 to 4 weeks but the length of time is really up to the organization.
Daily Scrums, demos and acceptance
The team meets daily for a “scrum” to assess progress and address any issues that may be blocking any team member’s progress. Once the sprint is complete, the development team provides a demo to the stakeholders of the stories completed during the sprint. These stories are then assessed against the acceptance criteria established collectively during planning. The stakeholder may choose to accept or reject the completed work. If the work is rejected, then the team slates that item for the next iteration.
The following figure summarizes the Scrum process.
6 key advantages of Agile development
That’s the Scrum process in a nutshell. It’s a method we’ve found to be very effective in delivering software projects of all kinds for our customers. There are many advantages of Agile methods, but here are 6 of the big ones you should consider when determining the process to use for your software development project, whether you’re building it yourself or hiring a software development team to do it for you.
1) Everyone has a shared understanding of the goal
While the concept of minimum viable product is not unique to Agile, it’s extremely important to the success of any project. Having a clearly defined and agreed-upon MVP ensures that the stakeholders and development team agree on the minimum functionality that will allow the product or feature to be delivered to users. This shared understanding feeds directly into the product backlog, which means the highest priority items are fully planned out and slated for the first development sprint.
One caveat: even though the features that make up the minimum viable product are well understood at the start of the project, there’s a good chance this definition will evolve as the project moves forward. That’s part of the process.
2) Continuous feedback keeps the cost of change low
In most cases, a customer can’t be expected to articulate a complete set of well-defined requirements for a new software application. More often than not, customers will add or change requirements as the project progresses and new information comes to light.
Given this reality, continuous feedback between the stakeholders and the development team is essential to minimize the cost of changes to requirements. With the right level of timely feedback, the team can assess what was done, how the changed requirement affects what was done and how to proceed in the next iteration.
When there’s a rapid feedback loop, it ensures the cost of change is low, and the process is implemented with the assumption that requirement flux will happen.
3) Transparency means stakeholders are always in the loop
During the process, tracking tools are employed to track the team’s velocity over the course of the project and provide a view of the remaining tasks (called the “release burndown”). These tools are used to manage the backlog, capture all user stories and estimates, and define acceptance criteria. They are also used to record priorities, estimates and include references to supporting documentation where necessary. Ideally the stakeholder should be able to view the team’s progress at any time along with the current state of the delivery. This information is presented to the stakeholder at each sprint review.
4) Everybody agrees on what done means
The Scrum process ensures that everyone involved has a common understanding of when a particular user story is done. The stakeholder knows that when the team says a particular feature is done, it means that feature could potentially ship. Criteria for defining what done means typically includes items such as automated UI tests, unit tests, etc. When the development team continually meets the definition of “done”, it builds trust between the stakeholder and development team.
5) Value is delivered frequently
Another one of the advantages of Agile development is that the development team only works on the highest priority and highest value items during any given sprint. The work is completed against a set of acceptance criteria established and agreed upon during the planning of the story. This ensures that stakeholders get what they asked for and that there are no surprises once the feature is delivered.
It’s possible to have a misunderstanding or requirements change, in which case the story is bumped to the next development iteration so that it can be revisited to quantify the delta between what was delivered versus what was expected.
6) You continually evolve and improve
At the end of each iteration or sprint a retrospective is held with the team, the purpose of the retrospective is to scrutinize the process to understand where improvements could be made. Specifically, the mechanism used to remain engaged with the stakeholders needs to be continually evaluated to ensure any barriers to information exchange are removed wherever possible. The development team also has an opportunity to improve its own internal processes.
Image credit: Flickr user hatoriz