Building software, in some respects, is no different than building a house. Like a house, a piece of software is comprised of many component parts that together create a functioning, efficient whole. As in homebuilding, the process of building software can be approached in one of two ways: in an ultra-organized fashion that attempts to account for every variable before work begins, or more flexibly, assuming not only that minds can and will change, but also that some needs can’t even be identified until a project is in progress.
We at Vensi prefer the Agile method of building software for most projects, as our customers. Predictive methods – Waterfall, for example – require every component piece of a project to be completely finished and perfected before work can progress to the next phase. The project then, in theory, flows seamlessly from one section to another, like a waterfall cascading down to a pool. The primary criticism of approaches like Waterfall, of course, is that not everyone can be absolutely certain of their project needs from the outset, and course changes that occur mid-development can mean loss of valuable time and even abandonment of the project.
In contrast, the Agile method is designed to allow for easy and frequent change. Its inherent adaptability ensures that time and project funds will never be lost or squandered when a need for change is identified, giving clients and designers the freedom to move flexibly in whatever direction best suits the project. Most changes are easily accommodated by Agile
This adaptability also means that the need for prolonged initial planning is eliminated. Indeed, Agile assumes that knowing all project needs from the start is actually impossible. Further, Agile’s approach is team-oriented and, with its regular testing of component parts, puts the emphasis on open communication rather than incremental, ponderous documentation. It is in all aspects a flexible, elastic methodology.
This approach, in our view, has clear benefits. For software users who know exactly what they require from a project, who are absolutely certain from the outset that they have accounted for every variable, and who are confident they won’t require any in-process changes, predictive methods like Waterfall are acceptable. But like the homebuilder who realizes mid-construction that an additional doorway will greatly improve the flow of the home’s living space, the software builder sometimes won’t realize his or her needs until the project is semi-finished. The Agile method is flexible enough to accommodate the project’s changing needs.