3.8 KiB
How to prepare for an DevOps interview?
Note: the following suggestions are opinionated
Prepare by answering interview questions
Make a sample list of interview questions on different topics: technical, company, role, ... and try to answer them. See if you can manage answering them in a fluent, detailed way.
Coding
Some (if not most) DevOps interviews include coding tasks/questions. Be prepared for those by doing actual coding. Also, the following probably clear to most people but still, when given the chance to choose any language for answering questions or coding tasks, choose the one you have experience with and not the one the company is using or you think it's using.
Know your resume
It may sounds strange but the idea here is simple: be ready to answer any question regarding any line you included in your resume. Sometimes candidates surprised when they are asked on a skill or line which seems to be not related to the position but the simple truth is: if you mentioned something on your resume, it's only fair to ask you about it.
Know the company
Be familiar with the company you are interviewing at. Some ideas:
- What the company does
- What products it has
- Major achievements
Books
From my experience this is not done by many candidates but it's one of the best ways to deep dive into topics like operating system, virtualization, scale, distributed systems, ...
In most cases, you will do fine with reading books but for the AAA interviews (hardest level) you'll want to read some books and overall, if you inspire to be better DevOps Engineer, books is a great way.
Scenarios
This is a very common way to interview today for DevOps roles. The candidate is given a task which represents a common task of DevOps Engineers or common knowledge and the candidate has several hours or days to accomplish the task.
This is a great way to prepare to interviews and I recommend to try it out before actually interviewing. How? take requirements from job posts and convert them to scenarios. Let's see an example:
"Knowledge in CI/CD" -> Scenario: create a CI/CD pipeline for a project.
At this point some people ask: "but what project? I'm not working right now" and the answer is: what about GitHub? it has only 9125912851285192 projects...and a free way to set up CI to any of them.
Let's convert another scenario:
"Experience with provisioning servers" -> Scenario: provision a server (to make it more interesting, create
And the last example:
"Experience with scripting" -> Scenario: write a script which helps to accomplish some of the DevOps goals. For example, a script for generating Travis YAML for projects based on their content. If you need more ideas, open an issue and we'll help!
Start your own DevOps project
Starting a DevOps is a good idea because:
- It will make you practice coding
- It will be something you can add to your resume and talk about with the interviewer
- Depends on size and complexity, it can teach you a thing or two about design
- Depends on adoption, it can you teach you a lot about managing Open Source projects
Consider starting in non-DevOps position
Landing DevOps as a first position can be challenging. No, it's not impossible but still, since DevOps covers many different practices, tools, ... it can be quite challanging.
A possible path to become a DevOps engineer is to start with actually a different position and switch from there. Some ideas:
- Linux System Administrator - This is perfect because every DevOps Engineer should have solid understanding of the OS.
- Software Developer/Engineer - A DevOps should have coding skills and this position will provide more than the required knowledge
- QA Engineer - This is more tricky one because IMHO there are less overlapping areas/skills with DevOps Engineer but some people done it so it's not impossible :)