Waterfall – what is that?
Waterfall is the project management approach, where software development process is sequenced. It usually consists of 8 phases – conception, initiation, analysis, design, coding, testing, implementation and maintenance. When each phase is completed, project team can proceed to the next phase.
It is a step-by-step, continuous process, that’s why once a step is completed, it is really difficult to go back to the previous step. Also, there is not much support for changes, so the project plan must be extensive and detailed from the beginning and then followed carefully.
When talking about advantages of waterfall approach, the main thing is the simplicity of the process – it’s easy to understand for everyone. Additionally, clients have an idea of what to expect in terms of project’s size, costs and timeline. We also have to mention meticulous record keeping and detailed documentation that follows traditional methodologies. They might be important for any improvements in the future.
Dangers of waterfall
There are few risks of using waterfall, where fundamental one is the danger of exceeding time and budget. In software development not everything can be fully planned in advance and some unexpected problems may appear. Very often, initial assumptions or requirements might occur to be incomplete or faulty. For example, integrations with third party software can cause a headache, because we don’t have any control over external services. Throughout a project, we can realise that the documentation is incomplete, the third party API itself doesn’t provide desired functionalities, or worse, the API has changed significantly since we’ve prepared our analysis and estimate.
Waterfall doesn’t support changes satisfactorily. Not everyone knows that developers need a formalised procedure before taking action. Every modification consumes a lot of resources, that could otherwise be spent on delivering the agreed scope of the project. Also, testing happens at the end of a project, which means that bugs are discovered really late in the process and the cost of fixing them is much higher. At some point, the budget is fully used, but there are still multitude of tasks left which still need to be delivered under the terms of original agreement. Client pushes to implement all desired functionalities and in the same time software shop wants to finish as soon as possible, without generating more losses. This causes a risk of the lower quality of code and poor morale of a team.
The phenomenon of Agile
Agile came as the solution for traditional waterfall limitations. Its incremental approach completely changed the way of handling IT projects. The main characteristic is the idea of sprints – short iterations that usually last a week, two weeks or a month and consist of planning, coding and summarising, which resembles a tiny waterfall project. At the end of each sprint, project is tested, deployed and future plans and priorities are re-evaluated.
Agile approach gives a greater value for money because of the tasks prioritisation and incremental delivery. This helps to focus on features that bring the most value to users first. What is more, due to frequent testing and early problem discovery, developers are able to deliver a higher quality product. Also, agile gives a way better support for changes. At the end of each iteration, new knowledge is gained and everything is reviewed. It’s the moment where project plan can be updated, which is more reasonable and practical.
Not that perfect
However, agile methodology has some disadvantages. Without a definite plan, the final product can turn out to be different from what was expected in the beginning. That’s not necessarily bad, because client’s needs can change basing on project’s progress and customer’s feedback. Furthermore, documentation can be less detailed, which can sometimes make the onboarding process longer for new team members. Not to mention the fact that the time and cost of a project can’t be predicted with perfect accuracy. They are usually specified as a range of values and that may seem more risky for a client.
Which one is the best?
The only certain thing in software development projects is change, especially in the IT industry – everything is transforming quicker and quicker, on a scale that has never been seen before. While both waterfall and agile methodologies solve complex issues in different ways, it’s the agile approach that supports all those changes in businesslike and functional manner. We’ve expanded our opinion on this topic in our previous blog post “Are you doomed to fail your IT project? Hourly rate vs. fixed bid discussion”. Though, we have to mention, we are not saying that waterfall is simply the worst option on Earth – it will work, if your project is predictable and simple.