Agile vs Waterfall
There are several approaches and methods to managing a software development project, but the most popular ones are Agile, Kanban, Scrum and Waterfall. The approach and the method are chosen based on the answers to the following questions, for example: What is the task type? What is the project’s size? What timescale is needed? And, what is the budget? The correct approach and method will also yield the best results for a project and the whole development process.
We will now take you through the approaches and methods in more detail.
The Agile approach is a very iterative approach to project management. This means that you can adjust and amend your project as you go along, which helps to increase the value of the project you are working on.
Principles of the Agile approach:
- People and their interactions are more important than processes and tools
- It is better to create a working product, rather than creating documents
- Collaboration with the client is vital
- Reaction to changes is more important than following the basic plan
- Prioritize tasks
The biggest advantages of the Agile approach are that it’s empowering to individuals, it’s collaborative, you’re always improving your work, you get to hear about new ideas from the team, and you get great regular feedback.
Additionally, according to Agile, a client would be able to launch the first version of an application within a short period of time (one week to one month), while the developers continue to work on the application. Parts of the application may be modified in order to match the market and to make the project more successful in time. So, you wouldn’t necessarily have to wait until the whole software development process is complete to release a product.
On the other hand, Agile doesn’t really suit a project if you have a generic project that isn’t too time demanding, you’re not in a collaborative team, if you have to have management approval at every stage in the development cycle, and your team doesn’t want to use the approach anyway.
Within the Agile approach there are software development methods, we will now look at the most popular ones.
Team size: Up to, or less than, 10 individuals
During a Scrum the main project is split up into much smaller chunks, also known as goals, that must be completed in a particular time span. These time spans are known as sprints which are usually no more than one month long, and are typically 2 weeks long.
Each day the whole team completes a 15-minute progress check, also known as a daily scrum, where they discuss how the smaller goals are going.
At the end of the sprint there is a sprint review. During the sprint review the team checks the work they have done, and they do a retrospective review to see where they can improve on their work next time.
The whole project is usually led by two people: Product Owner and Scrum Master (team lead).
Team size: Up to 3 individuals
The Kanban method is when the developer uses a task board, which has ‘To do’ and ‘Done’ sections on it, to help visualise the development process for the team.
Tasks are placed in a particular section to start off with and are moved to a new section when they are completed.
This type of method is useful because the team can see exactly what is happening at any one time, and you can see what may need more work.
Scrumban is a mixture of two methods: Scrum and Kanban.
Scrumban is used when the product owner is not active or there is no Scrum Master. In this method the work starts with a task board. The key difference between the traditional Kanban board and Scrumban task board is the number of sections the Scrumban board has, the task board has the following sections: ‘To do’, ‘Doing’, and ‘Done’.
Task planning takes place when it is needed, and especially when there are only a few tasks left in the ‘To do’ section. There are no fixed roles in this approach, nor is there a person setting all the tasks.
The moment a developer finishes their work, they are free to choose the next task to work on. So, in this case all the team members work equally. Plus, each team member can work on one task at a time.
The methods mentioned above are flexible methods, which are universal and can be applied to any project. These methods do depend on the client’s time and budget, so this should be considered before work starts. Additionally, feedback between the team and the client is always very important, as this helps to create a product that works just as the client wants it to.
You’ve now got a better idea about the Agile approach and the most popular methods used in this approach. Let us now look at the Waterfall approach, which is somewhat different to the Agile approach.
During the Waterfall approach, software development gets broken down into different stages. These stages are set out in a linear manner, so you go through each stage one at a time. This sequential process means that you cannot move onto another stage without successfully completing the stage before.
Typical stages you’ll hear about are:
- Analysis of system requirements
- Planning of project stages (done once and can’t be modified)
- Engineering (inner layout, design, structure, etc)
- Product development (layout and design)
- Integration (data management and source code creation)
- Testing (system error correction, bugs are fixed)
- Product release (the end of product development, adaptation may be done if needed)
- Technical support (maintenance and support in case of system errors)
Now you’ve got a better idea about the Waterfall approach and its stages, let’s check out some pros and cons of the Waterfall approach.
When are the Agile and Waterfall approaches applied?
We hope that you now have a clearer idea of the approaches and methods used in the software development process, and when to use them for the best!
It may be a lot to take in but once you’ve tried them out you won’t be able to live without them anymore! They totally simplify the workflow, and help you to track the changes and the progress of a project.
If you would like to read more about the development process visit our website!