Much is said about agile approaches mostly in contrast of conventional waterfall methods. This blog is just a quick side to side comparison, but I would like to show you on when to apply them and when not. Both waterfall and agile approaches can be used for software development, infrastructure engineering and even any other project which needs to manage problems into solutions in a controlled way.
Both of the method types can be used with great success and don’t believe in the fact that one is better then the other, it is just the environment that might prefer one above the other.
Waterfall is a method where all steps are done in a sequence, these phases are defined and when one is done the other takes of. Of course they can be used with techniques as iterations to go back to earlier phases to refine the work, but once the phase is closed the next one starts. Normally in organisation different departments sign of these phases to all commit on the contents. Basically the process moves from collecting requirements, to specification and design into the solutions area for implementation and operating. Each step moves more towards realisation and operating, or from problem definition into solution.
Waterfall is a great approach when both the problem and solution area are predictable and stable, that means that with defined steps it is possible to properly select solutions. This approach requires environments where problem areas are also stable, meaning that requirements won’t change over time. The picture below shows the approach in the dimension of problem and solution area.
When the solutions area is known (meaning we have experience, done it before) and we are working inside a problem area which is known (been there done that) waterfall might be a good idea. Experience with both problem and solution areas are essential when selecting the waterfall model, that also means that lessons learned from the past need to be included to make it a “known” area. If a problem or solution space is an unknown territory it is clear that risk is introduced, either consciously or unconsciously.
One of the most risky things about Waterfall approach is that risk needs to be managed properly, this as much of the previous phases are closed and therefor all the next phases will just be a further realisation of the previous phases. Risk might therefore be building up. If things change over time, like requirements, or for instance aspect in the design are overlooked there might be issues introduced into future phases. It is clear that in such cases each phase will just be an add up of all these risks leading to huge problems during for instance implementation or operation. And this is where agile comes in.
Do you want to learn more about Agile? Sign up now for our one-day course!
Agile is a method where there is much more interaction between the requirements and realisation phases, it could be seen as small iterations where the amount of changes is very small. That is the elegance of Agile, make things small, small requirements and small towards realisation. By doing this this approach is much more open to changes made by stakeholders, even late in the process and the risk is managed by the reduction of changes. With small iterations the process progresses towards the solution. Since both problem and solution spaces are much more unknown areas of work it is a good approach to limit the requirements to cover in each process iteration. This way risks on both problem and solution areas are limited for each iteration in stead by letting them building up over time, with huge impact for implantation or operations. Graphically the agile approach might look like this:
These types of projects require high involvement of stakeholders from both the problem area and solution area because for each iteration they decide where to go next. Scrum is of course on of the most likely methods to select as an agile method.
Depending on the circumstances you might select the waterfall or agile model approach for your projects. As a guideline you could use the following criteria.
Waterfall application characteristics
- Stable requirements
- Low technology risk/predictable technology
- Experience in both problem and solution area is high (been there done that)
Agile application characteristics
- Customer responsiveness/business responsiveness
- Project uncertainty
- Technology uncertainty
- Innovation cultures
Hope it helps you to identify the method and to recognise the problems you face in your environment and the possible methods to solve them.