October 25, 2018
I recently came across a debate about DevOps job titles: Build Engineer, Release Engineer, DevOps Engineer, Site Reliability Engineer and Cloud Platform Engineer. What do they actually mean in terms of responsibilities and technical skills? How did they come into the picture over the last couple of years?
What I love most about this debate is that it continuously improves (pun intended), like a living organism. Regarding the pun, if I would have to choose a single word that could describe the DevOps mindset most accurately, it would be "Continuous." No, not automation, that’s just the means by which things are made continuous.
The way I see it, if DevOps was be a person, automation would be the heart, knowledge would be the blood, while agile would be the brain. In a DevOps environment, standard software developing processes such as delivery, deployment, monitoring, testing, auto-scaling are mandatory and can only be achieved by automating workflows, operations and anything repetitive that requires human effort. Did you actually know that repetitive work is the root cause for boredom? Automation is the weapon of choice to fight it!
In order to address this requirement, several job titles have emerged: Build Engineer, Release Engineer, DevOps Engineer, Cloud Engineer and some other flavours along these lines. Let’s look at each of them and break down what they actually mean.
Someone with technical expertise in automating the build process, who would be able to implement continuous code integration, as a first step towards building a Continuous Delivery Pipeline. Specific technical skills that are required for this role: source control management tools (e.g GIT), scripting languages to build the source code (e.g Gradle, Maven), CD related tools (e.g Jenkins, Bamboo, Artifactory, Nexus);
They perform the same tasks that Build Engineers do but, in addition, they also have considerable knowledge of managing environments/platforms, configuration management & deployment automation. They are expected to build a complete and reliable pipeline, connecting all processes and tools together;
This is a role launched by Google, heavily sustained by one of the top DevOps researchers, Jez Humble, which is rapidly being adopted. This individual has both coding and system engineering skills, and “is fundamentally doing work that has historically been done by an operations team, but using engineers with software expertise”. This role is expected to be responsible for the availability, latency, performance, efficiency, change management, continuous monitoring, emergency response, building up strategies for rollbacks or auto-scaling;
This job title is very similar to a Reliability Engineer, and this individual should be able to build platforms as a service (PaaS), enabling a more scalable approach to services and tools used in a project;
This is one of the most criticised job titles in the IT industry, but also, by far, the most sought after. The concern is to not create another silo inside your organisation, because the technical skills required for this role overlap with other job descriptions. Some of the extra requirements can be related to networking, security, cloud computing, DBs, API Gateways. It might look like this is too much for one person, but this also depends on the size of the project/company.
To conclude, no matter what job title you have inside your organisation, if your plan is to automate as much as possible, do so, live for it, analyse the outcome of your pipeline frequently and adapt.
If you enjoyed this blog, check out part II of the DevOps blog series on What Exactly is DevOps.