The demand for DevOps engineers is growing, and it’s not difficult to figure out why. Companies that utilize DevOps practices are deploying code up to 30 times faster than their competitors — and they experience 50% fewer deployment fails.
With all the advantages of DevOps tempting more companies into transforming their software development processes, its no wonder the average DevOps engineer can demand a salary in excess of $100,000.
But despite all the hype, there is a lot of confusion around what a DevOps engineer actually does. Google offers up interpretations coming from a plethora of blog posts and discussion forums — but for a clear-cut definition we've reached out to some industry experts.
What Is a DevOps Engineer?
A DevOps engineer is an individual who has the expertise and knowledge in developing and operating software applications. DevOps engineers are on hand at each stage of the software development lifecycle, from planning, building and deploying to applying continuous improvement.
Puppet writer, Aliza Earnshaw explains that a DevOps engineer should have three core skills:
- Coding or scripting.
- Process re-engineering.
- Communicating and collaborating with others.
The above skills show that present-day software development are less about who developed the software, and lean more towards ensuring the software application works across the board on various operating systems and platforms. All while frequently running tests and deployments for applying incremental changes.
Related Article: 7 Key Principles for a Successful DevOps Culture
Why Is There Confusion About the DevOps Engineer Role?
Silvan Jegen, senior software engineer at Smallpdf, said the ”biggest” misconception surrounding DevOps is that it is “not supposed to be a role but a methodology.” When we asked Jegen why brands are recruiting DevOps engineers, he answered, “mostly because introducing a software methodology into a big company is much harder than hiring people for a certain role.”
Sean Feeney, cloud engineering practice director at Nerdery, pointed towards the lack of formalization as the reason why many are not clear with what a DevOps engineer does. “The rise of DevOps happened concurrently with increased adoption of cloud services, increased enterprise adoption of Agile practices, and an explosion of git tooling. Companies realized that the duties and expectations of their engineering staff had to change, but there was no large effort out of academia and industry groups to formalize DevOps practices, as Agile had in the 1990s and 2000s,” explained Feeney.
Feeney continued that without a “formal definition” along with the growing number of components, organizations began to use the DevOps term as a buzzword to boost their recruitment activities and attract the best talent. “[DevOps] now stands for anything current employees don’t want to add to their plate, from building additional dev tooling to building and deploying the actual company product in the cloud.”
Another misunderstanding, according to Feeney, is assuming that a DevOps engineer is only concerned with designing and building the CI/CD pipeline. “The [CI/CD] pipeline exists to make the development team’s life easier, so it really should be everyone on the development team contributing to its design and continuous improvement.”
Related Article: Agile vs DevOps: What's the Difference?
How Should Companies Define Their DevOps Engineer Role?
Jegen explained that DevOps shouldn't be defined by a role, it should be an ongoing practice. “In my opinion, an engineer who practices DevOps is aiming to automate the operations part of development first and foremost. This automation includes both testing and deployment of code [in] ideally a staging and [production environment] and should run as often as possible.”
Finally, Feeney shared that no one should “strive” to be a DevOps engineer, but should acknowledge that the role of the engineer in both development and operations is evolving. “Software engineers need to have solid understanding of cloud infrastructure architectures, and infrastructure engineers need to have a solid software engineering foundation to maintain relevancy. Without traditional IT silos, every engineering resource is expected to be more well-rounded and to contribute beyond the activities typically associated with their job title,” said Feeney.