A DevOps engineer is an IT professional who works with software developers, system operators (SysOps) and other production IT staff to oversee code releases and deployments. The role calls for someone who has relevant hard and soft skills to overcome the traditional barriers between software development, QA, testing and IT operations teams and foster a collaborative, holistic environment.
Roles and responsibilities of a DevOps engineer
A DevOps engineer must know how to manage the IT infrastructure that supports software code in dedicated, multi-tenant or hybrid cloud environments. They might have to provision resources, select an appropriate deployment model, direct testing protocol to validate each release and monitor performance after release. Tasks might include test data preparation, results analysis, problem troubleshooting and issue communication back to the software developers.
The DevOps approach to software development aims for frequent, incremental changes to code versions, which means frequent deployment and testing regimens. Although DevOps engineers rarely code from scratch, they must understand the basics of software development languages and be familiar with the development tools used to create new code or update existing code. A DevOps engineer works with development staff to tackle the necessary coding and scripting to connect various application elements, such as APIs, libraries and software development kits (SDKs), and integrate other components such as SQL data management or messaging tools that DevOps teams need to run the software release on OSes and production infrastructure.
Specifically, a DevOps engineer focuses on automation and maintenance in the live environment, so it's common to find job roles that underscore automation and maintenance of software products, systems and services. For example, a DevOps engineer would automate and maintain a big data build pipeline; perform on-call service for the system availability; develop or source application and system management tools that mitigate manual effort; implement automated management features, such as performance monitoring, diagnostics and failover and availability capabilities; and evaluate risks for all changes while maintaining high availability within the environment.
DevOps skills, training and certifications
The role of DevOps engineer does not fall along one career track; professionals evolve into the position from a variety of backgrounds. For example, a DevOps engineer might start as a software developer who oversees aspects of IT operations. Conversely, a DevOps engineer might move up from a system administrator role because they have gained knowledge about coding, scripting, integration and testing. There can be some overlap between DevOps and SysOps engineer job descriptions depending on the organization and its technical needs, but it's the DevOps engineer whose responsibilities include changing business processes as needed to solve organizational problems and improve business outcomes.
Despite the broad and varied scope of DevOps roles, there are some common skills and traits for job candidates to emphasize when they seek employment, such as:
- a comprehensive background in OS administration, such as Linux and Windows;
- strong experience with a range of automation and configuration management tools such as traditional scripts, as well as more specific tools such as Puppet and Chef;
- a clear understanding of coding and scripting with common languages, such as PHP, Python, Perl and Ruby;
- knowledge of at least one major coding language, such as C++ or Java;
- the ability to identify, assess and integrate various open source technologies and cloud services;
- a strong IT hardware and operations background with hands-on expertise in servers, storage and network device installation, provisioning and monitoring. This is usually supplemented with a knowledge of IT best practices for fault-tolerant, high-availability operations;
- supportive and collaborative management abilities in a team environment, as well as proven customer-facing management skills;
- strong knowledge of virtualization technologies, such as VMware vSphere for VMs, as well as expertise with container technologies, such as Docker and Kubernetes;
- proven experience with CI/CD tools, such as Microsoft GitHub, Atlassian Jira and Confluence, Red Hat Ansible, Prometheus and Jenkins;
- detailed, hands-on experience with public cloud resources and services such as AWS, Microsoft Azure and Google Cloud;
- experience with a diverse range of IT monitoring and management tools, such as Cloudflare and Datadog; and
- knowledge on how to troubleshoot and resolve technical issues in test and production environments.
Some companies hiring DevOps engineers might include additional job requirements, such as a security clearance, so it's important to review the specific posting for each role or employer. The formal education and training requirements for DevOps roles is typically light, and usually includes a Bachelor's Degree in computer science or engineering, along with an AWS or Azure certification in public cloud services. DevOps hiring managers say there is no practical substitute for hands-on experience.
DevOps engineer salary
In 2019, the average annual salary for a DevOps engineer is more than $110,000 (USD), according to the DICE 2019 Tech Salary Report. The actual salary can vary depending on the scope of actual job functions, as well as the geographic location of the position. This pay grade currently places DevOps salaries ahead of those for traditional IT roles such as software engineer or developer, hardware or systems engineer and project manager. However, as DevOps becomes a fixture of the modern enterprise, the dramatic yearly increase in DevOps salaries has started to slow and level off.