I’m a DevOps Hiring Manager. Here’s How to Crack My Technical Interviews! (Part 1)

Luke Shaughnessy
6 min readDec 2, 2020

The market is hot, and the pay is great! But, how do you get hired? Here is what we look for when hiring an engineer at my company!

It’s no secret that the market for DevOps Engineers is thriving and that those engineers with the required combination of skills, experience, and talent can enjoy a wide variety of well-paid opportunities with employers almost anywhere in the world. According to glassdoor.com, a website where employees anonymously report their salaries and work experiences, the average salary for a DevOps Engineer in the U.S. is about $100,000 per year, with rates frequently climbing higher than that. Additionally, the competition among employers to hire and retain qualified DevOps Engineers is fierce, with the DevOps market to touch $8 billion by 2022, according to IDC Research.

This also means that the number of people trying to break into this desirable field has also increased in recent times. Unfortunately, some of these applicants are stronger in their enthusiasm for the job than in their actual hard skills. To make sure that we hire qualified candidates to join our team, we first schedule a loosely organized screening interview to ask candidates about their knowledge about topics ranging from TCP/IP networking, Linux administration and command-line tools, storage volumes, basic concepts in databases, and maybe some more advanced questions about Docker or Kubernetes. The questions we ask are not complex “gotcha” questions, brain teasers or esoteric trivia about obscure commands or algorithms. We ask questions about fundamental concepts that one would definitely need the first day on the job.

It is surprising to me how often candidates with impressive resumes and apparent years of experience cannot pass this screening. Applicants can often repeat the buzzwords they added to their resumes, but when pressed to explain how these technologies work, or what they are actually used for, they struggle to frame a meaningful answer. Unfortunately, we cannot proceed with a candidate that cannot verbalize these concepts, since they are absolutely required to do the job. This is obviously disappointing for both us and the candidates since interview time is precious and nobody wants to leave an interview with the sense that they “bombed” or exit feeling embarrassed.

What then, does a successful candidate look like? Below I’ll outline some of the things that we look for during our technical screen interview.

  1. Don’t lie on your resume! I know this sounds obvious, but I’ve found it surprisingly common to claim skills on paper that are simply not there in reality. If you say that you are skilled with Bash, Python, and Go, you should be prepared to discuss the basics of those languages. Can you describe a looping structure? What is the difference between a function and a method? What is the difference between an array and a list? If you say that you are skilled in these languages, you should be able to answer these quite basic questions. Similarly, if you claim Docker and Kubernetes, you should be able to describe their internal components and functionality to at least a basic level. These are not just magic words that you can say to get through the door!
  2. Know the technology! Again, this seems like a given, but you need to actually know things to be an engineer. Furthermore, you need to know the things that are listed in the job description. If you are applying for a position that lists PostgreSQL as a requirement, ideally you should have had hands-on experience with PostgreSQL in previous jobs, and if you haven’t, you should spend some time curled up with the documentation to learn about this tool. There are oceans of knowledge available, mostly for free, on the internet. Take advantage of this wealth of information before you come to the interview.
  3. Love the technology! Why are you an engineer? Is it because it will pay the bills, or is it because you love working with computers? DevOps tends to be strongly operational, which means that you are often working under stressful circumstances to maintain customer-facing production systems. When you do your job well, most people will never see what you do, because everything “just works”. Hearing the words “Thank you” is not the most common experience for a DevOps Engineer! Therefore, it’s very important that you are going into the job because it’s actually something that you want. Your enthusiasm will demonstrate to us that you are willing to put in the hard work to learn new things and deliver the goods when you join our team.
  4. Be curious! Maybe you don’t work with databases that much in your current job. That shouldn’t stop you from learning about databases. Databases are cool. You can do all sorts of interesting things with them. Writing code that stores information into a database is like magic! If you come to your technical interview and tell us that you don’t have much work experience with databases, but you have been learning about them anyway, we will still be impressed that you have taken it upon yourself to learn.
  5. Be honest! If you don’t know something, it’s ok to say that you don’t. If you just start talking to fill time or start taking guesses, we will know. If you don’t know the answer, it’s totally ok to say, “I don’t know the exact answer, but I have some knowledge about something similar. Maybe I can infer some similarities about what you are asking about.” Being able to demonstrate what you know and don’t know is an important part of the job, and is often more important than coming up with the exact “correct” answer to a question. It’s also ok to ask questions. In fact, being able to ask the right questions is often the key to solving problems, which is what engineering is all about.
  6. Know the basics! While concepts like serverless and cloud computing have abstracted how code gets run on servers, most production systems still use Linux as an operating system. Additionally, services still talk to each other using TCP/IP networking. You should know enough about Linux to show a list of running processes, show disk space, show CPU and memory usage, etc. You should have some tools to diagnose network health, show open ports, listening ports, and so forth. How would you scan your network for open ports, for example? You should know what different network devices like routers and switches are, and you should understand subnetting and routing. Being a competent Linux and network administrator, as well as having some experience with coding, is a required jumping off point for being a good DevOps Engineer!
  7. Grow! An unfortunate issue we sometimes see with more experienced engineers is a lack of clear career growth. Have you taken on project leadership? Have you learned and kept up with new technology? Have you been a thought leader? When we are looking at a senior level person, we are looking for you to give us ideas for how to improve and deliver better service to our company. If you are doing the exact thing now as you were six years ago, it makes us wonder what you will contribute to the team and to the business.

So that’s a summary of what I look for as a hiring manager for a DevOps Team during our technical screening interview! I hope it helps you prepare and increase the odds in your favor. In my next post, I’ll describe what we look for in the next phase of the interview process, where we go over your career goals, team fit, and some other technical and not-so-technical issues.

--

--