A great discussion on the DevOps Google Group yesterday posed the question "What is a 'DevOps Engineer' anyway?" The OP pondered this question after poring over job listings for "DevOps Engineers" or developer jobs with some form of DevOps in the requirements for the position. There were some great responses to the question, from developers from Etsy, ThoughtWorks, Square, and from DZone MVBs.
In order to answer this question, some pondered the nature of DevOps itself.
What is DevOps?
"DevOps is about breaking down the silos between different parts of the organization and making sure everyone is on the same page and working in the same direction," said Joe Thompson.
Kief Morris, software delivery consultant at ThoughtWorks said, "DevOps is a handy shibboleth. Someone who is attracted to the word is more likely to be enthusiastic about an environment where the lines between software and infrastructure are blurred, if they exist at all."
So, if you can define what DevOps is, you should then be able to define what a DevOps Engineer is, right? It should be just an engineer who does DevOps. Some participants in the discussion didn't seem to think it was that simple.
DevOps is Not a Singular Role
Joe Thompson said that DevOps "really [can't] be reduced to a single role. If anything, it's more about the makeup of teams than individual roles. If you're doing DevOps, you regularly have Devs, Admins, DBAs, Storage, etc. all in the same room working on the same thing. You can't really abstract that interaction into a separate role."
John Allspaw, a developer at Etsy, even has an algorithm to determine if it's appropriate to use the term "DevOps" in conversation:
s/"devops"/"collaboration, communication, cooperation, and coordination"/g
"If I can't find [and] replace with that and the sentence still doesn't seem right, then I generally don't use the term," Allspaw said. "There is also an unshakeable awkward/weird/kissing-your-sibling feeling when 'DevOps' is ever used in conversation in Etsy's offices," he added.
Even if the term "DevOps" can't be used to define a singular role, it does seem to be used colloquially and on resumes to describe a particular set of skills.
DevOps as Skill Set
"The recruiting angle has become obvious to anyone with DevOps listed anywhere in their LinkedIn profile," said DZone MVB Aaron Nichols.
Spike Morelli, DevOps consultant and DZone MVB, listed a set of skills anyone with "DevOps" in their job title should have:
- Can communicate with more than his middle finger
- His or her concerns span the organization, not the immediate technology and product he or she is in charge of
- Understands the business and the user he or she is supporting, including internal users (dev, QA, sec, ops)
- Understands and has practiced Lean and Agile and can combine gut instinct with data
The respondents of the thread seemed to agree that a "DevOps Engineer" is not a singular roll or a type of developer or engineer, and doesn't even necessitate any particular technical skills. Instead, a DevOps Engineer is a talented engineer or developer with a certain subset of business, organizational and interpersonal skills.
Graham Duncan concluded, humorously, that a DevOps Engineer is a developer "who will work for a sysadmin's salary."