The Agile method of developing software solutions was developed based on real-life project experiences and challenges developers faced while using the traditional waterfall model of software design.
As opposed to the sequential, downward flowing design process of waterfall model; agile method uses an incremental and iterative approach. As it was developed to deal with the many limitations of the traditional method, agile focuses on minimizing project overhead and increasing overall business value.
What is the agile model?
The agile model offers a simpler framework for managing a project and focuses on constant evolution and rapid delivery. It is a more flexible model, in which the design process is broken down into separate blocks and assigned to various teams. The teams are free to incorporate changes if required in an ongoing project. Agile helps in making any changes quicker and the continuous planning and feedback, keeps the software updated at all stages of development.
This model also ensure better visibility into the project progress and ultimately leads to a product that meets the customer’s needs perfectly. To understand the agile model better, here is a brief comparison of a project undertaken and carried out by both waterfall and agile models:
Suppose a company is working to develop a text editor to compete with, say, MS Word. The time allotted for software development and delivery is 10 months. If the company was to adopt the linear, traditional Waterfall method, then:
- The first 1.5 months, or 15 percent of the time, would be spent on research and analysis,
- The next two months on design (20 percent of the time)
- The next four months on coding and testing (40 percent)
- The following two months on system and integration testing (20 percent)
- The last five percent of the time will be devoted to user acceptance testing by the marketing team.
In effect, the customer does not get to see what his product looks like until the end of 10 months. This also means that to make changes, a total undoing of all the work done will be required.
Had the company adopted the agile model, this is how it would be:
- The project is broken down into iterations of same duration, at the end of which a working product is delivered.
- This particular project would be divided into 10 releases, each to be delivered in four weeks.
- So, the team decides on the basic features the product must have when the first iteration is developed.
- The remaining features and enhancements are made in the subsequent iterations.
- At the end of each such iteration, the customer gets to see a working product with the features specified for that particular iteration. The customer can suggest changes and give feedback which can then be included without much of an effort by the team.
In the agile model, the project is divided by features of the project, not in terms of the phases of building it. Every iteration works on one feature and completes it in terms of research, design, development, coding, testing and reworking.
Advantages of the agile model
The advantages of the agile model can be summed up as:
Transparency: Clients are involved in the development process and are encouraged to send in their feedback as and when each stage completes.
Effective communication: Client involvement in the development process, facilitates clear and effective communication between the client and developers.
Flexibility: The agile model accepts and encourages changes. The timescale is fixed just as in traditional model, but the stakeholders can suggest and initiate changes at any stage of the project at much lower cost.
Lower risk: Thanks to the small incremental releases made at predetermined time intervals, any problems or issues with the product can be identified on time. Suppose during the development phase a new competing product has launched in the market, making any of the existing products features outdated, the agile model allows to make changes instantly in the upcoming iteration. Thus, the business faces lower risk of coming out with a flawed or outdated product.
Improved quality: As the project is broken down into manageable units, each team can focus better on delivering the best quality.
Customer satisfaction: After the many iterations and constant feedback, there is a greater possibility to meet the customer’s exact requirement, an error-free product that can lay the foundation for a meaningful business relationship.
Why use the agile model?
A handful of studies cites how companies and clients have benefitted using agile model:
In an online survey of 642 respondents conducted by columnist Scott Ambler, 82 percent said agile projects are more productive and more than 70 percent said that stakeholder satisfaction was significantly higher in such projects.
In an online survey of 3,000 respondents conducted by VersionOne, almost 70 percent admitted increased productivity in agile projects, almost 60 percent there was a significant improvement in quality and 84 percent said that defects had gone down drastically.
After having switched to using agile methods, Salesforce.com reported that 91 percent of their stakeholders believe that the quality of their products has increased. There was a 61 percent improvement in mean release times of projects and a whopping 568 percent increase in the cumulative value delivered in major releases.
Although the agile model might seem like the perfect choice for project development, let us warn you that it has its set of disadvantages. For larger projects, breaking them down into smaller iterations itself might require research and effort that can be time-consuming. Although it keeps cost under control, from a client’s perspectives costs may be unpredictable owing to constant changes in the product. Most importantly, agile method emphasizes on people and collaboration, which means all the problems that accompany managing human resources apply to this method as well. Every client and every project is unique in its requirements and conditions, so make a wise choice keeping in mind both the pros and cons of the different project management methods.
Have you used the agile methodology and reaped benefits in your personal projects? Let us know about them in the comments section below.