Impactful title? Maybe yes, but this is my opinion about the job offers for DevOps Engineers.
Let me explain to you why I think this way.
DevOps is a culture, not a position.
🤔 Why a DevOps Engineer position is not possible
There is a definition, from 2015, made by researchers Bass, Len; Weber, Ingo; Zhu, Liming, in their book DevOps: A Software Architect's Perspective. They basically say that DevOps is:
A set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality.
Now, think about the responsibilities of a Software Engineer. Most of you have the responsibility to put in place those practices, to deliver fast with quality, and that’s good.
When a Software Engineer cares about the code and also about the time between committing a change to a system and the change being placed into normal production, while ensuring high quality, then:
The ownership scales up. The Software Engineer/Developer will have to use the same tools that a DevOps Engineer is supposed to provide, but now she/he will care about them, improve them, and adjust them to the use cases.
The accountability is enhanced. Now, the Software Engineers/Developers will care, not only about the code but also when and how it will be delivered to customers.
You might think that only 2 reasons are not enough. In my opinion, those are 2 of the main reasons that will make your teams first class in your engineering organization.
🧭 A bit of Context
I see quite often job offers looking for “DevOps”, “DevOps Engineers”, “DevOps Specialists”, and so on. Most likely you did as well. Let me share a couple of real examples and let’s examine them.
I will not put the names of the companies neither the link to the job positions because it’s not my intention to finger-point.
Example A:
In this real example:
cloud provider 👉🏼 My understanding is that this person should know how to set up VPCs, network, security, and manage the principal managed services for this cloud provider. So, you should know how to use a product, in this case, Oracle. I would see this more for a Cloud Engineer or someone with the Oracle Cloud certification.
Infrastructure as Code technologies 👉🏼 So, use YAML language to define the deployments and services in the Oracle cloud. For me, this is something that Software Engineers should know so they will not have to “open a ticket in Jira so the DevOps team will create the AWS S3 bucket for you”. Special note for Git which, in my opinion, is not about IaC (I guess a mistake in the job offer).
Strong experience with CI/CD 👉🏼 Again, it’s a matter to learn how to use a tool of the language of the technology. Nowadays, any Software Engineer should care and know how to deliver the code.
Example B:
AWS-based cloud infrastructure 👉🏼 As before, a Cloud Engineer is needed with certification (or similar) on AWS.
Manage Kubernetes clusters 👉🏼 As before, a Cloud Engineer is needed with certification (or similar) on AWS.
Infrastructure as Code, optimize CI/CD, monitoring, improve and optimize, document, … 👉🏼 All these are responsibilities of modern Software Engineers, the ones that do not work in silos, and will for ownership and collaboration.
I find it counterproductive not to assign DevOps responsibilities to the development teams, as they are the ones being owners and accountable for the software they build. Having a dedicated person solely for DevOps creates silos and prevents the developers, who are the true owners of the code, from taking full ownership of shipping it to production.
Do not get me wrong. I see the need to have a Developer Experience team, that provides all the services and tools, for the Software Engineers/Developers to be fully autonomous at the time to do their job. The members of that Developer Experience team must have a DevOps culture, but they are Engineers/Developers dedicated to enabling their peers. Just another way to deliver value to the company.
Also, I see the need to have teams to build the infrastructure and the platform for your product, and in that case, you need Software Engineers (as well), Site Reliability Engineers, Security Engineers, Cloud Administrators, and more. All those with the DevOps culture in their veins as well.
My prediction is that at some point:
The DevOps job position hype will disappear.
The responsibilities that some companies are putting in the DevOps Engineer position will be moved to the developers of each team because they will see the value of that.
✨Wrapping up
Let me summarize some points I consider interesting for closing today’s essay.
A Software Engineer must have a DevOps culture.
Look for DevOps culture in the Software Engineers you incorporate into your team.
DevOps culture will help your company to grow fast.
DevOps culture should be spread all over your Engineering organization, from developers to upper management.
What I shared in today’s essay is my personal opinion on the topic, happy if you disagree 😀. What do you think about all this? Leave a comment and let’s discuss and learn together.
If you enjoyed this article, then click the 💜. It helps!
If you know someone else will benefit from this, ♻️ share this post.