DevOps still lacks a commonly accepted definition, as discussed recently in the blog post The Problem with Defining DevOps. Kind of obvious in retrospect, but this really complicates meaningful usage of the word, particularly when used outside of the DevOps community.
Just before joining UpGuard I worked in embedded systems, where the term 'devops' is hardly ever used. I had many variants of this conversation in my last few weeks:
"Hey I heard that you're leaving... where are you going?"
"Cool DevOps startup."
"Umm... what does DevOps mean?"
Most had heard the word, but when used to describe the job, the word carried no meaning with it. After 5 of these conversations, I instead started describing configuration management, completely avoiding the word DevOps. This didn't work either:
"... where are you going?"
"Cool startup that works on configuration management software"
Then I would attempt to describe configuration management. This is an important subject, but people usually wanted a 1-2 sentence answer. I tried a few times talking about the specific technologies:
"... where are you going?"
"Cool startup, using Ruby, go, automation stuff, EC2..."
Which satisfied some people, but this is actually the vaguest version so far. The language & tool choice is rarely actually important; producing value is important.
This got me thinking; what are genuinely useful uses of the word 'devops'? Is the problem a lack of cohesive definition? Or is it a matter of time before the word reaches common usage in the larger tech community? Maybe I need to explain better? Suppose we take the definition offered recently and run with it:
"DevOps is the idea that developers and operations should collaborate more closely than they traditionally have, so neither side is caught with their pants down when something blows up."
The goal of DevOps is to improve processes and relevant knowledge such that failures are less frequent, and releases can occur more often. Basically, higher quality and higher velocity. What information does 'devops' convey in various contexts? Collaboration between developers, operations, quality assurance and other roles is a cultural aspect of a team & working environment, involving many people rather than an individual. So what is a DevOps skillset? Or a DevOps job? Or a DevOps engineer? Or a DevOps company?
A DevOps skillset usually involves relevant technical experience from system administration, release management, process engineering, scripting languages, and usually some emphasis on IT automation tools. Communication is another hugely relevant skill. This is a large amount of ground to cover, and it is entirely possible to have a career with deep expertise in any of these areas alone. Given the large breadth of possibilities within any area let alone permutations of areas, 'devops skillset' alone is poorly descriptive. However, when DevOps is used as a category of skills, there is actually a lot of value. This line in a resume would be nice: 'DevOps experience: Ansible, Docker, Python, Ruby, Ubuntu system administration, collaboration'; it provides the checklist of specific skills, and a context to tie them all together. It also demonstrates some awareness of how to apply skills to provide value, which is the essence of engineering, rather than a list of buzzwords.
If a DevOps job is taken to mean 'a job that uses a full DevOps skillset', this is still vague because 'DevOps skillset' is already vague. Perhaps this is less vague when describing the responsibilities of the job as opposed to the skillset of the job. This too is problematic; DevOps is about the collaboration of many roles, and this definition does not map well to individual responsibilities. Being responsible for 'dev and ops' basically degenerates into 'you must do everything computer-y'. Sometimes this is geninely the case at small startups, but is a lazy description in many contexts, and a cop-out in organizations of adequate size where a certain degree of specialization brings a net benefit.
The word 'devops', from what I can tell, is most useful when describing the culture and processes employed by a team or company, and is the closest to the meaning offered here. Many definitions found online appear to be converging towards this as well. There is value in some other contexts, but DevOps is frequently used in contexts where it carries little meaning. Still it can be very difficult to tell whether an organization describing itself as 'using DevOps' is truly interested in increasing collaboration, or if they're simply interested in cashing in on the emerging bandwagon. But this should not detract from the meaning, goal, or value of DevOps.
What do you think? How could I have described by new DevOps job more effectively? Leave your comments.