DevOps is one of the hot topics at the moment, and is well on its way up the hype cycle curve. Some are even saying DevOps replaces agile, thus spelling the end of agile software development.
That isn’t true, though if you’re interested in agile, you should start learning about DevOps.
Some people say DevOps replaces agile. That’s not true, although it complements agile very well. This article will explain the difference between agile and DevOps.
So the main difference between agile and DevOps is:
Let’s now look at the relationship between agile and DevOps in more detail.
This is important: DevOps is not a tool or a product. I cannot emphasise this enough.
Some vendors and snake oil salesmen will tell you that it is. They say “buy our complex deployment toolset and you can instantly do DevOps!”.
Don’t listen to them and don’t believe them. You can’t tool your way out of bad processes and poor ways of working.
DevOps is rather an attempt to rethink the value chain of software development, especially the end part of the chain (getting it out to customers), and how it fits into an organisation.
Now I do understand that many organizations have a DevOps toolchain, and that this is an important part of how they work. So we do have and use tools, but the crucial point is that there is more to DevOps than the tools.
Traditionally in software development (whether Waterfall or even agile), there were “development people” who built software. They would move software through some environments. Possibly via manual processes, or maybe via automated processes like build pipelines.
Usually, this involves moving software from a “dev” environment, to some kind of “test” environment, and then probably to some kind of “staging” environment. And that was all fine, but that was as far as they could go. Why?
Because on the other side of staging was the land of Production. It is the mysterious land where magic, opportunity, threats and risks abound. It is the part of the map with “Here Be Draggyns” written on it. And it’s a place where developers are not allowed to go.
Instead, they do a big “handover” to an Operations team. And the Operations team were responsible for doing a bunch of “deployment” activities to move the code from the Staging environment to the Production environment.
This production deployment was complicated, more so than all of the other deployments, because:
At this point, people stopped doing “software development” activities and instead did “software deployment” or “service operations” activities. And the people who did that were different to the people who had done the development activities.
So DevOps tries to fix all this. It says:
This is a major rethinking of the structure and roles in a software organisation. It basically says “you build it, you run it”. You are responsible for it working in dev, in test, in staging, AND IN PRODUCTION. And if you do all this properly, with not just automated tests like a good Agile kid, but also by turning your infrastructure into software by containerisation (is that a word? urgh unfortunately, I think it is), then doing this should be a simple process.
So what really is the difference between agile methodologies (such as the Scrum framework) and devops? To answer this Agile vs DevOps comparison, we need to understand that DevOps principles do not replace Agile or Lean. It complements the Agile development cycle (and Lean) very well.
The DevOps lifecycle does this by killing waste, removing handovers, and streamlining deployments to allow faster and more continuous deployments to production. Many organisations do Agile, automated DevOps testing and continuous delivery but only push their pipelines as far as staging. Because the Operations people say “hey hey you can’t cross that line. That’s our territory: you stay in yours, and we look after ours”.
If you have an idea for a startup and you want to operationalise and scale it, you need to do three things:
Agile principles are about software development, DevOps is about software deployment and management. Then you also have product management, i.e. defining your product.
So we have three separate but related practices. And there are three good techniques for doing each of these things:
This Agile-DevOps culture can be very powerful, and can be found in many successful and leading software firms. You often end up with a Scrum team with an agile Scrum Master, applying DevOps principles to how they manage and deploy their product versions. We know that collaboration in agile is strong, and DevOps is all about collaboration. So it’s a natural fit.
A “DevOps team” might sound good but is often a danger sign. DevOps is meant to be a change in the way organisations package, manage and deploy their software (and infrastructure). It is meant to remove the barrier between development teams and Operations teams. So a pure DevOps team structure might sound great but is usually the wrong path.
Creating a DevOps team and telling them they are basically an operations team but are using DevOps tools / toolchains (and giving them all the job title “DevOps engineer”) is defeating the point. Often, this is just renaming the operations team and keeping the boundaries just like they were before!
Remember, DevOps is not a tool or toolset. It is a change in mindset, approach and processes. If those all stay the same, you are doing it wrong. You want to distribute operations-type activities amongst the development teams, so you remove handovers and silos.
This article has shown that the difference is agile is focused on product discovery, innovation and delivery, while DevOps is focused on quality, flow of work, consistency, configuration and automation. Which allow for frequent, safe and scalable deployments to production.
No, they are different approaches, though they work together very well.
Kind of. They both are inspired by Lean Thinking, though have a different focus.
They are complimentary ideas in software development. Agile is an approach focused on fast and frequent learning and discovery of customer value. DevOps is more focused on code configuration, management and deployment.
A developer is someone involved in development. Normally this is shorthand for “software developer”, though the Scrum framework calls anyone doing any sort of product development work a “developer”.
Sort of. As I’ve shown in this article, they go together very well. The key is to understand that DevOps is not a separate operations team using DevOps tools, but a whole new approach to how firms do software configuration, management and deployments.
This is another misconception. There’s no problem with doing Kanban in DevOps. And Kanban can be used alongside of Scrum. But remember, you don’t really want separate DevOps teams. Kanban often does make more sense for production support teams. But proper DevOps encourages moving away from production support teams, and getting agile development teams to support their own products.
I hope this clarifies the difference between agile and DevOps: more specifically, how DevOps complements, but does not replace agile.
The current hot topics in the DevOps world (as of 2023) are:
If you’re still unsure on the role of the agile methodology in DevOps, this video might help clear it up.