Software development can follow many paths and, depending on which you choose, the trip can be sequential with an itinerary that is solidly defined in the beginning or it can be one where you can adapt, change, and test as you go along. Each methodology has its own distinct personality which you need to take into consideration given the length of the journey and others who are along for the ride. If you want to be that person who sets the course and sticks to it regardless of the elements, then the stricter waterfall approach may be best for you. However, if you’re the type who likes to see what the day brings and make some last-minute side trips, then an agile approach will give you the flexibility you need.
The waterfall approach is the standard for software development as it was first mentioned in the 1950s. It’s a relatively linear process that follows a strict sequence of events within several defined phases. It was thought that since the manufacturing and construction industries worked efficiently in a highly structured way, that it could be applied to software development then and web development now. Waterfall begins with a definite and well-defined plan that is followed very closely through each strictly documented phase. Each phase must be fully completed before you can move on with no option to overlap and reviews occur after each phase to be sure that the project is on track. Testing takes place after all of the development has been completed, so if you decide to take this path go boldly and confidently as there is no way to make changes without some investment of time and money. The waterfall approach is a good choice for clients who know exactly what they want up front and will not want to be deeply involved or make many minute changes during the process. Because of the detailed documentation and stringent plan, project management is more defined and the final product is likely to come in on a predefined timeline and budget estimate, and is typically very close to what clients are expecting from initiation.
Advantages of Waterfall
1. Clients get a very clear idea of the project scope, cost, and timeline before the project begins and these expectations are usually met.
2. Project management is easier as is using developers at different sites because of the exacting documentation.
3. Staged development enforces discipline and milestones can be identified and monitored.
4. Good for smaller projects that don’t have tight deadlines or a large amount of requirements.
Agile is the younger sibling of waterfall and came into its own in the 1970s when it was asserted that software development should not be handled like a manufacturing assembly line but rather in an incremental, Rhizomatic way. Instead of developing software in long, relatively uninterrupted phases, agile is defined by development that occurs in increments called sprints. This iterative workflow enables teams to review the direction of the project every few weeks and, at that time, fix bugs, change requirements, and redirect accordingly. In 2001, the agile movement was better defined in the Manifesto for Agile Software Development. The 12-principle declaration emphasizes lightweight development methods that promotes customer collaboration, individuals and interactions over processes and tools, and responding to change over following a plan. The manifesto marked an inflection point where the human element was figured into software development with more client involvement and extensive developer teamwork. From this we can see that the agile approach is certainly marked with extroversion whereas the requirements-driven waterfall is prone to being labeled as introverted. Not surprisingly, these unique characteristics can be game changers for many developers and their clients.
Advantages of Agile
1. Clients are able to change the requirements of the project as it progresses.
2. Clients don’t have to define exactly what the project will be when it starts.
3. Lends itself to faster production times for smaller feature releases.
4. Testing is completed incrementally so bugs are caught early.
Of course, each approach has its own advantages and disadvantages, so before you begin each web development project take a good long look at your staff, your ultimate client, and the work ahead of you. Make a list of priorities and then think about the timeline, budget, and the nature of the project. Is your client, internal or external, someone who is sure of what they want and just wants to see the end product or will they want to be actively involved and change it up during the process as opportunities emerge? Size up the situation thoroughly before you embark on an approach and after you do, keep notes on how the web project went. This will help you better assess each of your web projects down the road. And, yes, hire a great web firm in Washington, DC….
Please contact us if you are interested in working with us on a web development project requiring our digital strategists, web designers, web developers, and data integration engineers.