Waterfall methodology
The specific phases of the waterfall process depend on exactly what your
team is creating, but typically they look similar to this:
1. Requirements phase, sometimes split into an additional analysis
phase
2. System design phase
3. Implementation phase, also known as the development phase or
coding phase—depending on the type of project
4. Testing phase
5. Deployment phase, also known as the operations phase
6. Maintenance phase
What is the Agile methodology?
The Agile methodology is a project management approach that involves
breaking the project into phases and emphasizes continuous collaboration
and improvement. Teams follow a cycle of planning, executing, and
evaluating.
Agile project management is an iterative methodology where work is
completed in short sprints. By prioritizing a flexible approach and
continuous delivery, the Agile method is more flexible when it comes to
unexpected project changes—however, it can suffer from scope creep as a
result.
The Agile methodology was developed to counter traditional waterfall-
style project management. As software development became more
prevalent in the early 2000s, developers needed an iterative approach to
prototyping and project management—and thus Agile software
development was born.
What are the 4 pillars of Agile?
As outlined in the Agile Manifesto, there are four main values of Agile
project management:
Individuals over processes and tools: Agile teams value team
collaboration and teamwork over working independently and doing
things "by the book.”
Working software over comprehensive documentation: The
software that Agile teams develop should work. Additional work, like
documentation, is not as important as developing good software.
Customer collaboration over contract negotiation: Customers
are extremely important within the Agile methodology. Agile teams
allow customers to guide where the software should go. Therefore,
customer collaboration is more important than the finer details of
contract negotiation.
Responding to change over following a plan: One of the major
benefits of Agile project management is that it allows teams to be
flexible. This framework allows for teams to quickly shift strategies
and workflows without derailing an entire project.
What are the 12 Agile principles?
The four values of Agile are the pillars of Agile methodology. From those
values, the team developed 12 principles.
If the four values of Agile are the weight-bearing pillars of a house, then
these 12 principles are the rooms you can build within that house. These
principles can be easily adapted to fit the needs of your team.
The 12 principles used in Agile methodology are:
1. Satisfy customers through early, continuous improvement
and delivery. When customers receive new updates regularly,
they're more likely to see the changes they want within the product.
This leads to happier, more satisfied customers—and more recurring
revenue.
2. Welcome changing requirements, even late in the project.
The Agile framework is all about adaptability. In iterative processes
like Agile, being inflexible causes more harm than good.
3. Deliver value frequently. Similar to principle #1, delivering value
to your customers or stakeholders frequently makes it less likely for
them to churn.
4. Break the silos of your projects. Collaboration is key in the Agile
framework. The goal is for people to break out of their own
individual projects and collaborate together more frequently.
5. Build projects around motivated individuals. Agile works best
when teams are committed and actively working to achieve a goal.
6. The most effective way to communicate is face-to-face. If
you’re working on a distributed team, spend time communicating in
ways that involve face-to-face communication like Zoom calls.
7. Working software is the primary measure of progress. The
most important thing that teams should strive for with the Agile
framework is the product. The goal here is to prioritize functional
software over everything else.
8. Maintain a sustainable working pace. Some aspects of Agile
can be fast-paced, but it shouldn't be so fast that team members
burn out. The goal is to maintain sustainability throughout the
project.
9. Continuous excellence enhances agility. If the team develops
excellent code in one sprint, they can continue to build off of it the
next. Continually creating great work allows teams to move faster in
the future.
10. Simplicity is essential. Sometimes the simplest solution is
the best solution. Agile aims to not overcomplicate things and find
simple answers to complex problems.
11. Self-organizing teams generate the most value. Similar
to principle #5, proactive teams become valuable assets to the
company as they strive to deliver value.
12. Regularly reflect and adjust your way of work to boost
effectiveness. Retrospective meetings are a common Agile
practice. It's a dedicated time for teams to look back and reflect on
their performance and adapt their behaviours for the future.
Agile methodologies
The Agile framework is an umbrella for several different variations. Here
are a few of the most common Agile methodologies.
Kanban
Kanban is a visual approach to Agile. Teams use online Kanban board
tools to represent where certain tasks are in the development process.
Tasks are represented by cards on a board, and stages are represented in
columns. As team members work on tasks, they move cards from the
backlog column to the column that represents the stage the task is in.
This method is a good way for teams to identify roadblocks and to
visualize the amount of work that’s getting done.
Read: A beginner's guide to Kanban boards
Scrum
Scrum is a common Agile methodology for small teams and also involves
sprints. The team is led by a Scrum master whose main job is to clear all
obstacles for others executing the day-to-day work.
Scrum teams meet daily to discuss active tasks, roadblocks, and anything
else that may affect the development team.
Sprint planning: This event kicks off the sprint. Sprint planning
outlines what can be delivered in a sprint (and how).
Sprint retrospective: This recurring meeting acts as a sprint
review—to iterate on learnings from a previous sprint that will
improve and streamline the next one.
Extreme Programming (XP)
Typically used in software development, Extreme Programming (XP) is an
Agile framework that outlines values that will allow your team to work
together more effectively.
The five values of XP include:
Communication
Simplicity
Feedback
Courage
Respect
Similar to daily Scrum standups, there are regular releases and iterations,
yet XP is much more technical in its approach. If your dev team needs to
quickly release and respond to customer requests, XP focuses on the
“how” it will get done.
Adaptive Project Framework (APF)
The Adaptive Project Framework, also known as Adaptive Project
Management (APM) grew from the idea that unknown factors can show up
at any time during a project. This technique is mainly used for IT projects
where more traditional project management techniques don’t apply.
This framework is based on the idea that project resources can change at
any time. For example, budgets can change, timelines can shift, or team
members working on the project may transition to different teams. APF
focuses on the resources that a project has, as opposed to the resources a
project needs.
Extreme Project Management (XPM)
This type of project management is often used for very complex projects
with a high level of uncertainty. This approach involves constantly
adapting processes until they lead to the desired result. This type of
project involves many spontaneous changes and it’s normal for teams to
switch strategies from one week to the next.
XPM requires a lot of flexibility. This is one of the reasons why each sprint
is short—only a few weeks maximum. This methodology allows for
frequent changes, trial-and-error approaches to problems, and many
iterations of self-correction.
Read: Understanding the iterative process, with examples
Adaptive Software Development (ASD)
This Agile methodology enables teams to quickly adapt to changing
requirements. The main focus of this process is continuous adaptation.
The phases of this project type—speculate, collaborate, and learn—allow
for continuous learning as the project progresses.
It’s not uncommon for teams running ASD to be in all three phases of ASD
at once. Because of its non-linear structure, it’s common for the phases to
overlap. Because of the fluidity of this type of management, there’s a
higher likelihood that the constant repetition of the three phases helps
team members identify and solve problems much quicker than standard
project management methods.
Dynamic Systems Development Method (DSDM)
The Dynamic Systems Development Method is an Agile method that
focuses on a full project lifecycle. Because of this, DSDM has a more
rigorous structure and foundation, unlike other Agile methods.
There are four main phases of DSDM:
Feasibility and business study
Functional mode or prototype iteration
Design and build iteration
Implementation
Feature Driven Development (FDD)
Feature Driven Development blends different Agile best practices. While
still an iterative method of project management, this model focuses more
on the exact features of a software that the team is working to develop.
Feature-driven development relies heavily on customer input, as the
features the team prioritizes are the features that the customers need.
This model also allows teams to update projects frequently. If there is an
error, it's quick to cycle through and implement a fix as the phases of this
framework are constantly moving.