Software Development Life Cycle (SDLC) Methodologies
The two most common methodologies for software development are Agile and Waterfall. Each methodology has its own advantages and disadvantages, and different organizations adopt the SDLC methodology that best fits their needs and priorities.
Waterfall
Waterfall is a SDLC methodology that creates clear linear milestones throughout the project, where one piece of work needs to be completed before the next is picked up. Waterfall projects have a fixed timeline and deliverables that are mapped out from the very beginning of the project. The downside of this approach is that its rigidity means that if issues are discovered later in the SDLC, it can be very expensive to change course. This means it’s not desirable for complex projects where requirements are likely to change frequently, and better suited for smaller projects where requirements are well-defined. Unlike Agile, Waterfall projects cannot easily pivot midway through to respond to new data and information.
Agile
Agile is a SDLC methodology that was created as a response to the more rigid, inflexible Waterfall structure and embraces the constant change that is inherent in technology. Agile requires creating small bursts of work that can be worked on concurrently by different team members and minimizes dependencies. This facilitates greater flexibility if the team discovers new information that requires changing course, since they are not tied into rigid deliverables and timelines. Agile is the most popular SDLC method used by companies for its flexibility and efficiency.
Scrum vs. Kanban
Scrum and Kanban are two different implementations of agile software development principles. Scrum teams organize their work in sprints, generally two-to-four weeks long, with each sprint representing an increment of work that can be shipped and deployed in production. Scrum prioritizes short cycles of development and near continuous deployment, which helps gather user feedback quickly. In contrast, Kanban teams visualize their work using a kanban board which contains individual tasks and tracks the progress of each task from stages like “Todo”, “In Progress”, “In Review”, and “Done”. Kanban prioritizes reducing the time to implement each user story and maximizing efficiency of development.