Originally Posted by
Gyp
I've woken up thinking I ought to clarify the waterfall vs agile thing.
There are no doubt thousands of clear descriptions out there so I'll ignore those and write my own.
Waterfall is the "traditional" way of thinking of projects and works pretty well if you think of a building or a battleship. At the start you collect all the requirements, do a big plan and work through it in a sequence until you get to the end.
Business case, collect requirements, design, build, test, commission, tea and medals.
Each part of that could take weeks, months or even years. It was commonly used for computerised system for years. The advantage is that you've agreed what you want in advance, but the disadvantage is that by the time you get it, it might no longer be what you need. It's difficult to stop or change mid project as you've not got a viable project until the end.
Agile is more typically suited to software/app development where you can do product releases regularly. Unlike a battleship which needs to be completed before you push it into the sea, software can be released with incremental changes. Agile typically has a release cycle, so you'd perhaps agree that you'll release a new version once a month.
If you're doing a banking app for example, month 1 release might simply allow you to register and log in, month 2 might allow you to see you current account, month 3 adds savings accounts and tightens login security, month 4 allows you to move money from one account to the next, month 5 allows you to set up direct debits... Because there is a viable product at the end of each month there's the option to stop at that point. But if you are doing more you agree what it is then.
As waterfall projects are typically big commitments where you only get what you wanted at the end, so having a proper governance structure along the lines of that set out in Prince is important as the implication of having to make changes later on is costly and time consuming. You can stop at any time before the end but typically have noting of use to show for it.
Agile projects are far smaller commitments where you can stop at the end of any iteration
Each iteration will be a bit like waterfall where you agree requirements, design, build, test, release etc, but at the end of each iteration you have a viable product and can decide to stop if you feel you've done enough
Because agile projects are typically a series of small commitments, they can be manged with a few lists on a whiteboard. List of requirements, ones we can try to fit in this month, ones that are going in the release. That sort of thing.
I suspect I may have missed a number of critical things and upset the agile purists, but that's the broad difference.