Since the time Agile software development model entered the scene, it has generated a controversy in the community. Agile evangelists believe that the methodology helps deliver software faster and manage customers’ priorities better than the other approaches. Their opponents claim that Agile undermines the existing good software development practices.
So, who is right? For a customer, it may be hard to understand if their project needs Agile. Even for a question as simple as ‘What is Agile software development?’, developer-oriented sources often give the answers that sound like gibberish for those not in the know. In our article, we aim to explore Agile software development from a customer’s point of view, highlighting its benefits and pitfalls for a project.
The core values and principles of Agile are defined in the Manifesto for Agile Software Development published in 2001.
To understand if Agile suits the needs of your project, let’s compare it with the waterfall model, a more traditional software development approach. Applying waterfall, the customer and the vendor set the requirements and determine the project scope from the very start of the development process, and stick to them until the product release. As every step is predetermined, risks are mitigated to a minimum.
In the case of Agile, the customer has space for changes. The scope of the project may be rather vague at the beginning, but it can be modified on any stage and the customer will get what they want. In waterfall, it is not until the product is released, when the customer sees that it needs some changes, sometimes significant ones. This makes the cost of introducing changes in Agile much lower than in waterfall as they are introduced gradually in the course of the project and fewer features may require redoing at the end.
Ambysoft’s 2013 Project Success Rates Survey shows that the Agile methodology has a 64% success rate compared to just 49% for the waterfall model in all industries. This is due to such factors as reduced time to market, lower cost of changes and better customer’s satisfaction with the product. As a result, waterfall loses to Agile in popularity with more and more companies opting for Agile worldwide.
Let’s consider how the Agile software development process goes and what role the customer plays in it.
An agile-based project is divided into the following stages:
The working software is released after each iteration. This way, the product gets several releases. After each release, new features can be added, and the software gets improved until it fully satisfies the customer’s expectations.
To understand how Agile is applied in reality, consider an example of an online taxi booking service. The service provider may start with a simple web application allowing users to book a taxi. This minimal functionality is enough to start the service provision. Later on, new options may be added, such as automatic route learning, setting requirements for vehicles (air conditioning, POS-terminal), users’ feedback. Gradually, the provider may enrich its service with new functions and increase users’ satisfaction with it.
Let’s consider the benefits the Agile software development model has:
These benefits significantly contribute to the project success provided that the collaboration between the customer and the developers is effective.
Now, let's consider what may go wrong in Agile:
Most of these pitfalls are caused by the improper Agile implementation. The way out is sufficient training on Agile methodology principles and their observation by both developers and customers.
At first, outsourcing software development with Agile seems tricky. The customer may wonder how to settle payment issues with the developers. Basically, Agile projects are based on the Time and Material (T&M) pricing model, where the developers get paid for the actual efforts spent. How can the customer be sure that they will not deliberately prolong the project flow? If the project scope is vague, are there any guarantees the customer gets what they want in the end?
Taking a closer look at these questions, it appears that the Agile methodology can be successfully applied to outsourcing software development efforts. The customer may fix the iteration duration in advance and impose penalties for not meeting the iterations goals. This way, the developers will hardly deliberately procrastinate the product delivery. As for guarantees, the developers warrant that the working code produced in each iteration meets the requirements developed for that iteration. This way, the customer may be sure that the final product will perform as required.
The Agile family consists of the following methodologies:
Scrum – an approach where the development process is split into short (2-3 weeks) incremental interactions (called sprints), project progress is constantly tracked, and planned meetings with the customers and developers are regularly conducted.
Kanban – an approach based on a visual representation of the work in progress and limiting tasks taken in an iteration to meet the iteration goals and avoid the development team overburdening.
Lean – an approach focused on minimizing waste in the software development (excessive functionality, downtime in the development process, unclear requirements), promoting efficient use of team resources, and concurrent teamwork.
XP (eXtreme Programming) – an approach that is rising traditional software development methodologies to the extreme level. It advocates software releases in short intervals (1-3 weeks) and pair programming with one programmer writing the code and the other one reviewing the line of code written.
DSDM (Dynamic Systems Development Method) – an approach focused on rapid software delivery deploying the useful 80% of the system in 20% of the time.
Crystal – a family of sub-methodologies that scales projects on the basis of their size and criticality, applying different sub-methodologies respectively.
FDD (Feature-Driven Development) – an approach where the overall software model is created first, followed by preparing a list of features required, planning, designing, and building by feature.
Now, as you know what Agile software development is, you can assess its benefits and pitfalls to decide if it fits your project. Opt for Agile if you appreciate the ability to introduce changes at any project stage and get the software tailored to your needs to the maximum extent. However, you should be ready to cooperate with the developers actively for the project to succeed.