Software Development Lifecycles
Breaking Down Project Management Techniques
Waterfall Vs Agile
Due to the unique business challenges that software developers face, such as rapidly changing project scope and tight budgets, unique management strategies must be employed to stay afloat and deliver a quality product. The way that developers approach the software development lifecycle can generally be broken into Waterfall and Agile development.
Waterfall was the first major product lifecycle approach created specifically for software, developed in 1970 by Winston W. Royce. Waterfall is the most relatable to leaders in other industries, as it is more rooted in traditional business practices than Agile. Waterfall is not dissimilar to the process of building a home, each piece is taken sequentially and builds upon the last. Just as contractors start building a home by laying the foundation, then erecting the framing, then adding plumbing, waterfall development follows a direct path to a final product starting with design, then moving through implementation, then verification before launch.
Agile development is a more modern view of the software development lifecycle outlined in 2001 by The Agile Manifesto. Rather than viewing development as a series of tasks that must be completed in series to create a final product, agile development focuses on developing a working product as fast as possible, then iteratively improving and expanding it until it satisfies the end user.
Traditional businesses follow waterfall practices by necessity. To continue the metaphor, if, after a house is built, the homeowners decide they don’t like the floorplan or the location, the house would need to be rebuilt completely, with roughly the same resource cost as building a completely new house. Because of this, contractors focus on building the house exactly right the first time. Software doesn’t need to be developed this way because any aspect of a program can be altered by an engineer with relative ease, it makes sense to build a rough version of the project, gauge its efficacy, then make changes as necessary. Software is unpredictable enough that the first version of a product is rarely optimal, which is often troubling to waterfall developers who focus all their resources on building the software right the first time.
Lean, Kanban and Scrum
Several sub-strategies have been developed to assist the implementation and efficiency of Agile development, the most popular of which being Lean, Kanban and Scrum.
Lean development can be seen as an extension of Agile practices, focusing on cutting waste by avoiding producing unnecessary features, minimizing how often developers switch tasks and promoting effective, face-to-face, communication. Lean development also encourages waiting until the last moment to make decisions, so as to minimize backtracking if the factors contributing to that decision should change.
Kanban translates roughly to “billboard” in Japanese and was initially developed by Toyota engineers to increase project efficiency. Kanban involves a traditionally physical board with three main sections, “To Do”, “In Progress”, and “Finished”. These categories may be further broken down, for example, “To Do” is often broken into high and low priority. Tasks are then written on cards and placed on the board, and developers move these task cards across the board as they completethem. Kanban is most effective when a large group is working on a single project, as it is effective at breaking a large project into smaller pieces and tracking the progress of those tasks in a very simple and visible way.
Scrum provides a more definite framework for the iterative process outlined in Agile development. Scrum developers work in sprints of 2-4 weeks during which they plan, build, test, and implement a new version of a specific piece of software. After the sprint, the team then meets, generally with their client, to review the software and plan the changes to be implemented during the next sprint. Short daily meetings are generally also held, to discuss progress and any major challenges or roadblocks that may have appeared. Scrum is generally most effective for small teams seeking fast, efficient, and effective development.
Why We Use Agile
As outlined in our process, at Woodridge we have found Agile development, when paired with Scrum and Lean principles, to be the most effective strategy, as it allows for rapid prototyping and increased customer satisfaction, as their input is valued and implemented throughout the entire process.
Because we are centered around developing software for third-party businesses, using Agile development principles allows us to easily adjust to their needs as no feature is ever “finished” or set in stone. Biweekly sprint meetings and weekly check-ins give us an opportunity to receive feedback and meaningful insight from our clients on a consistent basis. In a traditional Waterfall environment, we wouldn’t be able to provide a working prototype until the project was nearly finished, but with Agile and Scrum techniques, our developers provide a new, improved, prototype every two weeks.
The modularity of agile development also allows us to turn on a dime if project goals shift by allowing us to apply existing code to a new end, rather than completely scratching a project and restarting like is sometimes necessary with waterfall development.