The phrase ‘DevOps engineer’ is now widely used but loosely defined. The understanding of what a DevOps engineer does and the skills they require vary considerably. At one end of the scale, it is seen as a specialist role, with deep and specific coding skills. For others, it is a more generic term describing those active within a DevOps team who understand the goals and techniques of a DevOps approach to IT.
At it’s most generic, an organization looking for DevOps engineers is seeking people who can play a role in a DevOps team. And that inherently means they are actually looking for a range of people, because a balanced team, DevOps or any other, will require a range of skills that complement each other. What is needed by everyone in a DevOps team though – and therefore a starting point for any definition of a DevOps engineer’s skills are the basic DevOps responsibilities:
- Understanding of the goal and targets of the team.
- Awareness of the skills, capabilities, roles, and responsibilities of all members of the team.
- Collaboration – putting team goals above individual one.
DevOps Roles and Responsibilities
An integrated team isn’t homogenous: different members will have different skills – like attack and defense in a football team or keyboards, guitarist, singer, etc. in a band. Where the term DevOps engineer is used to encompass all team members, there will be that range in the skills and abilities of different ‘DevOps engineers.’ For many organizations, they will try and demonstrate that range by different terms for members of the team, using terms like DevOps analyst, DevOps tester, DevOps engineer, and so on.
Especially in the more extreme DevOps approaches, where a single team takes on full responsibilities for an application or service across the entire lifecycle, there is a need for a range of skills, roles, and responsibilities. In other flavors of DevOps, for example, where separate operations teams are retained, the teams named as ‘DevOps’ will still need a range of skills. It may not always be entirely in the spirit of DevOps, but this can be reflected in different job titles within the team, especially for recruitment purposes, where a recruitment needs an instant message – in the job title – about the kind of skills required.
Getting the best value from a group of disparate individuals is a complex and challenging task, with no single right answer. The whole mystique of sports management is built on that. But, simply envisaged, the best use of resources is commonly achieved by matching peoples’ skills to the tasks required. Assigning responsibilities to the different individuals in a DevOps team does make sense, but it should be overseen by the team themselves – not imposed by distinct management edicts. DevOps is about breaking down silos, and longer-term success comes from ensuring silos are not rebuilt. Seeing the difference between a team member’s responsibilities – which may be fluid – and job titles is an important tool for team harmony, efficiency, effectiveness, and real DevOps value. Letting those job titles limit an individual’s DevOps roles and responsibilities is contradicting the DevOps purpose.
With all those caveats, DevOps engineer is a familiar term in organizations and recruitment adverts.
Like DevOps, the word ‘engineer‘ is open to a range of meanings and interpretations. The relevant Websters definition tells us it is ‘a person who is trained in or follows as a profession a branch of engineering’ – that just gives us ‘a DevOps engineer does DevOps’! The Cambridge dictionary helps more with ‘designs, builds, or maintains’ and if we assume that the concept of DevOps engineer comes as an upgrade for the traditional IT role of Software engineer then we can see the role as focusing on designing and building the code for IT systems and services.
That’s exactly what large parts of the DevOps community mean by DevOps engineer: the team members(s) who focus mostly on creating and maintaining code. For those organizations, the skills they seek in a DevOps engineer are focused on the technologies likely to be encountered in a DevOps adopting company. So they would expect a DevOps engineer to be experienced and effective in writing code using Linux, Python, Amazon Web Services, and perhaps more (or other) languages depending on what they use. But that’s a starting point for many. If we compare a DevOps vs software engineer, we see that the DevOps engineer skills are that of a software engineer plus more – the ability to generate and maintain that software in a DevOps type environment. This means that a DevOps engineer would be expected to have proven software engineering skills and experience. But on top of those skills, you should have experience of practicing them in a DevOps type of environment: a collaborative, communicative, self-empowered team.
A DevOps engineer then is focused on coding the requirements, but with an involvement of the need for them, and how they will be tested, deployed, and released. That requires a breadth of knowledge larger than traditional software engineering. That is reflected in the typical salary earned by DevOps engineers – averaging around $100,000 a year in the US. Do remember that the best DevOps engineers need to be DevOps people first and DevOps engineers second.
‘DevOps engineer’ is now widely used but loosely defined. The understanding of what a DevOps engineer does and the skills they require vary considerably. At one end of the scale, it is seen as a specialist role, with deep and specific coding skills. For others, it is a more generic term describing those active within a DevOps team who understand the goals and techniques of a DevOps approach to IT.