The rise of DevOps teams is upon us. The most recent State of DevOps survey found that 16% of respondents were part of a DevOps department with 55% of respondents self-identifying as DevOps engineers or systems engineers. Interesting. And if you simply Google ‘DevOps jobs’ you get over 4.5 million hits. So like it or not, this DevOps thing is going mainstream.
Jez Humble wrote last year that there was no such thing as a DevOps team and made the very valid argument that by creating a DevOps team you actually create a third silo which defeats the intent to begin with. Another very important perspective was written by Pete Cheslock who made the statement that having ‘DevOps’ in your job title was actually doing you harm.
His argument made another really important point that if/when your DevOps initiative fails then it is YOU who failed versus the whole organization that failed to change and adapt to the cultural shift. I’m not here to argue for or against whether it is good or not, but both of these articles are full of excellent advice and thought-provoking ideas.
But what it really got me thinking was with these new DevOps teams being developed, what new roles are being created or will emerge as we increase adoption and maturity? Here are a few ideas and other jobs we ran into.
DevOps Automation Engineer
Of all the job posts we see out there, this seems to be the most common. The role of a DevOps Automation Engineer is to analyze, design, implement and validate strategies for continuous deployment to both host- and cloud-based infrastructure while ensuring high availability on both production and pre-production systems. Also, the ability of this role to design and implement automated dynamic environments to support the needs of delivery teams, plus collaborate with functional and technical team members to develop deployment strategies for existing and new types of services, makes this an interesting functional role that helps bridge the gap across processes and teams.
“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.” - Puppet Labs blog post
Release managers are a relatively new but rapidly growing discipline within software engineering that address the need of managing software released from development stage to software release. Although project managers have done this in the past, they generally are more concerned with high-level, "grand design" aspects of a project or application, and so often do not have time to oversee some of the more technical or day-to-day aspects.
As software systems, software development processes, and resources become more distributed, they invariably become more specialized and complex. Furthermore, software products in a DevOps world are in a continuous cycle of development, testing, and release.
Add to this an evolution and growing complexity of the platforms on which these systems run, and it becomes clear there are a lot of moving pieces that must fit together seamlessly to guarantee the success and long-term value of a product or project. The need therefore exists for dedicated resources to oversee the integration and flow of development, testing, deployment, and support of these systems.
Enterprise architecture will continue to emerge as a critical ingredient in the functional requirements of DevOps and the role of a cloud architect is beginning to emerge. The difference between traditional-style architecture and cloud infrastructure is sort of like the difference between building a car and building a factory for cars.
A lot of what a cloud architect does is to construct meta-architecture - these fields of resources upon which applications are dynamically developed and deployed. Cloud architects differ from the people who actually design clouds in that they work with the designers to help organizations manage & secure their cloud computing platforms.
Cloud architects also work with the existing cloud environments to develop more efficient and profitable uses of the technology for the company. In other words, cloud architects use their IT skills to help organizations manage their cloud computing spaces so they can meet their goals. Cloud architects also have a key role to play in preventing security breaches and minimizing information loss as well.
Frequent delivery means being able to work efficiently in small batches. The role of a (continuous) integration specialist / test automation specialist is to enable the DevOps team to integrate and build code regularly and efficiently, to effortlessly move code from workstations to integration servers to QA to staging to live, and lastly to roll back production to the previous version at the click of button if need be, with no hassles or impacted customers.
Solid experience of working with tools such as Jenkins, Cucumber and/or Bamboo along with scripting skills in Python, Ruby, Perl or Shell will be useful as this emerging role will become more the norm as DevOps becomes the way of running IT.
What other roles are you witnessing in today’s DevOps movement or do you foresee in the not too distant future? We’d love to hear your thoughts and ideas.