DevOps is one of the biggest skills in demand right now. But what is DevOps, really? What’s it used for? And what are some good ways to get started? We’ve got the answers to those questions in this article!
You’ve probably seen the salaries in DevOps and now you want a slice of the pie!
In this article we’ll try to define DevOps, talk about the key purposes of DevOps, and answer the most common questions.
If you want to jump to a section on this page, here’s the table of contents:
And here’s a summary:
DevOps describes a category of jobs, tools and techniques which reliably bring software from idea into production.
There’s no single, universally-accepted definition of DevOps (although it would be great if there was)
It’s often linked to containers and the cloud, but the essential ingredient in DevOps is automation.
What is DevOps?
If you’re unsure about what DevOps means, don’t worry, you’re not alone. DevOps is really hard to define! Most people don’t agree on what it means:
(In I.T., we’re good at defining technologies, but we’re VERY BAD at using non-technical terms!)
But if we were pressed to come up with a definition of DevOps, here’s what we’d say:
DevOps is a group of practices, tools and roles, which all have the aim of getting software applications into production more frequently and reliably.
Yes, it’s not just a job title, or a tool, or a practice. We think it’s all three:
Practices - because there are a lot of processes which can make deployment easier
Tools - because there are tools that make the process easier
Roles - because DevOps is now considered a full-time job
And if you want an “official” definition… then the boffins at the University of São Paulo studied DevOps1 and arrived at this academic definition:
DevOps is a collaborative and multidisciplinary effort within an organization to automate continuous delivery of new software versions, while guaranteeing their correctness and reliability
Is DevOps a new thing?
If DevOps is concerned with deploying reliable software, then why hasn’t it existed before?
DevOps is about deploying software more frequently and reliably.
Well, Deployment kinda used to be seen as an afterthought. Something that would be done only when needed.
And because it was an afterthought, the processes were often brittle and hard to do correctly. So they were avoided by most people, as often as possible.
There was a time when it was OK to release updates to your software just once or twice per year, and cross your fingers and pray for the best. But not anymore.
Reliable software is more important now, because companies run so many more applications, and new features need to be released quicker and quicker.
What does DevOps actually look like?
DevOps is all about using different practices, tools, and techniques to improve the reliability of software in production.
There isn’t a big list of official DevOps practices, because everybody does things in their own way.
Instead, you can look at some existing practices. Do they improve collaboration and software quality? Then you could probably consider them DevOps practices. Here are just some examples:
Team collaboration and communication – Bringing teams closer together so that they can work together (and do things more easily).
Using automatic deployment pipelines – So that software can be deployed more reliably (just like an assembly line in a car factory), without messy and unreliable manual work.
Improving the quality of software that’s deployed – Adding automated tests so that there are fewer bugs, which means the software takes less effort to run and maintain.
Using tools and APIs to make deployment easier – for example, by packaging software in a standard way, which is one reason that containers have become popular, or by using APIs to create apps in the cloud.
Gathering feedback about software, so it can be improved – the task doesn’t stop once software is running in production! We can also get feedback and metrics which we can use to improve the software even more.
All of these practices make it easier to get good software running. And that is DevOps.
So you could think of DevOps as being an area of interest, or a field of expertise, not a fixed process or a list of tools.
What DevOps means now
This is the confusing part – is DevOps a culture, a skillset, or a philosophy?
These days, you’ll probably see the word DevOps used to describe a few things, which are all different but basically related:
DevOps culture 🤝 - a term to describe an organisation that is following some the practices of DevOps, like collaboration or automation.
DevOps Engineer 👷 - a person who looks after the pipelines and infrastructure that gets code running in production. (Sometimes a DevOps engineer is also a person who works primarily with developers to create environments for them, so they can be more productive.)
DevOps team or department 👥 - A team of engineers who are primarily responsible for getting software into production.
DevOps tools 🔨 - Any software tools that make it easier to collaborate and deploy software.
Every company does DevOps differently! But the goal is always to get software reliably into production.
Time for a video.
Here’s a great short video from GitHub (it’s less than 5 minutes) which talks a little more about DevOps.
You will probably need to know a bit about agile to get some of the jokes in the first half, but the second half is great:
Some of my favourite takeaways from the video are:
Nobody actually knows what DevOps really means ✅
DevOps is about creating a culture of collaboration, ownership and learning. ✅
DevOps is about getting software from idea to production much quicker. ✅
What are the key purposes of DevOps?
Here comes the science bit…..
Most technologies and movements don’t appear out of thin air. They evolve for a reason! So what’s the point in DevOps?
So what are the reasons for DevOps? What problems does DevOps try to solve?
For that, we’ll reference the definition above - it’s all about reliability and frequency:
Deploying software reliably: Sometimes software gets deployed which hasn’t been tested, or which takes a lot of tricky manual work to get running. This can cause a lot of stress and unpredictability.
⇒ DevOps tries to eliminate or reduce that unpredictability, by focusing on the culture and tools to make sure that the software is good quality and easy to deploy.
Deploying software more often: In big organisations, it can take a very long time for code to reach production, so it’s often only done a couple of times per year. Software has to be designed, coded, tested, approved and then finally deployed. (Plus there are many other steps in between!)
⇒ DevOps focuses on ways to allow code to be deployed more regularly. If software is deployed more regularly, it means that new features can be added to an app faster.
These goals can be implemented in a few ways, like we saw earlier:
Automating everything: By automating the process of building and deploying software, so that you don’t need to do so many manual tasks.
Adding automated tests: If you can test your software, you will have more confidence in it. Even better if those tests can be automated! (So a person doesn’t need to perform manual steps to test the software)
Working together: By encouraging developers and operations to work more closely together. (This may sound strange if you’re new to coding, but it hasn’t always been the case that developers & ops teams work closely together!)
Giving developers the power to deploy to production: Sometimes, developers are given the power to deploy their own software into production. (This is sometimes called, “you write it, you ship it”!)
What are some related topics & technologies?
You can be doing DevOps with any technologies, really. It’s not a programming language, or even a particular software architecture pattern.
DevOps is technology and architecture agnostic (probably one of the reasons it’s really hard to define.)
But in reality, DevOps is often seen “in the wild” hanging out with topics and technologies like these:
Continuous Integration/Continuous Delivery – called “CI/CD”
Monitoring and logging
Infrastructure as code
Collaboration and communication
One of the annoying/great things about DevOps (depending on your opinion!) is that there are tons of related technologies.
If you’re at the start of your career, this can seem intimidating! It doesn’t get much easier, so you once you get into the DevOps realm, you’re in for a lifetime of learning.
How can you get started?
If you want to get into DevOps as an engineer yourself, you could:
Understand the fundamentals of how to build and run apps – that means learning Linux, understanding CI/CD, and so on.
Adopt DevOps principles in your own work – write automated tests and pipelines, collaborate with other teams, and share knowledge
Apply for DevOps Engineering jobs – some companies have dedicated DevOps and “Site Reliability Engineering” jobs.
If this introduction to DevOps has got you itching to get started, then here are some great resources you should check out!
The Agile Admin: What is DevOps? – This is a classic blog post which explains the origins of DevOps in lots of detail! A good primer if you want to understand how we got here.
Open Practice Library Intermediate – A virtual library of “fluffy” techniques and practices that you can use in managing software projects. This isn’t an exclusive list, but when you browse the library you’ll see that the goal of many of the practices is to build and deploy software reliably and frequently (which is, the goal of DevOps!)
More from us
And if you’re just diving into DevOps, or you want to know more about DevOps tools, then we’ve got some more articles on Tutorial Works to tickle your fancy:
Recommended DevOps books: A slice of the top DevOps books that you should pick up and read.
Containers: A Beginner’s Guide: What are containers actually used for? (Why the big fuss about them?)
Getting into DevOps: A guide for you if you’re thinking abut choosing DevOps as a career
Skipped the article and want a quick answer?
DevOps is a term to describe the people, tools and practices that get software from code into production, frequently and reliably.
You can be a DevOps Engineer, or you can adopt the goal of DevOps in your own day-to-day work.
Either way, it’s a big landscape and demanding career!
(And the definition of “DevOps” will definitely change again in a couple of years, so we’ll have to update this page…. sigh)
Now it’s over to you:
What did you think of this guide? Let us know what you think in the comments section below.