DevOps

DevOps Engineers — 6 Skills of a Truly Great Candidate

Why a DevOps Engineer is not just a fancy System Administrator

Alex Kainz
DevOps Dudes

--

What makes a DevOps Engineer great? Ask a System Administrator for a definition, what they do and you’ll probably get an answer about setting up and maintaining the IT infrastructure. That is a value proposition that is easy to evaluate. Is the infrastructure running? Good job, System Administrator, here is your gold star. If it isn’t, well we are not angry, we are disappointed in you.

Photo by Allie on Unsplash

Ask a DevOps engineer for a definition of DevOps and you will get almost as many answers as there are people. In my opinion, DevOps is about building and running software in a rapidly changing environment. DevOps should be like speedup ramps in racing games for the organization.

I’ll try to not stretch the metaphor too far, but DevOps is about speeding up the process and not about process and restriction. If no one sees DevOps is there, but goes home on time, the team did a good job. But DevOps has too please many masters, not only developers, but also business, security and infrastructure. In this post I’ll explore what qualities of a great DevOps engineer are.

Lazy

When I’m talking about a healthy dose of laziness, I don’t mean the kind that makes you sleep on the couch all day. I’m talking about the kind of laziness that makes you do tasks in the most efficient way. The first way to do it, is use existing tools, don’t reinvent the wheel. If there is a perfectly fine way to do something in bash, use it. The second way is to stop a second before doing something and see if there is a lazier way to do it . For example you could go through each line of a file and manually change it, but you could also apply a awk script. Or sometimes a text editor that supports column mode can save a lot of time. Thirdly and most importantly automate. While the initial time investment is likely higher than manually doing the task, it will pay time dividends after a number of usages. Also it lightens the cognitive load. Automating a task is a way of writing down the individual steps. So instead of having to go to a wiki page and check the individual steps or remember them, the automation has them written down.

Photographer: Lance Anderson | Source: Unsplash

The only problem arises when the fix is worse than the problem. This is the case when the automated solution is harder to use than doing the actual task. But then the healthy dose of laziness should kick in and iterate on the solution until it becomes frictionless.

Transparent

What you don’t measure you can’t improve. In DevOps this is true as much as in management. If you don’t know the average build time how will you know if an action improved it. Also a skilled DevOps engineer needs to know what to focus on. If a build runs 100 times a day and developers have to wait for the result then this may be a good process to improve. Days have limited hours and a good DevOps engineer will improve the processes that have the biggest impact. To do that transparency and an eye for measuring is a great asset.

Data reporting dashboard on a laptop screen.
Photographer: Stephen Dawson | Source: Unsplash

Since a good DevOps engineer knows that this is true for everyone, he will make sure that everyone has access to the measurements they need. If a build process is collecting performance metrics or coverage it is important to make these measurements available to the developers, so they can improve the code. Even if the code doesn’t need improvement it is important to surface the data, so they can make informed decisions.

Humble

With this quality I mean that the DevOps engineer doesn’t seem himself as the king of the castle. It is easy to become territorial about the systems that one controls. It is tempting to put up processes and barriers. But, his position should be to make the organization as frictionless as possible. Every DevOps process that slows down the organization needs to be questioned. Do we really need three signatures to go into a test environment. This doesn’t mean that he let’s himself be bullied around, he still needs to insure that all systems are running smoothly.

Thank you garage interior
Photographer: Matt Jones | Source: Unsplash

To insure that minimal processes are needed the good DevOps engineer will build a resilient infrastructure. If the most incompetent or malignant developer can not break the infrastructure, minimal process is needed.

Innovative

The DevOps field is currently changing at a pace that is breath taking. With cloud operators innovating for market leadership. Open-Shift or Kubernetes, Service-Mesh or API Gateways, Containers or Serverless, the options are endless. A good DevOps engineer stays up-to-date on options. This doesn’t mean chasing every new product or architecture, but being aware of options. This also goes back to being lazy. Only if the DevOps engineer knows the product landscape he can know if there is a product that can be used to automate an existing task. If tracing calls needs to be setup per service in my cluster, knowing about solutions such as service-mesh make it possible to automate this task.

Agile

A lot of the qualities that I mentioned up to hear lean on agile principles. This is not surprising as many development teams today are following agile principles to some degree. The DevOps engineer is often in a position between the rapid agile iterations and the traditional processes of the underlying infrastructure. He has to be the agile champion for developers and business trying to race to market.

Photo by Daria Nepriakhina on Unsplash

This means he should fully embrace agility. How else can you be the champion for a cause. Fully embracing agility doesn’t mean he has the prettiest Kanban board or the most stand-ups. It means that the DevOps engineer is willing to deliver and improve, again and again.

Responsible

The other qualities paint the picture of a happy go-lucky DevOps engineer that lazyly uses the latest software and spends his time in SCRUM ceremonies. But a good DevOps engineer will still know that he is responsible for system health, uptime and security of the system. Even Facebook has moved from “Move fast and break things” to “Move fast with stable infrastructure”. Improving time to market for an organization can mean a tremendous financial benefit. Being the first in a market can be terrific. But the loss in faith of a single security breach or a sustained outage can be devastating. So a great DevOps engineer will make sure that security is top notch and that roll-out processes are controlled and can be rolled back if necessary. For deployed software and infrastructure.

Does your Organization Support these Skills?

A great DevOps engineer is hard to find. The qualities in this article seem to be at odds with each other. How can one be lazy but also innovative. How can a person be agile but also responsible. In reality these skills support each other. A DevOps engineer that is responsible with a great infrastructure that is resilient and secure can be innovative and agile. A lazy person builds transparency to a degree that the developers can take care of fixing their own problems. And a humble person will not make the processes about himself and enable the organization to move truly fast, without breaking things.
A great DevOps engineer is nothing without an organization that is not build on these values. If the organization is deploying only every 6 months, the most agile DevOps engineer can not improve time to market. If the organization doesn’t see the value in security and resilient infrastructure, the most responsible DevOps engineer will not be able to save them. And if the organization structures make labyrinths look straight forward, the most humble DevOps will not be able to make the developer experience frictionless.

By Author

--

--

Alex Kainz
DevOps Dudes

CTO at Lookeen, lives in Thailand, loves to write code, eat and travel