Published on September 16th, 2017
Agile software development is a methodology (some may argue that it’s a framework) which works on iterative development. It’s quite contrast to the traditional Waterfall development where complete project requirement is available before hand. Instead of delivering a complete solution to the customer after months of development; agile methodology emphasizes on delivering small releases. Each release is thoroughly tested by the end user. Based on previous release the requirements and milestones for next releases are decided.
In this tutorial we’ll learn what basically agile methodology is. Instead of going into theoretical definitions let’s see a real world example. Let’s say we want to develop an E-Commerce site like Amazon. So just like any other online product selling website our E-Commerce website will have below features:
Now in Waterfall model below is how we would typically approach this:
Only after this the client would be shown a working demo. So overall time required would be around 2 months.
Now let’s see how this project would be approached in an agile methodology. Instead of collecting information for all the pages at the first go, in agile the requirement would be split up into releases. So let’s say first release will contain the admin backend.
Usually only after the first release the subsequent modules would be taken up which would be like product page, checkout and cart pages, payment gateway and so on. For each module the same process would be adopted. Overall time required for first release would be around 2 and 1/2 week.
Let’s go back and see the difference in deliverable between the two approaches. In waterfall the client had to wait for 2 months to get the final demo. Whereas in Agile methodology he got his first demo in 2 and 1/2 week.
Of course in Waterfall he got to see the final cut. But this has its own downside. In the waterfall model it took the client 2 months to first review the product. It may happen that in this course of time the product requirements may have changed. Like say a competitor may launched a website which is similar in design to our website. So if any change has to be incorporated it would be too late.
Also a change in requirement would mean we have to go from top to bottom through each stage viz collection information, wireframe, development and then testing.
Whereas in agile there is always a chance to steer away considering releases are of small duration and of a small part of the entire project and also the fact that the client (or product owner, as called in agile nomenclature) is always in picture.