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.
What is Agile Development?
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?
- Requirement modifications are expected, so re-factoring the program is part of the development lifecycle.
- Scaling back features or adding additional features are easier to implement.
- Feedback is welcome at the end of each sprint which allows for changes in project priorities and an end product that better meets the customer’s desire.
- Testing happens throughout the lifecycle, which helps to discover and fix bugs.
- Thorough testing prepares the product feature for release at the end of any sprint, making it more likely to meet release targets.
What is Waterfall Development?
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:
- Strict adherence to the sequential process means developers cannot revisit a previous stage until the entire process is complete.
- Poorly defined, or incomplete requirements will doom the project.
- Testing is performed near the end of the life-cycle which exposes the code to cascading issues from bugs not identified early in the process.
- Any changes to customer’s needs will result in an over-budget project with delayed delivery.
Which Is Better?
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.