How to Become a DevOps Engineer: An Honest Guide

Sharon Sahadevan
8 min readMay 7, 2023

The role of a DevOps Engineer is highly sought after in the IT field and often comes with attractive compensation packages. However, the interview process for this position can vary depending on the organization, and job titles may also differ. For example, some organizations may refer to the role of a Site Reliability Engineer or Platform Engineer.

Despite the differences in titles and interview processes, the core responsibilities of a DevOps Engineer remain the same. These professionals are responsible for bridging the gap between development and operations teams, implementing automation and continuous delivery practices, and ensuring the reliability and scalability of applications and infrastructure.

If you’re interested in pursuing a career as a DevOps Engineer or a related role, it’s essential to research each organization’s specific requirements and responsibilities. In addition, analyzing each organization you are interested in will help you prepare for the interview process and position yourself as a strong candidate for the role.

In this article, I will share the blueprint that helped me succeed in DevOps interviews throughout my career. You can improve your chances by following the tips and strategies I outline.

What Level of Proficiency in Coding Skills is Required?

DevOps Engineers may have varying technical backgrounds, such as operations or software engineering. Therefore, individuals with different skill sets and experiences can become DevOps Engineers.

Engineers with an operations background may find coding challenging and feel apprehensive about facing problem-solving coding interviews. However, problem-solving skills are learnable and can be improved with practice over time. Therefore, practicing coding daily for at least a few hours is essential to enhance your skills.

First, you must learn a programming language, and I recommend starting with Python since it is easy to grasp. Begin by mastering the programming fundamentals and then move on to basic data structures and algorithms. It is not necessary to learn advanced data structures and algorithms right away. You can learn these over time. However, the primary focus should be clearing the DevOps Engineer coding interview.

Generally, DevOps Engineer Coding interviews are more straightforward than Software Engineering Coding interviews based on my interview experience. You will be surprised how many interviews I’ve faced without coding questions.

It all depends on the company; most companies will focus on scenario-based technical questions based on your chosen technology stack.

The Strategy I Used to Enhance My Coding Interview Skills

  • Start from easy level questions
  • Filter the question based on the type of Data Structure.
  • Start from Array and String first then move on to next Data Structure
  • Learn about specific Data Structure and do questions to apply your knowledge. Do not try to learn everything at once. Same goes with algorithms
  • Prepare to complete easy level questions at least 500
  • Yes, leet code is enough you do not need to purchase paid courses.
  • Consistency is the key.
  • Do not spend more than 30 minutes on the question. Feel free to look at the solution and code it your self. Better if you write the code on a piece of paper and run the execution in your head.

What programming language to learn first?

Many beginners waste time deciding which programming language to learn. My advice is to start with Python. Learn the programming fundamentals with Python and improve your logical thinking and problem-solving skills.

You do not need to spend hours on leet code solving coding challenges. Instead, you must apply your Python skills to write simple automation scripts. For example, list the files in a particular S3 bucket. As a DevOps Engineer, you will write Python automation, not complex algorithms.

Once you are comfortable with Python, learn Golang, as it is more efficient and best for system-level programming. Golang is getting more popular in the DevOps community, so learning Golang will help you stand out from the rest of the crowd.

Which Technologies Should I Learn First?

  • Kubernetes
  • Docker
  • Terraform
  • Jenkins
  • ArgoCD
  • AWS / Azure / GCP
  • Ansible / Puppet / Chef

Master Kubernetes to Boost Your Chances of Getting Hired

Kubernetes has emerged as the leading technology for container orchestration, making it a highly sought-after skill in the job market. By acquiring proficiency in Kubernetes, you can position yourself as a desirable candidate for employment opportunities.

Kubernetes has a steep learning curve, and it could be difficult for beginners to grasp everything about Kubernetes. Therefore, companies do not expect you to understand in and out about Kubernetes because no one does. Instead, you have a fundamental knowledge of Kubernetes.
Plenty of books and tutorials are available, and I will mention some of the resources I used to learn later in this post.

I faced many technical interviews; During those interviews, the interviewer was mainly interested in my Kubernetes knowledge than my Leet code problem-solving ability.

Kubernetes Learning Resources

I personally used books rather than video tutorials to learn Kubernetes. Here are some of my recommendations.

  • Kubernetes official documentation is an excellent place to start https://kubernetes.io/docs/concepts/overview/
  • Cloud Native DevOps with Kubernetes by John Arundel (Author), Justin Domingus (Author)
  • Kubernetes Patterns: Reusable Elements for Designing Cloud-Native Applications
  • Kubernetes Security and Observability by Amit Gupta and Brendan Creane

Mastering the Fundamentals of Containers

Having strong understanding of containers will take you so far in your career. At the time of writing containers are used almost all the latest projects so you must have deep understanding of container technology.

You need to understand how containers work internally and how exactly used in projects. Container concepts were originated from Linux Cgroups and namespaces. One of the important concepts in containerization are isolation and resource allocation. These two things are achieved using Cgroups and Namespaces.

Container runtime engines are responsible for creating and managing containers on a host. They handle various tasks, such as image management, container isolation, and resource allocation. Here is a list of some popular container runtime engines:

But remember you do not need to learn everything. I have only worked with Docker and containerd.

  1. Docker: It has become synonymous with container technology and provides a comprehensive platform for building, shipping, and running containerized applications.
  2. containerd: containerd is a high-level container runtime that was originally developed as a part of Docker but later became a separate project under the Cloud Native Computing Foundation (CNCF). It provides core container lifecycle functionality. containerd can be used as a standalone runtime or embedded into other tools.
  3. CRI-O: CRI-O is a lightweight container runtime designed specifically for Kubernetes. It implements the Kubernetes Container Runtime Interface (CRI) and supports OCI (Open Container Initiative) compatible runtime engines like runc.
  4. runc: runc is a low-level container runtime engine that is the default runtime for Docker, containerd, and CRI-O. It implements the OCI runtime specification, providing the foundation for higher-level container runtimes.
  5. Podman: Podman is a daemonless container engine for developing, managing, and running OCI containers on Linux systems. It offers a similar user experience to Docker but is designed to be more secure and flexible by running containers without a central daemon.
  6. LXC (Linux Containers): LXC is a container runtime engine that predates Docker and provides a lightweight, OS-level virtualization solution. It uses Linux kernel features like cgroups and namespaces to create isolated environments, allowing multiple Linux distributions to run simultaneously on a single host.
  7. Kata Containers: Kata Containers is a runtime engine that combines the lightweight nature of containers with the isolation and security of virtual machines. It integrates with containerd, CRI-O, and other OCI-compatible runtimes, offering an alternative to traditional container runtimes for security-sensitive workloads.

Automate Deployments with Effective CI/CD Pipeline Implementation

One of the core responsibilities of a DevOps Engineer is to streamline the software delivery process of CI/CD pipelines. Therefore, hands-on experience building CI/CD pipelines using tools such as Jenkins, GitLab CI, and Travis CI is crucial. Additionally, understand the differences between various CI/CD tools and be able to discuss the pros and cons of each in the context of a specific project.

You do not need to spend time learning all the CI/CD tools out there. Just remember the following tools and do some small projects.

  • Jenkins
  • Argo CD
  • Git Workflow

The above tools will give you enough knowledge to build CI/CD pipelines in other tools.

The Importance of Accepting that You Can’t Know Everything

It’s essential to recognize that you won’t be an expert in every technology or tool in the DevOps ecosystem. So instead, focus on developing a solid foundation in the core areas while showcasing your ability to learn and adapt quickly. During interviews, be honest about your knowledge gaps and demonstrate your eagerness to learn and grow in those areas.

The companies also do not expect you to know everything. However, you must know the core technologies mentioned above and keep improving your problem-solving skills using leetcode. It will solidify your data structures and algorithm knowledge.

Also, focus on system design concepts as well. Even though, as a DevOps Engineer, you won’t be designing systems, it is better to have that knowledge, and it will lead you to promotions easily, and you can impress your interviewer.

I started as a Technical Support guy, but core DevOps technologies, Data Structure, algorithms, and System Design knowledge helped me become a better Solution Architect quickly.

Your Attitude: The Key to Success and Growth

In the DevOps world, collaboration and communication are critical. A positive attitude, willingness to work with others, and openness to feedback can help set you apart from other candidates. In addition, emphasize your ability to work effectively in cross-functional teams and to adapt to new technologies and methodologies.

I wrote about how my positive attitude helped me excel from the Technical support position to the Solution architect position. You can read it here: https://medium.com/@sharonsahadevan/my-devops-journey-how-i-went-from-being-a-technical-support-guy-to-a-solutions-architect-aab00c67ef21

Top DevOps Tutorials for Beginners

paid

Top Certifications for Devops Engineers

  • CKA, CKAD, CKS
  • All AWS certifications similarly, Azure, GCP
  • CCAAK, CCDAK

Having mentioned these certifications, I need to clarify one thing. Certifications do not guarantee you will land in a DevOps role. On the other hand, you can land a DevOps gig without any of these certifications.

Certifications will help you stand out from the crowd and it shows your dedication and subject matter expertise in a particular technology, but that does not guarantee anything. You still need to have technical skills to get through the interview.

Many beginners have passed AWS certifications by memorizing concepts without practice exposure to the technology, thinking achieving the certification is enough. However, if you are someone preparing for AWS certification, check out this repo, as it has mini-projects where you can get a practical experience:

So always remember that you do not need a job to gain practical experience. You can build things yourself in your cloud account, especially mini projects. Even you can include them in your resume!

Summary

In conclusion, to succeed in DevOps interviews, focus on mastering key technologies and tools like Kubernetes and Docker, build practical experience with CI/CD pipelines, and develop strong problem-solving skills in coding.

Remember that you don’t need to know everything, but having a positive attitude and demonstrating your ability to learn quickly can make a significant difference. By following these tips and strategies, you’ll be well-prepared for your following DevOps Engineer interview and increase your chances of landing your dream job in this rapidly growing field.

--

--