One of the first choices you will make for your software development project is which development methodology bests suits your requirements. There are several development models but usually revolve around 2 main types, Agile and Waterfall.
So, what’s the difference between Agile and Waterfall, and which of the two approaches is better for your project?
Waterfall is a linier project, when the exact specification of the software is determined at the beginning of the project and those requirements are delivered at a fixed price. This is similar to how you would construct a house, first with an architect to design the house, then with various teams of trades to build the house in a specific order. Relative to this analogy changing your mind about the placement of doors and the size of rooms after construction is likely to be expensive and time-consuming.
Waterfall projects require a significantly more time planning, for contract administration and risk variations for any evolving requirements. You can expect the entire waterfall development to take longer overall than agile, and you will receive your product at the end of development.
Software is not like a house
Although this methodology may work well for smaller projects or for projects with very clear specifications and deliverables, in our experience software development can be more like a journey or living ecosystem which adapts and develops with the business. Although stakeholders may have a clear vision of what they want from their application, in many cases improvements will be made once their vision is put into context. In this case and many cases, it’s nice to get a feel for the product along the way.
Agile is the most popular software development model, and for good reason with a lower failure rate (21% for waterfall vs 8% for agile).
Agile enables you to break the project up into smaller pieces, then to test, deploy and start using those pieces as soon as possible.
Any development, including agile will start with a discovery however when using agile we would obtain a vision and a wish list to build a general concept and plan for your overall project. We could then prioritise these segments based on both the high value components for your business and the functional requirements for those components. Along the way, we ensure that every piece is managed with your long-term goal in mind to mitigate the risk of revisiting the previous development segments.
In the agile scenario we spend less time up front planning, deliver functional components sooner and at a lower cost overall. As each component is built and your vision comes into context, we have the flexibility to adapt with your business requirements as they evolve.