Agile versus waterfall development: The case for agile
Agility and flexibility are top of mind when it comes to delivering IT projects. With that being the case, the traditional waterfall development approach, which requires each step of a project to be completed before the IT team can move onto the next, seems a bit outdated.
Enter the agile development technique. This iterative development method should be the go-to today. It's based on collaboration and continuous development, and differs from the waterfall approach in that it can be characterized as being adaptive rather then predictive. Essentially, with agile, the requirements gathering, development and testing happen concurrently versus consecutively. Let’s take a closer look at why this development method makes more sense for most businesses today. And then, we’ll briefly examine a newer method -- DevOps -- which, too, is becoming more common. Regarding agile:
It’s More Collaborative
Many companies, both large and small, are already using agile development for their internal and external development needs. In some cases, vendors will use agile development methods in collaboration with customers. In a typical agile development set-up, requirements are developed in collaboration with the user and written in a format that explains in non-technical language what is needed.
For example, a requirement may be as simple as a consumer, for example, wanting to have the ability to make a payment to a friend for their portion of a dinner bill. This broad requirement is then broken down into a series of "stories" each describing an action. These could be things like: "access system x", "initiate payment", "carry out security checks", and so on. Each story is worked on collaboratively by a group of developers, ideally with the user involved throughout, making it the more collective, hands on approach, instead of the more siloed method of waterfall development.
It’s More Customer-Centric
The agile development method is more customer focused, and more efficient, than the typical waterfall requirements-gathering process -- in which all requirements are gathered, and the project mapped out in full, up front.
Agile code development typically begins with each team first writing the test script that will prove each "user story" is complete (again, as referenced above, these are descriptions that capture actions like "access system" or "initiate payment"). Code is then written, often by pairs of developers collaborating and acting as an instant checks and balances system, and tested against that test script on a continuous basis. This allows for any errors to be caught during the development process and fixed in real time. On the other hand, in a waterfall process, all development is finished before testing begins, which leaves room for a backlog of errors to have built up. Some glitches may be difficult to find, and the testing process takes longer as a consequence.
It’s More Adaptable
Aside from being more collaborative and more customer-centric (and therefore making the development process quicker and delivering better quality software), agile development also makes it easier for development teams to cope with changing requirements. This means the software delivered at the end of a project is likely to be better suited to the user’s purpose. The user is invited back to view and test the code that has been developed at regular intervals in the process -- if they are unable to join for the duration -- to ensure it delivers what they expected. Because code is developed to "user stories", which describe just a small part of the overall requirement, it is easier to change a single, or even a number of, stories that have been developed over a short period of time and related tests, than to potentially have to go back through hundreds or thousands of lines of code to work out what needs to be revised.
For its collaborative nature, its customer-centricity and its adaptability, I would argue that agile development over waterfall is the better option in most business cases today. It’s the less bulky option and enables businesses to better discover and address user’s needs. In addition to agile, another development model that’s becoming more common is DevOps. Agile bridged the gap between development and testing being sequential activities in two large steps, into multiple sprints of smaller steps. This allowed developers to avoid a potentially large set of errors at the end of the development effort. DevOps brings testing and user acceptance testing (UAT) much closer and allows for continuous deployment, which is very much needed in cloud environments. Either method is suitable for businesses today and could be considered more present-day than the waterfall method of the past.
Alok Sinha is President -- Global Application & Engineering Services -- at Xchanging, a global, publicly held business process, procurement and technology services company. To learn more, please visit www.xchanging.com.