
Waterfall: clear, classic, industrial software engineering
The “waterfall model”, introduced by Winston Royce in 1970, is what one imagines instinctively when faced with a project. Clear stages of content development life cycle “flow” into one another, the next one starting after the previous one has finished. In other terms:- conduct exact requirements analysis and create documentation (and only then…)
- create system design and architecture (and only then…)
- actual development (and then)
- test the code (checked?)
- Proceed to deployment (delivery).
This is what the haters say (and we’ll get to them in a moment). For about ½ of teams, waterfall is the norm, since everyone likes clear expectations, predictability and easy planning. Especially when it comes to the bills.Enter Agile
The “eternal adversary” of the plain waterfall is what we all call Agile. However, elements of Agile software development processes came on the scene much earlier than people coined the name. In essence, “agile” is an umbrella term for all the “iterative and incremental development” approaches.In a nutshell:Iterative = repeat until good. “We made it and then remade and built upon it, and then we remade it once again and that was what they wanted.”Incremental = make something one part at a time. “We had to build an online shop so we created the order service, then the paying system, then the review service, and so on.”Agile refers to the approaches that are both. The term appeared in 2001 with the Agile Manifesto, but the underlying principles have been around for a decade in the development community. If you take away the “values and benefits” for a moment, at the heart is the modified “spiral” model. At the beginning, the team produces the “core”, very basic version of the software, going through the normal phases. At the next cycle (iteration), the same steps are followed to produce something bigger based on what’s already done. The cycle expands over and over.
The main difference between simply “spiral” and Agile is what’s at that core. In the former case, it is the prototype, while with Agile, this is the MVP – the minimum viable product that can be released and used already. This is especially useful in domains like mobile app development.This allows to minimize risks for both the team and the customer. Even if drastic changes need to be done at some point, there’s not as much at stake, hence the financial risk is not as large. Agile processes can happen simultaneously, as well. Besides, with constant review at each iteration and feedback flow from the customer, such situations are less likely to be unexpected.Agile vs Waterfall – what to choose, “traditional” account
On the one hand, Agile has become fashionable and really yields good results. It is openly used by giants like IBM, Cisco and Microsoft, while Apple are very close. According to the recent State of Agile survey,- 69% of those who use it report better management of changing priorities
- 63% note faster time-to-market.
Waterfall is hands-off and easily managed for the customer once the project goals are defined, but the initial requirements need to be crystal clear.Waterfall is perfect for small projects where you can think of all the possible business goals initially, but not so good for larger ones.With Waterfall, the result is predictable – the customer knows exactly what they will get for their investment, the team knows what they are paid for.Waterfall: the team (especially developers and QAs) can focus on their actual work, not meetings and reviewsWaterfall has clear documentation at the very beginning and is better for thoroughly reviewed and regulated projects.
Agile offers more flexibility with adaptive planning, but is involving and demands for everyone to be there for feedback quite often.Agile allows to start with a usable MVP to throw into the market, and improve / change continually whenever the wind blows.With Agile, there is no such thing as precalculated “final total” cost – but there’s less inherent risk when remaking things over.Agile: the team is constantly learning and more creative, but also more individually responsible, making development active and inspired.Agile has no documentation upfront, being trust-based and encouraging responsibility, but allows faster time-to-market.