Agile is a way of managing software development projects that emphasises regular communication and collaboration, rather than strict processes and specification documents. Here we explain what this means for our clients, and when we think it’s the right method to use.
What is agile development?
Agile development is best explained by comparison to the traditional waterfall model of software development.
The waterfall model
In the waterfall model, the project is broken down into several phases. These typically include:
- Requirements gathering
- Planning & design
- Testing & fixing bugs
- Ongoing maintenance
Each phase is completed before the next one begins. The client is closely involved during the requirements gathering and planning phases, but typically not in the development phase. The entire product is delivered to the client near the end of the project.
The agile method
In an agile project, instead of breaking the work down into phases, it is broken down into business requirements. The project then consists of several iterations each lasting approximately 2 weeks, and in each iteration a small number of business requirements are tackled. Each iteration includes:
- Planning meeting
- Design, development & testing (overlapping)
- Demonstration & review meeting
Developers and clients work closely together, with planning and review meetings at the start and end of every iteration. Working software is delivered at the end of each iteration – usually starting with a basic prototype then adding additional features to it over time.
What are the advantages?
Working software is delivered sooner and more regularly, starting with the features that give the highest business value. At any point the client may decide the software is good enough to start using, even if it is not 100% complete – this means they can start getting value from the project much sooner, and start getting feedback from real users.
In each iteration it is up to the client to decide what features should be built next, based on their judgement of which would provide the most value. This does not have to be fixed in advance, so it is possible to adapt the requirements in response to changing market conditions, feedback from users, or simply new ideas.
Detailed planning for each feature is deferred until just before that feature is built, so the team is able to learn from the previous iterations before making important decisions. This also removes the need for large up-front specification documents, which makes the process simpler for everyone involved.
What are the disadvantages?
Without detailed up-front planning, it is not possible to see exactly what will be built before development starts, nor to know exactly when it will be ready. Instead the developers and client representatives must be trusted to make the right decisions for the business as the project progresses. If managers are used to fixed-budget, fixed-scope projects, it may be hard to convince them to accept this approach.
The short time between planning and development in each iteration means decisions must be made quickly. Usually the client will choose a representative with the knowledge and authority to make those decisions, and that person needs to set aside enough time each week to be able to respond quickly.
Which is best for your project?
Agile is best if:
- You need a usable product delivered fast, with additional features to be added later
- You don’t know exactly what you (or your customers) need, so would benefit from prototyping and gradual improvement
- You need to work to a fixed budget or timescales, and are happy to adjust the scope of the work to fit
- The stakeholders are willing to delegate responsibility for decision-making to a single representative, who is able to commit enough time to the project to respond quickly
Waterfall is better if:
- You are rebuilding an existing system, and need the new system to have the same features as the old one before you switch over
- You need a fixed cost and scope for the project, and the requirements are clear and stable enough to be fixed before work starts
- You are willing to spend time and money creating a detailed project specification up front
- Multiple stakeholders have to sign off the specification, and they are not willing to delegate that responsibility
Agile development has become more popular in recent years, with many large IT companies and even the British Government now using it on a regular basis and reporting good results. However, it is a different way of working that will only be successful if everyone involved (both developers and clients) is fully committed to the process.
At Alberon we find our clients really like the agile process. Some find it a bit scary at first, but once they get used to it they like the dynamic way of working, the focus on one key area at a time, the quick turnaround times, and the fact that you get to see a working system quicker.
As a company, agile is our preferred and recommended method, but we are happy to use whichever method is appropriate for you and your project – whether that’s Agile, waterfall, or something in between.