Enterprises including Adobe, Amazon, and Target are increasingly turning to DevOps as a way to deliver software and security updates more rapidly, both internally and to customers. And the spread of the workflow means there are more DevOps engineer positions available than ever.
DevOps engineer came in at no. 3 on Indeed’s list of best jobs in America for 2017, in terms of salary, number of job postings, and opportunities for growth. These positions grew by 106% in the past few years, Indeed found, and boast an average base salary of $123,165.
“While there are a raft of technical skills that may be required for any given environment, the reality of DevOps engineering is one of frequent change,” said Matthew Boeckman, developer advocate at DevOps startup VictorOps. “Whether in deployment pipelines, systems architecture, or incident management, a DevOps engineer will be constantly challenged by new technology, complex problems, or dynamic roles.” This means a person in this position must be curious, motivated, and intelligent, Boeckman said.
Here are the top 10 skills that experts say DevOps engineers need to succeed on the job.
SEE: Quick glossary: DevOps (Tech Pro Research)
1. Soft skills
DevOps is about transforming the functional work experience between the development and operations teams by breaking down the silos, said Karthiga Sadasivan, director and head of DevOps at Happiest Minds Technologies. “A DevOps engineer would be required to be a bridge between the silos and bring different teams together to work towards a common goal,” she said.
People skills are key, but tend to be underappreciated, said Alan Zucker, founding principal of Project Management Essentials. As software engineers, DevOps professionals tend to look to tools rather than people and processes.
“Great DevOps engineers start by understanding the people, the culture, and how the organization runs,” Zucker said. “They then build a strategy that focuses on simplifying the overall operating environment to achieve the goal of continuous delivery.”
For a DevOps team to be successful, it needs to include individuals who possess strong communication skills, said Alex Robbio, president and cofounder of Belatrix Software. “Similar to Agile development teams, soft skills are incredibly important–not just for the individual engineer, but also in making the organizational cultural shift to implementing and then standardizing DevOps,” Robbio said.
2. Broad understanding of tools and technologies
While new technologies and tools crop up continuously on the DevOps landscape, it’s important for a good DevOps engineer to have a broad understanding of those in the following areas, according to Sadasivan:
Source Control (like Git, Bitbucket, Svn, VSTS etc)
Continuous Integration (like Jenkins, Bamboo, VSTS )
Infrastructure Automation (like Puppet, Chef, Ansible)
Deployment Automation & Orchestration (like Jenkins, VSTS, Octopus Deploy)
Container Concepts (LXD, Docker)
Orchestration (Kubernetes, Mesos, Swarm)
Cloud (like AWS, Azure, GoogleCloud, Openstack)
A great DevOps engineer is always curious, said Ron Gidron, technology evangelist at Automic Software. To constantly learn new things, he or she must constantly ask questions and listen to answers to generate new ideas, and welcome new challenges, he added.
SEE: How to become a DevOps engineer: A cheat sheet (TechRepublic)
3. Security training
While combining development and operations is a great way to streamline development and deployment of code, the faster cycle means that vulnerabilities can be introduced into code much faster than previously, according to Ryan O’Leary, vice president of the Threat Research Center at WhiteHat Security.
Therefore, DevOps engineers must be able to write secure code to protect applications from attack, as well as defend against common cybersecurity vulnerabilities, O’Leary said.
As companies trend toward DevSecOps, it’s key to build in secure software from the start, rather than bolt it on later, said Meera Subbarao, senior principal consultant for the Synopsys Software Integrity Group.
“Perform security activities during the requirements phase of the DevOps journey,” Subbarao said. “The earlier in the journey security is addressed, the cheaper it is to fix problems. DevOps professionals, even though they don’t need to be expert security professionals, will benefit tremendously from having software security training.”
SEE: Special Feature: Riding the DevOps Revolution (ZDNet)
4. Experience with infrastructure automation tools
As in so many tech environments, a key element of DevOps is automation, said James Giles IV, DevOps engineer at Datical. A lot of the manual tasks performed by more traditional system administrator and engineering roles can be automated by using scripting languages like Python, Ruby, Bash, Shell, Node.js. “This will ensure consistent performance of manual tasks by removing the human component and allowing teams to spend the saved time on more of the broader goals of the team and company,” Giles said.
A DevOps engineer must possess the ability to implement automation technologies and tools at any level, from requirements to development to testing and operations, said Jim Morse, associate vice president of technology at AT&T.
The days of manually-configured infrastructure systems are over, said Adam Kadzban, lead DevOps engineer at kCura. “Infrastructure needs to be provisioned and configured with code, or you will drown in support,” he said. Tools like PowerShell, Chef, and Terraform enable this, allowing infrastructure automation. Experience with on-prem (VMWare, Hyper-V, etc) and cloud (Azure, Amazon Web Services, etc.) infrastructure providers is also a huge plus. “Don’t forget to automate connecting your infrastructure to your monitoring tools,” Kadzban said.
5. Testing
Automation is driven by testing, so strong testing skills are needed to be a successful DevOps engineer, according to Andrae Raymond, programmer and consultant at Software Stewards.
“The idea of automating code or feature deployments can be unsettling especially when you consider the effect on end users when something breaks,” Raymond said. “When proper tests are in place you can rest assured that each function is doing what it was written to do. From all stages from development to deployment we can run tests to make sure the entire system is intact with new features.”
6. Customer-first mindset
While DevOps engineers are not typically external-facing roles, developers, QA, customer success, project management, and business leaders are all their clients, said Giles. “When juggling requests from operations, development, and product teams the ability to empathize, prioritize, and be transparent are key to successful relationships,” he said.
First and foremost, a great DevOps engineer always cares about delivering value to customers and wants to understand and measure how their work is moving the needle, said Omri Gazitt, chief product officer at Puppet. By caring about the outcome as opposed to their part of the supply chain, they will have the right instincts around how to best optimize for end-to-end success, he added.
7. Collaboration
Strong DevOps managers must be great team members, and help relieve bottlenecks by assisting coworkers as necessary, Gazitt said. “Any problem is everyone’s problem, and a great engineer always makes those around them better,” Gazitt said.
A great DevOps engineer works in small batches so that others can do their work more easily, from performing code reviews to writing acceptance tests. “The key is to have empathy towards others so that the entire team can move more quickly,” Gazitt said. “DevOps requires putting the customer and the team ahead of any individual member, and that’s why these qualities set great engineers apart.”
SEE: Job description: DevOps engineer (Tech Pro Research)
8. Flexibility
A successful DevOps culture demands flexibility, said Dan Simoes, senior director of operations for tCell. “There are no sacred cows–all of this is a risk/reward exercise,” he said. “This is an opportunity for many security leaders to grow, and a chance for DevOps groups to lead.”
Multitasking is another key skill for a DevOps engineer, said Anastasia Grinman, DevOps engineer at JFrog. “As a resource that works on mission-critical systems at the heart of processes for different teams, a DevOps engineer gets requests from many different people at once,” Grinman said. “Frequently, everything is important and everything is urgent. DevOps engineers find themselves putting out fires, so the ability to work on multiple tasks at the same time is critical.”
9. Network awareness
A DevOps engineer must be network-aware, said Jim Frey, vice president of strategic alliances at Kentik. “The end objective of any DevOps project is to successfully deliver an application to the end user who will consume it. That involves the network,” Frey said. “My advice for DevOps engineers is to ignore the network at your peril. A good DevOps engineer will recognize that you have to account for the network in your design, your planning and your testing.”
10. Big picture thinking
While many DevOps engineers are excellent software engineers, they sometimes lack the ability to look at the big picture and identify what makes sense for the client, Zucker said.
Because DevOps combines the needs and wants of multidisciplinary teams and applications, a successful DevOps engineer can’t lost sight of the big picture for DevOps and digital transformation at the enterprise level–especially in a large organization, Gidron said. This helps avoid creating contention points and constraints that carry from one project to the next.