If you have been involved in software development in any way over the last 5-10 years, you have almost certainly heard the word agile used. Odds are
that you have heard it used both correctly and incorrectly. "Agile" in and of itself is not an SDLC process, but rather refers to a general set of
principles that some SDLC processes also value. At the highest level, agile refers to an iterative, incremental method of managing the
requirements, design, build, testing and deployment activities of a project in a highly flexible and interactive manner. Below are some examples
(not an exhaustive list) of some of the most popular agile SDLC processes:
- Rational Unified Process (RUP)
- Scrum
- Extreme Programming (XP)
- Test-Driven Development (TDD)
Many of these processes were originally developed in the mid-1990s as a reaction to the perceived "heavyweight" nature of waterfall processes. In 2001,
a small group of software developers met to discuss "lightweight" development methods and published the Manifesto for Agile Software Development
(aka, the Agile Manifesto), which defines core principles that they believed a good SDLC process should follow. The term "agile" seemed to gain
popularity from there and various processes including those listed above were categorized as such. In today's world, many people use Scrum and agile
interchangeably to mean the same thing, but Scrum is just one example (albeit among the most popular) of an agile process. Scrum is also the SDLC
process that SwitchLane prefers.
As described in the first tab, Scrum is one of the most popular agile SDLC processes. It is also the process that we favor at SwitchLane for
executing custom development projects for our clients. Many books, websites and blogs have been written about Scrum and we are certainly not
going to provide a comprehensive description here. Scrum defines a handful of important roles to be played and we'll spend a little time talking
about the role of the Scrum Master, which most closely matches the traditional role of a Project Manager. When practiced correctly, the Scrum Master
and the development Team Lead work together to cover what a traditional PM does.
A Scrum Master is responsible for facilitating ongoing activities and ensuring that the process is being used as intended. They work with a Product
Owner to organize, refine and prioritize requirements. They work with a Team Lead to estimate the effort associated with satisfying each
requirement and to plan work out into fixed delivery durations known as Sprints. As the Sprints are executed, they facilitate regular meetings to
ensure progress and acceptance of deliverables. But perhaps most importantly, a good Scrum Master helps the entire team to avoid or remove
impediments to its progress, whether within the team or external to it. In addition to SwitchLane Scrum Masters playing this role in our custom
development projects, we also provide consultants to play this role in staff augmentation settings for our clients.
SDLC processes described as "waterfall" involve a highly sequential set of phases in which progress is depicted as flowing steadily downward, like a
waterfall. Strictly speaking there are several different waterfall processes, but they tend to share a lot more similarities than differences. The
typical phases of a waterfall process include conception (coming up with an idea), initiation (actually starting a project, assembling a team and
starting to plan), analysis (defining requirements), design (determining what should be built), construction (actually building the solution),
testing (making sure what was built meets the requirements), deployment (putting the finished solution out for use) and maintenance (keeping the
solution running, fixing defects, etc).
Waterfall is believed to be the original model for software development, which was based on processes from the manufacturing and construction
industries. Projects in these industries are based in highly structured physical environments in which after-the-fact changes can be prohibitively
expensive, if not impossible. While these types of changes certainly don't come for free in software development, we have far more flexibility
when working with software. Waterfall SDLC process aims to predict activity over fairly long time periods of many months to many years, with the
assumption that the requirements were correct and complete at the outset (they rarely are), that nothing will change during the execution of the
project (it always does) and that humans are good at estimating and predicting over long periods (we aren't). All of that said, waterfall process
is still used today and in the spirit of flexibility, SwitchLane provides Project Management consultants to our clients that still use it.