Demand for people with DevOps skills is growing rapidly because businesses get great results from DevOps. Organizations using DevOps practices are overwhelmingly high-functioning: They deploy code up to 30 times more frequently than their competitors, and 50 percent fewer of their deployments fail, according to our 2013 2014 State of DevOps report (Note: Updated to latest report, which includes lots more info, including how culture improves IT and organizational performance). With all this goodness, you’d think there were lots of DevOps engineers out there. However, just 18 percent of our survey respondents [in 2012 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 75 percent. On LinkedIn.com, mentions of DevOps as a skill increased 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.
What are DevOps skills?
Our respondents identified the top three skill areas for DevOps staff:
- Coding or scripting
- Process re-engineering
- Communicating and collaborating with others
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 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.
What is a DevOps engineer, anyway? And should anyone hire them?
There’s no formal career track for becoming a DevOps engineer. They are either developers who get interested in deployment and network operations, or sysadmins who have a passion for scripting and coding, and move into the development side where they can improve the planning of test and deployment. 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 Labs, 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:
- Ability to use a wide variety of open source technologies and tools
- Ability to code and script
- Experience with systems and IT operations
- Comfort with with frequent, incremental code testing and deployment
- Strong grasp of automation tools
- Data management skills
- A strong focus on business outcomes
- Comfort with collaboration, open communication and reaching across functional borders
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.
Becoming a DevOps Engineer: What Does it Take?
If you believe DevOps is the future, 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.