Automate IT and infrastructure, manage complex workflows, and mitigate risk at scale.
Try the full-featured Puppet Enterprise for free on 10 nodes.
Find and prevent compliance failures
Continuous Delivery for Puppet Enterprise
Build, test, and deploy infrastructure as code faster and easier
Compliance Enforcement Modules
Remediate to stay in compliance
Content & Modules
Pre-built scripts to automate common tasks
Get Puppet Enterprise
First 10 nodes are free!
Try it now
Request a demo
Find thousands of component modules built by the community and guidance on using them in your own infrastructure.
Visit Puppet Forge >>
Open Source PuppetPerfect for individuals and small infrastructure
BoltAutomate tasks in orchestration workflows
See all open source projects >>
Contribute to open source projects >>
A DevOps engineer applies a combination of development and operations skills to streamline the software development lifecycle and support collaboration between teams. So what exactly is a DevOps engineer, and what skills are required? Learn more about this important role in this post.
Table of Contents:
Demand for people with DevOps skills is growing rapidly because businesses get great results from DevOps. Organizations using DevOps foundations are overwhelmingly high-functioning: They deploy code up to 30 times more frequently than their competitors, and 50 percent fewer of their deployments fail.
With all this goodness, you’d think there were many DevOps engineers. However, just 18 percent of our survey respondents in the 2012 / 2013 survey said someone in their organization actually had this title. Why is that?
In part, it’s because defining what DevOps engineers do is still in flux. That hasn’t stopped people from hiring for DevOps skills, though. Between January 2012 and January 2013, listings for DevOps jobs on Indeed.com increased by 75 percent. On LinkedIn.com, mentions of DevOps as a skill increased by 50 percent during the same period. Our survey revealed the same trend: Half of our 4,000-plus respondents (in more than 90 countries) said their companies consider DevOps skills when hiring.
A DevOps engineer has a wide range of knowledge and experience in both development and operations. This individual can bring balance and unity to the software development lifecycle by ensuring that the goals of both development and operations teams are being met.
A DevOps engineer is usually a software developer with knowledge of deployment and network operations or a sysadmin with experience in scripting and coding. Either way, these are people who have pushed beyond their defined areas of competence and who have a more holistic view of their technical environments.
DevOps engineers are a pretty elite group, so it’s not surprising that we found a smaller number of companies creating that title. Kelsey Hightower, who heads operations here at Puppet, describes these people as the “Special Forces” in an organization.
“The DevOps engineer encapsulates depth of knowledge and years of hands-on experience,” Kelsey said. “You’re battle tested. This person blends the skills of the business analyst with the technical chops to build the solution - plus they know the business well, and can look at how any issue affects the entire company.”
If DevOps is understood primarily as a mindset, it can get awfully fuzzy. But enough people are attempting definitions for us to offer this list of core DevOps attributes:
Even with broad agreement about core DevOps attributes, controversy surrounds the term “DevOps engineer.” Some say the term itself contradicts DevOps values. Jez Humble, the co-author of Continuous Delivery, points out that just calling someone a DevOps engineer can create a third silo in addition to dev and ops — "...clearly a poor (and ironic) way to try and solve these problems." DevOps, he says, proposes "strategies to create better collaboration between functional silos, or doing away with the functional silos altogether and creating cross-functional teams (or some combination of these approaches)." In the end, Humble relents, saying it’s okay to call people doing DevOps by that term if you really want to.
A DevOps engineer must have skills in both development and operations and promote collaboration between teams throughout the software development lifecycle.
Our respondents identified the top three skill areas for DevOps staff:
These skills all point to a growing recognition that software isn’t written in the old way anymore. Where software used to be written from scratch in a highly complex and lengthy process, creating new products is now often a matter of choosing open-source components and stitching them together with code. The complexity of today’s software lies less in the authoring and more in ensuring that the new software will work across a diverse set of operating systems and platforms right away.
Likewise, testing and deployment are now done much more frequently. That is, they can be more frequent — if developers communicate early and regularly with the operations team, and if ops people bring their knowledge of the production environment to the design of testing and staging environments.
Discussion of what distinguishes DevOps engineers is all over blogs and forums and occurs whenever technical people gather. There’s lots of talk, for example, about pushing coders — not just code — over the wall into operations. Amazon CTO Werner Vogels said in an interview that when developers take on more responsibility for operations, both technology and service to customers improve.
"The traditional model is that you take your software to the wall that separates development and operations, and throw it over and forget about it. Not at Amazon. You build it, you run it. This brings developers into contact with the day-to-day operation of their software. It also brings them into day-to-day contact with the customer."
The resulting customer feedback loop, Vogels said, "is essential for improving the quality of the service."
Longtime developer and entrepreneur Rich Pelavin of Reactor8 also sees benefits from DevOps culture in terms of increased responsibility for everyone: "I’ve seen organizations where engineers get beepers, so they’re the ones who get beeped if it goes wrong [in deployment]. That pushes them into the rest of the software lifecycle. I think that’s a great idea." That's a real change from non-DevOps environments, where developers make their last commits and head home...or to the ping-pong table.
To become a DevOps engineer, you’ll want to start expanding your skills — and experience — to compete for these new jobs.
While it’s great to beef up your coding skills and get familiar with automation tools, you’ll also want to seek out projects and new roles that allow you to exercise the “soft” skills that are at the core of DevOps. Find opportunities to collaborate within and outside of your team. Help your company move to a faster test and deployment rhythm. Be open to listening to others’ ideas. Keep in mind that DevOps is less about doing things a particular way, and more about moving the business forward and giving it a stronger technological advantage.
Get the DevOps Report