Agile and waterfall are two main separate methods for managing the delivery of a software project. Waterfall is the more traditional approach, whereas agile has become more popular in the last few years.
But what are the pros and cons of each? Today, we’re going to take a look, so you can decide which approach might suit your project better. Let’s get started:
What do the two terms mean?
Waterfall means that each phase of a product’s life-cycle is developed in sequence. Essentially, you complete each phase of development in a strict order.
(So, for example, you might complete the phases as plan – design – build – test – production – support.)
In agile development, meanwhile, the order of development is a lot more versatile, and the order may change multiple times according to factors such as staffing, planning, changing goals and any roadblocks that occur.
In an agile project, teams comprising different skillsets – planners, designers, developers, etc – all work on successive iterations of the project. Each iteration is expected to be a fully working product that can be presented to stakeholders.
So what are the pros and cons of each approach?
Agile – Pros
Agile is a more flexible approach by nature. If you’re completing a project in a specific order, then it can be far tougher to make changes to either the planning or the software itself if it’s currently at a different stage. When working in an agile environment, you can choose to prioritize different tasks as and when you think it’s a good idea.
Agile developments encourage more feedback between stake holders and developers. Rather than completing the project and then hoping that stake holders are happy with the results, their feedback can be used to improve each iteration. This almost inevitably leads to a complete project more in line with stake holder expectations.
On the same lines, agile helps prevent ‘silos’ taking place, where one or two developers work on a particular area of the project almost in secret without keeping other members of the teams informed on the work. As a result, these areas may end up needing to be re-worked because of compatibility issues, costing time and money.
Agile – Cons
Agile development is simple on paper, but the reality can be more complex. To manage an agile environment in practice is tough, and requires real commitment from every member of the team. This can take time and effort to implement, and – like any change in process – there will likely be some teething problems.
Agile requires a LOT of communication, and may suit some team members more than others. Remember that every single person working on the project will need to communicate more in an agile environment, both with the rest of the team and with testers. It’s not enough to try and do this; communication must be actively scheduled in. This can be tough to maintain when development becomes more intensive and there’s less time available.
An agile project, as a genuine rule, will have a less predictable outcome by its nature. When feedback is constantly being taken on board and actioned, the end result of the project might well be quite different to the one you envisioned at the early stages! This is acceptable, as long as the key stake holders are happy with the result, but it’s worth knowing.
Agile environments can also be challenging depending on the stake holder relationship. For instance, if you’re a client and having a project completed on your behalf, then you’ll naturally want proof that you’re getting your money’s worth as early as possible. In an agile environment, though, estimating concrete timescales and costs can be tough – simply because the total number of man hours needed might shoot up because of a new change introduced as a result of stake holder feedback.
Waterfall – Pros
They inspire more confidence and security. Waterfall environments tend to give a more concrete idea of what the final product will look like, and as a result they often inspire more confidence for stakeholders. There will inevitably be some compromises or changes by the time the project is complete, but the end result will often be far closer to the initial plans that in an agile project.
The working environment itself can be more flexible. If you’re working with off-site workers, agencies or freelancers, waterfall environments mean less communication is necessary, which means there’s less day to day disruption: this can have a very positive effect on efficiency. As long as the product research and design stages are effective, this can lead to a fast, effective build.
The development process in waterfall projects tend to be better documented, with the methodology more linear and recordable. This can be very re-assuring for stake holders, and can make the process easier to understand for those with no experience in development.
Issues can be picked up earlier. The linear process means that any problems that would have occurred during development will often be picked up at the design stage, allowing the team to make appropriate changes and to prevent the error occurring down the road. This can be a time and money saver.
Waterfall – Cons
It requires clear, upfront requirements. Some organizations and companies aren’t comfortable – or simply won’t know how – to define requirements upfront. It may be, simply, that the stake holders aren’t entirely sure what they want – or, alternatively, they might not know how to express it. This can be an issue if, halfway through a project, the key stake holders realize their requirements are actually different. In a worst-case scenario, this could mean the whole project would have to be re-started.
Issues can take longer to be picked up. The flip-side of less communication is that waterfall environments can mean that potential issues with the development itself aren’t flagged as early. It may be that an error in compatibility, for instance, isn’t picked up for a few weeks – something that would be less likely to occur in an agile development where stakeholder presentations take place regularly.
Major changes can be a problem at later stages. The main con, though, is simply that changes are simply harder to implement later on in a project, especially if the change is major. And, as we mentioned above, these changes are often more likely to occur in a situation where stakeholders are asked to detail their specific requirements upfront, even before they may be sure themselves.
It’s worth noting, though, that in the right situation, waterfall environments can be very effective. If the stake holders know exactly what their requirements are, a waterfall project can produce exactly what is required efficiently and to a lower budget. By planning effectively, there’s less room for the project to go wrong later on.
Get in touch today
The simple matter is that there’s no right answer here. Whether you want to go with a waterfall environment or an agile project will often depend on the nature of your project. Don’t get drawn into thinking one method is ‘better’ – it’s a matter of picking the right approach for the right project to get the best possible results.
If you’re new to the world of app development, of course, the chances are you simply won’t know which approach will suit you better. If that’s the case, get in touch with Iconic Solutions today, we’d love to help you with your next project.