Agile is fast becoming one of the most popular approaches for software development. However, rather than being one specific methodology in the traditional sense, Agile is actually an umbrella term that incorporates many different methodologies – including Scrum, Kanban, Lean Startups, XP, DevOps and Continuous Deployment.
How does Agile Software Development work?
The Agile model is built on the idea of self-organising, cross-functional teams. The main processes include adaptive planning, evolutionary development, early delivery and continuous improvement – all which allow for rapid deployment and change.
For most organisations, the main reason for choosing an Agile approach in their software development is the ability to quickly show a functioning solution in action. The development process is so closely aligned to the operational needs of the business that the software can start to add value immediately – and then have functionality added through subsequent iterations.
The “room by room” principle
We sometimes compare software development to moving house. Using Agile, you are able to move in to the house in stages, one room at a time, figuring out the décor, features and furniture placement as you go. The benefit to this is that you can see what you actually like most about your new house before you make the final decision on how all the rooms will look. You then have the chance to make changes while the movers are still around! For many, this can be more practical than planning and executing an entire move in one fell swoop, with the added risk of not making the best use of all the rooms available.
So what are the reasons why some teams choose Agile, and some don’t? Let’s take a look at some of the most common pros and cons of the Agile approach.
The Main Advantages of Agile
- Continuous visibility “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” – The Agile Manifesto. Because Agile software is delivered in discreet, tested steps, customer satisfaction can be maintained throughout the project lifespan. The customer could be given a working prototype which is effectively enhanced incrementally with the new features shortlisted for each work cycle (sprint).
- Continuous (modular) testing “Working software is the primary measure of progress.” – The Agile Manifesto. Testing is not an “afterthought”, and it is not a post-project panic to unravel a complex completed project. Agile testing is done incrementally as each deliverable chunk is developed, so changes can be implemented rapidly over each short-term step. This often saves considerable time in the long run, as fixes take hours rather than weeks.
- Rapid Delivery “Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.” – The Agile Manifesto. Using Agile methodologies, it is possible to deliver functioning software components and solutions in a matter of weeks. As mentioned earlier, this means that testing is done progressively and any issues can be detected and resolved quickly.
- Effective short-term planning “Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.”– The Agile Manifesto. Agile is focused on momentum, through each short-term stage. If there is a problem that holds up implementation of a feature, then it can be catered for by being planned as part of the next sprint.
- Flexible Change Management “Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.” – The Agile Manifesto. In Agile development, change happens in stages. This makes changes more easily managed and, if necessary, rolled back. Working in discrete steps also means that rolling back can be done quicker and easier compared to other development strategies.Change is not considered negative in the Agile world. In fact – the need for potential change is inherently assumed, right from the initial planning stage all the way through the project. An openness to change helps to ensure the customer gets the end system they need.
The Main Disadvantages of Agile
- Cultural change
Organisations and teams used to alternative systems of development may need assistance to take full advantage of Agile, without feeling like it is being imposed upon them.
Agile requires tight collaboration and a disciplined team, which can stand in stark contrast to more traditional development methods.
- Lack of clarity can lead to problems
As with any development system, Agile depends on clarity of purpose from the client. If the expected outcome is not clear, then the project can go off track. It is up to the experienced practitioner to help to mitigate this potential problem by clearly establishing the client’s expectations, and progressively communicating with all stakeholders throughout each development phase.
- Advanced skills needed
An Agile team works best when it is equipped with skilled, senior programmers. It is not well suited for inexperienced developers – unless these are carefully mentored – as they will be working in a highly demanding, fast-paced environment that needs problem-solving as well as strong collaborative skills.
- Insufficient Training
Inadequate training is sometimes cited as a contributing factor in Agile project failures. Some teams mistakenly assume that the reduced reliance on traditional development processes implies there are no rules. Agile is still a prescriptive model, and training and experience is vital to project success.
Attempting to take on too much in one iteration can lead to the team feeling pressured to perform. However, a seasoned Agile team will know not to take on more than they can realistically handle.