Whenever the subject of DevOps comes up, confusion usually follows. Which isn't so strange considering how it's implemented at many companies. DevOps has become synonymous with a set of tasks, rather than a philosophy. And enthusiasts will often tell you that "DevOps is not a job", and they'd be right. Unfortunately, it's common to see "DevOps Engineer" vacancies that are basically SysAdmin jobs.
In my experience, DevOps is immensely misunderstood. In fact, in the past I've been commonly regarded as "The DevOps guy", even though I was contracted as a Backend Developer. To many colleagues this "DevOps guy" role meant I was responsible for setting up deployment, infrastructure provisioning, monitoring, debugging, and apparently fixing laptop issues. Of course, I helped them out if I could, or send them to the ICT or Operations team if that was more appropriate.
After talking to quite a few people, I realized that many people confuse DevOps for Operations in general. The common consensus was: "You are the person that maintains the servers". Which definitely sounds like they think you're a SysAdmin.
What is DevOps
Abbreviated from Developer Operations, DevOps is not about the tasks in between these two disciplines. It's about both of them working together to create one smooth workflow from development to monitoring in production. In a way, DevOps is an Agile successor that targets the end-to-end delivery of the product, and not just the development.
The gist comes down to...
Release fast: Releases should be small and frequent. Multiple times a day shouldn't be a problem.
Automate: Any repeatable action can and should be automated. Think about tests, builds, and deployments.
Continuous Integration/Delivery: Any change in the central code repository should trigger automated tests and prepare artifacts for delivery.
Collaborate: The core to it all, work together to set up a smooth workflow that promotes continuous feedback between team members.
Is DevOps a role?
Maybe? In my opinion, a developer/sysadmin that is tasked to take lead in creating a DevOps culture in the office can be considered a "DevOps role". DevOps is really too much of an umbrella term to assign a single role to. Everybody in the team should be invested in the DevOps process and tasks can overlap. For example, what can you expect a DevOps Engineer to be an expert at? Development? Databases? Cloud Infrastructure? If the answer is all three, then they're likely not an expert at all three.
Maybe a DevOps Engineer should be a jack of all trades, being able to coordinate the DevOps process in their team. Although, then they should be called "DevOps Coordinators" or, dare I say it, "DevOps Masters" instead? I'm not so sure if our egos could handle not being called engineers anymore.
It's not a job title, so don't expect to find any vacancies for it. But if you are the one promoting DevOps practices and culture in your team, you could definitely call yourself a DevOps Evangelist. Which essentially covers and advocating DevOps workflows and taking the lead in adopting the practices.
Sources on DevOps
- The DevOps Handbook by Gene Kim
- The Phoenix Project by Gene Kim
- Atlassian on DevOps
- AWS on DevOps
As always, you can find us available for any question you might have via our Support Channel.