Agile vs. DevOps: 10 Ways They're Different
DevOps and Agile are broad terms, but they aren't synonyms. Here are the ways in which they're different -- and why those differences matter to your team.
![Image of circuits around the Earth. Image of circuits around the Earth.](https://eu-images.contentstack.com/v3/assets/blt69509c9116440be8/bltfb76c4f899911859/64cb392496f43db8176c80fc/Image_1.jpg?width=700&auto=webp&quality=80&disable=upscale)
geralt / Pixabay
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 conditions.
Agile methods can be used as part of DevOps -- a portmanteau 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. So, let's take a look at what these two trendy disciplines are, how they work together, and why they're not the same thing at all.
[What would you do if you had someone shadowing you all day? Read Adventures in Pair Programming.]
Now, because each of the terms we're exploring is rather broad, there's plenty of room for discussion about their meanings and uses. I'm quite OK with that. Once you've reviewed the differences highlighted here, I'd love to hear your ideas about what I've gotten wrong. I'd also like to hear how you've experienced agile or DevOps, and what you think about the ways in which they relate.
I'll look forward to the conversation in the comments section below. In the meantime, let's start the discussion with a couple of key definitions.
At its most basic, agile development is development that adheres to the principles stated in The Agile Manifesto. More broadly, agile is the word for an environment in which the priorities, according to the authors of the manifesto, are:
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 software development can be implemented in a number of ways, including scrum, kanban, scrumban, extreme programming, and many more. At its heart, agile is a change in the way of thinking about development. It's a change so profound it sometimes spreads to the entire organization, leading to agile HR, agile marketing, and a wholly agile company.
Agile software development is a methodology for developing software. Once the software is developed and released, the agile team doesn't formally care what happens to it. They're on to the next sprint and the next revision of the user story.
DevOps, on the other hand, is all about taking software which is ready for release and deploying it in the safest, most reliable manner possible. DevOps doesn't depend on the software being developed by the agile discipline. It's entirely possible to have waterfall development feeding DevOps.
One of the key factors in many agile processes is the idea that scrum members can each do every job on the team. The idea is you don't want team members sitting around waiting for a specialist to become available for the next step in the process. Any available team member should be able to do what's required for progress. In addition, 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, the two will be separate, and employees will not hop willy-nilly between the two teams. What the teams will do is communicate between themselves on a frequent and regular basis. Such communication leads us to the next point.
Scrum is one of the most common methods of implementing agile software development. Everyone who's been around scrum teams knows the daily scrum meeting. 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 metrics.
DevOps communications, on the other hand, often involve specs and design documents. It's critical for the operational team to fully understand the software release and its implications so they can properly run the deployment process. The operational team will often involve user representatives, so that users can be ready for the update, and so that the operational team understands the impact a deployment will have business operations. Such communications don't need to happen on a daily, stand-up basis. But they certainly need to happen.
The nature of scrum communications requires agile teams to be relatively small. I don't think I've ever heard of a 1,000-person agile development team. The scrum happens in and among the team, though the team may well be contributing to a larger software 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. It's good to reiterate the point: DevOps doesn't depend on any one development discipline to be effective.
Agile sprints choose a time in the near future (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 upcoming sprint.
DevOps chooses a schedule for deployment to minimize the business disruption. For example, DevOps might roll out the work of each sprint at the sprint's end -- or it might wait until several sprints have released software so there can be a consolidated deployment with less disruption. 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 needs the documentation because it will turn the software over to a separate operational team for deployment. Automation helps minimize the impact of skimpy documentation, but, when you're turning complex software over to another team, you can't assume one a long meeting will transfer all the knowledge required. DevOps tends to consider good documentation as part of its definition of working software.
Agile is all about development. Sometimes, it takes over the entire company. Even when it does, agile discipline doesn't inevitably lead to DevOps. The practice of DevOps involves a separate discipline and methodology from those of agile. When the two are treated as separate disciplines that can work together, decisions become much more rational than when the two terms are used as synonymous.
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.
One thing is certain: There will be more confusion ahead as the terms continue to be used and as their definitions continue to change. How agile is your company? Are you part of a DevOps team? Tell me all about your experiences in the comments section below.
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.
One thing is certain: There will be more confusion ahead as the terms continue to be used and as their definitions continue to change. How agile is your company? Are you part of a DevOps team? Tell me all about your experiences in the comments section below.
-
About the Author(s)
You May Also Like