What is a "DevOps Engineer"?
Tags: devops, agile, sre, career
Published: 2019-11-04 18:38:36

Whether you're reading this because you heard that DevOps[^1] Engineer is among the highest demand, best paying jobs in tech so you want to learn more about how to get into the field, or you *are* a DevOps Engineer (by title) but aren't sure what that's supposed to mean, this article is for you. 

The bad news is that there is no universally accepted answer to the question "What is a DevOps Engineer?". The good news is that this ambiguity makes it a lot easier for people with very diverse skill sets to become DevOps Engineers and for people who work as DevOps Engineers to forge their own path (to an extent).

## Who am I? 

I've been working in IT for 20+ years[^2]; as some variant of DevOps Engineer in five separate companies over the past six years. I'm very active in the DevOps community and have done extensive reading on the topic of agile, lean and DevOps. I've attended 10+ DevOpsDays conferences (Austin, Atlanta, Chicago, Dallas, Detroit) since 2014, and I'm on the organizing team for DoD Austin.

## What even is DevOps?

It's easy to understand why a lot of people dismiss DevOps as a meaningless buzzword. It was coined to express a simple idea--bringing 'dev' and 'ops' together--yet most definitions out there today are at best context-dependent interpretations and at worst attempts to convince you that "doing DevOps" requires you to buy a specific product or service.   

One thing most everyone agrees on is that DevOps requires some level of "transformation" in how your business operates. I'm not going to go into detail about all the things a DevOps transformation involves because that has been done many times before[^3], but usually it entails changing how your business works.

## Ok, so what is a DevOps Engineer?

With as much confusion and disagreement as there is about the meaning of DevOps, it's no surprise that there is a lot of confusion and disagreement about what a DevOps Engineer does or what skills are required to do the job. I don't even like the job title because I think it reinforces misunderstandings. 

Based on my own experience reading job descriptions of, interviewing for, and having the title DevOps Engineer in five very different organizations, I can say with a high degree of confidence that there is no consistent definition. 

> The most important thing you can do when interviewing for a DevOps Engineer role is get clarity on exactly what you will be expected to do. 

## So, what might a DevOps Engineer do?

(_If this seems like a ridiculously broad list of technical specialties that no individual could reasonably be expected to have mastery of, that's because it is._)

**Release Engineering**

* Manage CI/CD tooling 
* Document current build/deploy process 
* Standardize build/deploy process across apps
* Optimize build/deploy process across apps

**Infrastructure Engineering**

* Design/Administrate cloud infrastructure
* Document current infrastructure topology 
* Create and maintain provisioning code

**Reliability Engineering**

* Standardize metric reporting and log aggregation
* Configure performance monitoring, reporting and alerting
* Production support and incident management
* Document performance standards and audit guidelines

**System Administration**

* Internal tools audit, selection, management
* User ID and access management
* System audits and patching
* Security audits and issue remediation
* Design and enforce security standards

**DevOps Advocacy**

* Being a DevOps 'champion' in the organization
* Leading training sessions on DevOps principles
* Creating and/or running a DevOps 'Dojo' 

## Say what now?

Yeah, that's a whole lot of stuff that requires many different skill sets. You'd have to be nearly superhuman to have mastery of all those responsibilities. So does that mean you should abandon all hope of becoming a DevOps Engineer? No, not at all. As mentioned before every organization is different and will have different expectations for the DevOps Engineer role. 

Many of these practices used to be (and sometimes still are) managed by people with job titles like Release Engineer, Sysadmin, Network Engineer, Build Engineer, etc. The newer term 'Site Reliability Engineer' or 'SRE' is sometimes used in place of DevOps Engineer, but in fact the SRE model is much more prescriptive.[^4]

As things are today, if you have strong skills or experience in CI/CD, OR cloud architecture, OR system administration, OR coding, AND you have a strong grasp of Agile and DevOps principles, you have a good shot at being a DevOps Engineer. 


[^1]: There is ongoing debate about the "proper" capitalization of 'DevOps'. My preference is for Pascal case to emphasize that the word is a portmanteau of Development and Operations, not a new practice area.

[^2]: Before transitioning into the world of software development via DevOps, I worked as a Novell CNA/CNE on various contracts throughout the mid to late 90's and managed the infrastructure for Dell's Enterprise Server/Storage/Virtualization training for nearly 8 years in the mid 00's. 

[^3]: Some essential reads are [Accelerate](https://www.bookpeople.com/book/9781942788331), by Nicole Forsgren, Jez Humble and Gene Kim, [The Phoenix Project](https://www.bookpeople.com/book/9781942788294), by Gene Kim, Kevin Behr, and George Spafford and [Team Topologies](https://www.bookpeople.com/book/9781942788812), by Matthew Skelton and Manuel Pais.

[^4]: I recommend [this YouTube video](https://youtu.be/uTEL8Ff1Zvk) for a nice explanation of the relationship between DevOps and SRE.