Hello, my name is Roman Burdiuzha, Cloud Architect | Co-Founder & CTO at Gart Solutions | Specializing in DevOps & Cloud Solutions. Today, we will discuss how to approach the process of hiring a DevOps engineer for your company and the key functions they should perform.
Hiring a DevOps engineer is a challenging task. This role is relatively new, and successfully bringing a DevOps engineer on board requires a deep understanding of DevOps. Moreover, it necessitates a readiness to embrace organizational and cultural changes within the company to accommodate the unique contributions of a DevOps professional.
So what is the challenge?
The unique challenge here lies in the fact that even defining what a DevOps engineer should do in each specific company is not a straightforward task.
In most organizations, the list of tasks for a DevOps engineer sounded something like "do everything to save developers' time."
This is a poor definition because it cannot be considered healthy for the developer team. Such templates generate thoughts like, "everything I don't want to do should be done by DevOps – I don't want to take responsibility for it, so let DevOps handle it."
So what do we mean when we talk about "DevOps"?
Let's try to explain through analogies. Imagine a husband and wife who have two children – twins named Darynka and Bohdanka. The parents agree that the father is responsible for Darynka, and the mother is responsible for Bohdanka. This way, each of them can focus on one child, and each will specialize in raising that particular child.
Sounds like a great idea, doesn't it?
In reality, such a family is doomed because the husband and wife lack shared responsibility. The solutions the father proposes for Darynka won't be applied to Bohdanka (even though they likely have similar needs), and the same will happen with Bohdanka.
The essence boils down to this: a team functions well when it collaborates, and it can only collaborate when team members share responsibility.
We know that two people can achieve more when they work on the same product or service, but we don't always remember the basics – this is true only when they collaborate.
The idea of DevOps is to take two different roles, historically not accustomed to working together and lacking shared responsibility – developers and administrators – and say, "Let's give these roles as much shared responsibility as possible to compel them to collaborate."
Instead of the developer writing code and handing it over to the system administrator for deployment, now there is both a developer and a DevOps engineer responsible for ensuring that the code works.
This shared responsibility can manifest in various ways:
- The DevOps engineer implemented a tool that allows developers to deploy changes and roll them back.
- The DevOps engineer wrote a step-by-step deployment and rollback guide or automated this process.
- The DevOps engineer pointed to the right educational resources so that developers can accumulate the knowledge necessary for deployment.
What is the role of a DevOps engineer?
If responsibility is divided between development and operations, what is the role of a DevOps engineer, and why does it seem that they are responsible for operations?
The answer lies in the fact that a DevOps engineer is responsible for implementing the knowledge, processes, and tools that allow developers to ship code and operate the system.
This means that a DevOps engineer won't be deploying changes developed by a developer, but they will be implementing deployment tools, as well as processes and knowledge that enable this.
The effect of shared responsibility here is as follows: both the DevOps engineer and the developer are responsible for the successful deployment. However, the developer is responsible for ensuring that the code works after deployment, while the DevOps engineer is responsible for making deployment possible by providing the platform for it.
Deployment is just one example, of course.
There are other things that fall within the realm of a DevOps engineer's responsibility.
What are the responsibilities of a DevOps engineer?
There are many tasks for which a DevOps engineer may be responsible, so it's best to adhere to principles that can help define their role in your company.
Consider the role of a DevOps engineer as someone who shares responsibility for the system with developers and ensures that developers can work with it.
The platform consists of three elements:
Tools: Ready-to-use systems that already address existing issues.
Processes: Clearly defined series of steps that should be taken to solve a problem, eliminating the need for developers to spend time and thought on it.
Knowledge: Information and mental models necessary to solve a problem.
We can say that the role of a DevOps engineer is to create a platform for the system to operate. This platform is designed to provide various capabilities.
Here are just a few of them:
- Infrastructure: Provisioning, maintaining, and scaling infrastructure.
- Monitoring: Logging monitoring, metrics, and traces, triggering alerts.
- Continuous Integration: Continuous collaboration on the same codebase.
- Secrets Management: Allowing the storage and retrieval of confidential configuration data. And so on.
Example: Monitoring
Let's use the example of monitoring to illustrate how we build a platform using tools, processes (both automated and manual), and the knowledge of DevOps engineers.
For instance, developers need to understand what happens to their applications after release.
The actions of the DevOps team might unfold as follows:
1 - Recommending all developers to start exposing metrics. The DevOps team provides developers with a community SDK (Tools) for this purpose and shares educational guides (Knowledge).
2 - Editing the company's microservices template to incorporate the out-of-the-box SDK (Processes).
3 - Deploying Prometheus to start collecting metrics (Tools).
4 - Deploying Grafana to begin visualizing metrics (Tools).
5 - Conducting a workshop on using Prometheus and Grafana (Knowledge).
6 - Creating an instruction on managing an application metrics dashboard (Processes).
Following these steps, developers can initiate application monitoring using metrics and the established platform.
This is just one example.
Summing Up:
Hiring a DevOps engineer is challenging mainly because to achieve success, one must first deeply understand the essence of DevOps.
DevOps is a culture aimed at improving collaboration by increasing shared responsibility.
If your company is facing challenges in hiring a DevOps engineer, we would be happy to consult with you or even participate in technical interviews with potential candidates.
Additional Articles:
Hire DevOps Engineers
Hire Kubernetes Experts
Hiring AWS Developers
Hire a Release Train Engineer
Top comments (0)