Agile vs Waterfall
The Challenges of Waterfall
Traditional Waterfall project management treats analysis, design, coding, and testing as progressive stages in a software or creative project. This can work out alright when the cost of change is high. But now with modern working practices that cost can be low – it hurts us in a couple of ways.
Firstly – Nearing project completion when the project starts to run out of time and money, testing is the only phase left. This means good projects are forced to cut testing short and quality can suffer.
Number two, because the working software or product isn’t produced until the end of the project, you sometimes get the feeling you never really know where you are on a Waterfall project, and that last 20% of the project always seems to take 80% of the time.
Can’t handle change
Thirdly and quite importantly, it’s just not a great way for handling change. With the diverse nature of many business and creative products each project will suffer if it is unable to change to suite unforeseen situations.
And finally – you’ve got a deadline risk because you never know if you are going to make it until the end. You have a technical risk because you don’t actually get to test your design or product until late in the project. And you’ve got product risk because don’t even know if you are building it right until it’s too late to make any changes.
The Agile Approach
Instead of treating the project in fixed stages – Agile projects believe these are all continuous activities – by doing them continuously:
- Quality improves because testing starts from day one.
- Visibility improves because you are half way through the project when you have built half of the features.
- Risk is reduced because you are getting feedback early, and
- Customers are happy because they can make changes without paying high costs.
An Agile project management method for example ‘Scrum’, is one which avoids a linear, one-way approach in favour of an incremental one.
Instead of extensive planning and design up front like we were used to in the old days, Agile methodologies allow for changing requirements during all stages of the project often by using multi skilled teams – incorporating initial planners, designers, designers/artists, developers and testers – which work on successive time-frames of the product over fixed periods and stages – or ‘timeboxes’. The work is organised in to a backlog that is set into an exact priority order based on the needs of the project end user or product.
These teams can be flexible and self-organising, including a representative of the client. The emphasis being on efficient face-to-face communication and short feedback loops.
The goal of each iteration is to produce a working product, which can be demonstrated to stakeholders. Feedback can then be incorporated into the next or future iterations.