Software development is a complicated process. With the end goal of meeting our customer’s needs in mind, we gather requirements, plan, design, code, test and finally deploy product features or enhancements to our Intranet Connections product within our ongoing software release cycle. To facilitate this work, our development team embraces the agile development methodology.
One can think of agile development as an iterative process that breaks the work of building software into manageable “sprints”. A sprint is a short-term, highly focused development cycle. The goal of agile development is to incrementally build software over a series of sprints to achieve an end product that is well tested and more accurately meets the needs of end users. Each sprint produces an iteration of the software feature and each iteration becomes more refined until we are satisfied with the end result. There is no set number of sprints required to achieve an acceptable finished product. One can achieve a satisfactory result within one sprint. However, the point of breaking down the work into sprints allows for feedback and requirement adjustments during the development process, which can result in a better designed and more robust end product.
What are the advantages of using agile development?
On the flip side, a disadvantage to agile development is that the development is heavily affected by feedback, therefore the end product can result in something much different than originally intended, for better or worse. In addition, refactoring and refining the product over too many sprints can result in late delivery of the product.
The waterfall development methodology mirrors manufacturing or construction workflows in that it is a sequential process with distinct phases. Each phase is completed in sequence until the entire process is complete. The phases can be described as:
An advantage of the waterfall methodology is that the requirements set forth in waterfall development are well scoped and thorough, which assist with the design and coding phases. In addition, expectations are set out at the beginning of the project so customers understand the timeline, cost and scope of the project.
Another advantage is that any changes in resources, such as developers, project managers or quality assurance agents, have a limited effect on the end product. This is because the documentation is well defined and new contributors can be brought up to speed quickly.
However, the disadvantages associated with waterfall development are:
When deciding how to approach a software project, one should understand that there is no right or wrong way to develop software. Both agile development and waterfall development have their advantages and disadvantages. Choosing the methodology that suits your development team and philosophy is the important decision for meeting your customer’s needs and your company’s goals.
At Intranet Connections, we simply choose agile development over waterfall development because it best suits our team and management, and we feel it best meets the needs of our customers.
I would love to hear your thoughts on agile development vs. waterfall development. Please use the comments section below.