Agile development, in a broad sense, refers to the collection of software development methodologies in which requirements and solutions evolve through collaboration. The mainstream rise of agile received a large boost in 2001 after the release of the Agile Manifesto. It was proposed in an attempt to overhaul the mainstream unresponsive and documentation focused methodologies as popularised in the 60s and 70s. Fast forward to now and we can see just how large this has impacted the development stage – try going through a day as a developer without hearing the word ‘sprint’ or dealing with post-it-notes. Many claim agile as the be-all-and-end-all of methodologies – but just how substantiated are these claims?
Thankfully, agile methodologies have risen to the top for reasons of more than just ‘hype’. Agile does actually bring some great attributes to the table. With an emphasis on adaptive planning, continual improvement, early delivery, and evolutionary development, teams implementing agile frameworks are able to respond rapidly to the unpredictable nature of software development. This flexible and responsive philosophy has claimed quality improvements, increased speeds to market, and lifted team motivation and productivity.
Agile versus Traditional
Agile has it's benefits, and it has left an undeniable mark on software development ever since its widespread adoption – but is it always the best tool for the job? The answer is, of course, it depends – both agile and traditional methods have their pros and cons and careful consideration is required for each project.
Let’s first take a look at the most widely used traditional methodology, Waterfall. Waterfall takes a linear approach to development in which stages need to be completed sequentially - a strong emphasis is placed on structure and documentation. Although we see benefits like complete software deliverables, extensive documentation, and thorough planning, we also have to deal with the inflexible and ‘heavy’ nature of the framework.
Now let’s compare this to one of the more popular agile frameworks, Scrum. Scrum emphasises the rapid delivery of an application in incremental functional components. It does away with the heavy structure and documentation of Waterfall, and instead focuses on being flexible and user-focused. But it is not without its shortfalls, some of which include a high customer involvement requirement, difficulty defining completion dates and budgets, and a lack of suitability outside of small-to-medium sized projects.
So, what’s the best choice: Agile or Traditional?
That’s for you and your team to decide. Each project is independent of one another and therefore each project requires careful consideration of the best framework. Sometimes the answer is obvious - using agile methods for a small local project vs using traditional methods for a large and complex governmental system. However sometimes it’s not so obvious, such as developing a new payment system with a team of 50. Here we could benefit from agile, traditional, or even a combination, reinforcing the need for careful case-by-case selection.
If we’re ever at a point of indifference, we could always consider the final output - will one produce better output than the other? In our opinion, yes, agile will generally take the cake here. Through incremental development under an agile framework, we benefit from incremental feedback. Requirement changes are embraced by agile, whereas under a traditional model stages are completed sequentially and therefore any changes after requirements analysis aren’t welcomed. The responsive and user-focused nature of agile allows for the system to be better tailored to the end-user’s needs of which, in our opinion, results in a better final output.
Agile seems to be the way forward for a growing number of cases. In fact, this claim is backed by multiple studies; Ambysoft’s 2013 Project Success Rates Survey, 2015 CHAOS report from the Standish Group, and a study conducted by PWC found that agile projects had success rates of 15-28% higher than traditional projects. However, one could make that case that projects requiring traditional methods are much larger and more complex than those using agile and therefore failure rates were high from the very start. We are yet to see any conclusive evidence one way or the other.
Agile has jumped into the spotlight over the past 10 years, and for good reason. The flexible, lightweight, and user-focused philosophy has resulted in a new way of thinking about development methodologies. Agile methods are a great addition to the toolbox as in many cases they’re a better fit over traditional methods. However, as we’ve discussed, this is not always the case. In order to achieve your goals, you and your team needs to consider and select the right models and techniques to suit your specific needs.
Wednesday, September 19, 2018