Agile and DevOps are two development methodologies that are often spoken of in the same breath. Though both are designed to help developers rapidly create high-quality software, there are important differences between the two.
These practices can offer huge advantages for companies toiling away with traditional processes, but only when they fit the bill.
And in order to know when that is – it’s important to understand their differences and similarities.
What is Agile?
Ever heard of the Agile Manifesto? It’s kind of a big deal. This guiding document for agile development is built from four core principles:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile is all about being able to rapidly respond to changes, whether they’re changes from customers or technical debt that needs to be addressed. It’s an iterative approach that delivers working software in short cycles, so that feedback can be gathered early and often.
If you had to sum it up in a sentence, it might be something like, ‘organic, get-it-done software development.’
Feel free to try for something more pithy.
What is DevOps?
DevOps, on the other hand, is a little different. As the name suggests, DevOps emphasizes collaboration between development and operations teams, though as in agile, the goal is getting out good software fast.
Patrick Debois, sometimes referred to as the Father of DevOps, puts it thus:
“The cultural aspect of collaboration gives everyone an equal seat at the table; both dev and ops are important. And this means there is more mutual respect. This also creates more empathy for each other’s problems, resulting in a nicer environment to work in.”
It is a culture that is built around sharing responsibility for the entire software development process, and it’s something that needs to be adopted by the whole team.
However, there’s also a strong technical/tooling element to DevOps.
These can be practices and technologies that have sprung up to help facilitate closer relationships between dev and ops. Or they can be practices and technologies which, in a sense, are that collaboration.
CI/CD
The most important part of DevOps is the continuous integration/continuous delivery (CI/CD) pipeline.
Instead of collecting all of the code changes and doing a big, end-of-cycle push to production, DevOps teams commit code changes frequently and automatically push them through an automated build process.
This way, new code changes are released into production more quickly and with less risk.
In one sense, a CI/CD pipeline is like a two-way street between developers and operations engineers.
Automation and tooling
There is also a focus on automation through the use of various tools. Developers can use automation to provision and configure new development environments quickly and easily. This way, they don’t have to wait for someone else , which saves a lot of time.
There are many DevOps tools available, but some of the most popular include:
- Jenkins
- Docker
- Ansible
- GitHub
How are Agile and DevOps similar?
So what kind of crossover is there? Well, they have quite a bit in common.
Both approaches are designed to help teams work together, and strongly emphasize collaborative, organic relationships between teams and people.
They also share some of the same principles.
For example, both DevOps and Agile advocate for automation wherever possible so that repetitive tasks can be carried out quickly and reliably. They also both emphasize the importance of monitoring so that issues can be identified and fixed as soon as they arise.
As Debois explained, when asked about what advice he would give to people who want to get started in DevOps, “think of the Agile Manifesto but with a broader mind.”
How are Agile and DevOps different?
Critically, though, there are some differences between these two approaches. The biggest is that DevOps is more of a culture and an approach to working together than it is a methodology.
Agile, on the other hand, is very much a set of defined practices and processes that teams can follow. Because of this, some people see DevOps as being Agile at scale since it takes the same basic principles and applies them across an entire organization rather than just to a single team.
Another important difference is that DevOps focuses on collaboration between teams so that they can share knowledge and work together more effectively. Agile, on the other hand, is primarily concerned with individual teams working independently to deliver software quickly.
Finally, DevOps makes use of specific tools and technologies.
Which is right for your business?
There’s no easy answer to this question.
The key is to understand what each offers and how they might be able to help your business achieve its goals.
If you’re looking for a way to deliver software quickly and efficiently, then Agile will probably be the best approach. If you want to improve communication and collaboration between teams, then DevOps might be a better fit.
What about DevOps as a service?
DevOps as a service refers to a company providing some element of DevOps on-demand. This could be owning your entire DevOps process, or it could simply mean a few DevOps engineers working to cover your team out of hours.
For a thorough deep dive, see our latest piece on DevOps as a service.
Is there Agile as a service?
Due to there not being the same amount of tooling and specific skills involved, Agile as a service isn’t really much talked about. Although it’s not as though nobody’s thought about it.
How we can help
At Just After Midnight, we’ve carried out DevOps projects for global brands, including Vodafone, Formica, and DLA Piper.
With our DevOps as a service offering, we can slot in wherever you need us. So, to talk about your DevOps needs, or anything else, just get in touch.