DevOps and Agile are broad terms
and some executives consider them interchangeable, but they aren't synonyms.
Here are the ways in which they're different and why those differences matter
to your team.
Agile discipline is in the
process of taking over much of the enterprise world. It's not only because
executives like saying their organization is agile. It's because agile
discipline in its various incarnations can work very well for companies looking
to be responsive to customers and nimble in the face of changing business
Agile methods can be used as part
of DevOps -- a combination of "development" and
"operations"; which is also becoming more and more popular in the
enterprise world. The two words, agile and DevOps, are so popular, and used in so
many different ways, some executives and pundits seem to consider them
interchangeable. While convenient, such use can lead to real problems.
Why? Because agile and DevOps are
not the same thing. Treating them as the same thing can cause departments to abandon
good and safe practices in the pursuit of something undesirable. Here’s a look
at what these two trendy disciplines are, how they work together, and why
they're not the same thing at all.
What Is Agile?
At its most basic, agile
development is development that adheres to the principles stated in The Agile
Manifesto. It is an environment in which the priorities, according the
- Individuals and interactions over processes and tools;
- Working software over comprehensive documentation;
- Customer collaboration over contract negotiation; and
- Responding to change over following a plan.
Agile destroys the idea of a
“finished product”, which was the goal of the Waterfall approach. Instead,
Agile believes that software development is iterative and incremental. With
each new release of software, the customer can perform new functions or improve
upon existing functions.
Agile software development can be
implemented in a number of ways, including scrum, kanban, scrumban, extreme
programming, and many more.
What Is DevOps?
As with agile development, there
are many different ways to implement DevOps, though all methods have two
significant factors in common:
- deep communication between software development and IT
- automated deployment processes
The point of DevOps is to deliver
technology to business units in a timely fashion and ensure the technology runs
without interruption or disruption. There's nothing about rapid deployment or
frequent deployment in the definition. DevOps can be used to make sure that
annual updates go smoothly.
So how do they relate to one
In the last decade, companies
have begun spinning off a specific DevOps team from their original IT team, or
adding Agile approaches within their software development teams. Through these
organization changes, several similarities between the two theories emerged.
Methodology Vs. Deployment
Agile methodologies encourage
developers to break down software development into small pieces known as “user
stories”. This highlights the value Agile places on the customer, which helps
the developers by providing faster feedback loops and ensuring product
alignment with market need. Agile further advocates for adaptive planning,
evolving development, early and continuous delivery, and continuous improvement
so that developers can rapidly and flexibly respond to change in client needs,
software, or other external factors.
While Agile was a response to
waterfall methodologies, DevOps was not a response to Agile. It is all about
taking software which is ready for release and deploying it in the safest, most
reliable manner possible. DevOps walks a line between flexibility and the
rigorous testing and communication that comes with deploying new software.
DevOps doesn't depend on the software being developed by the agile discipline.
It's entirely possible to have waterfall development feeding DevOps.
Cross-Functional Vs. Siloed
Agile relies on cross-functional
teams that typically include a designer, a tester, and a developer. One of the
key factors in many agile processes is the idea that scrum members can each do
every job on the team. When each team member is capable of doing every job, it
increases understanding and makes close communication much easier.
DevOps, on the other hand,
assumes there will be development teams and operational teams, and the two will
be separate. Because of DevOps’ inherent communication with other teams, DevOps
can help automate processes and improve transparency for all teams.
Scrum is one of the most common
methods of implementing agile software development. Often a standup meeting,
the daily scrum is a short meeting in which team members update one another on
their progress, tell of their plan for the day, and let the scrum leader know
where help is needed. What scrum meetings are not are formal encounters during
which thick specification documents are reviewed with an eye on milestones and
DevOps is a theory rooted in
communication – both within itself and across other departments. DevOps
communications often involve specs and design documents that are critical for
the operational team to fully understand the software release and its implications.
The operational team will often involve user representatives, so that users can
be ready for the update, and understand the impact a deployment will have on
Staying small is at the core of
Agile – the smaller the team, the fewer people on it, the faster they can move,
even if they are contributing to a larger effort.
DevOps, by its nature, will have
multiple teams working together. Some teams can be practicing agile scrum; some
can be practicing agile kanban; some can be practicing waterfall. All can come
together at the point of software release to communicate with the operational
team for deployment.
Agile teams work in short,
predetermined amounts of time, known as sprints (generally one month or less)
and set a number of features to be created within the sprint. Teams know there
will be another sprint coming up, and more features can be covered then. They
expect to listen to users and to end up revising current features in an
DevOps, on the other hand, values
maximum reliability, so they focus on a long-term schedule that minimizes
business disruptions. DevOps doesn't prioritize speed and rapid development.
Rather, it prioritizes minimal disruption and maximum reliability.
One of the principles of agile
development is to prioritize working software over complete documentation. This
is fine when you're being flexible and responsive, but it can turn around to
bite you when you're trying to turn things over to another team for deployment.
DevOps, on the other hand,
requires design documents and specs in order to fully understand a software
release and also because it will turn the software over to a separate
operational team for deployment. DevOps tends to consider good documentation as
part of its definition of working software.
Agile is all about rapid and
frequent deployment, but this is rarely the goal, or even part of it, for
DevOps absolutely depends on
automated deployment to make everything happen smoothly and reliably. Certain
tools are an integral part of DevOps.
Agile development teams, on the
other hand, may choose to use certain tools. But there are no specific tools
required for an agile team. It's entirely possible for an agile team to
communicate via email and sticky notes placed around a conference room.
Culture of Agile and DevOps
While Agile does not necessarily
lead to DevOps, both can have profound culture shifts within an organization.
An Agile approach encourages a
change in how we think about development. Instead of thinking of development as
a large, difficult thing, Agile thinking promotes small, manageable changes
quickly that over time lead to larger changes.
DevOps can also bring its own
cultural shifts within an organization, including enhanced communication, and
balancing stability with change and flexibility.
Choosing to use both theories is
an active decision that many industry experts believe can lead to more rational
decision making, thus improving the company culture.