Don't turn your DevOps interview in a quiz. Instead, use open-ended questions to find people who are positive and happy, have a focus on self-improvement, possess gratitude, are humble, and are comfortable with extreme transparency. The following guidelines will help you hire just the person you're looking for.
Image from http://dennyzhang.com/devops_hiring
"You don't hire for skills. You hire for attitude. You can always teach skills." - Simon Sinek
DevOps Hiring Principles And Guidelines
Throughout the interview, consider whether or not the person you're interviewing does the following:
Describes Status Precisely and Concisely
The person should speak straight to the point about things that they're confident about. They should illustrate observations and judgments separately so that people from other teams can easily get involved and help without confusion.
Knows How to Test
Yes, knowing how to fix is important. But knowing how to test is even more important in the long run. Without this knowledge, it can be difficult to triage problems and enforce effective monitoring.
Is a Quick Learner
If they get something wrong, that's fine. Take a minute and explain it to them. Then, ask them to apply what you've just said about the problem and see how their answer changes. Keep the discussion going.
Has an Excellent Automation Mindset
Automation is one of the most important capabilities for DevOps. It dramatically helps to make the process clean and keeps the whole team effective.
Basic Open Questions
1. What would you do if you couldn't SSH to a machine?
Structured analysis talks in daily work. Candidates should possess basic experience for sure.
A further question might be: what if SSH is slow?
2. What would you do if you got a low disk warning?
The candidate should explain the troubleshooting process and summarize as many common causes as possible. After resolving this issue, the candidate should consider how to avoid it happening again or how to autodetect it in the future.
A further question might be: if the system load is high, what should you do?
3. What would you do if you opened your website and the browser said it was unreachable?
This is quite a typical question, though not especially so for DevOps. The candidate should have a pretty good understanding of the whole process and know how to verify each step properly.
4. How do you write init scripts for daemon service?
For "service XX start," configure the lockfile and pidfile properly. For "service XXX status," avoid a false positive with a lightweight functional test such as checking the TCP port listening. For "service XX stop," be prepared for a service slow shutdown, instead of killing -9 brutally.
A further question might be: Is there any alternative to init.d in Linux? Init script, Upstart, Systemd? What drives the change?
5. Given a string of a=1, b=2, c=3, how do you extract the value of b?
The goal here is to look for specifics such as first-hand scripting experience. Candidates should be familiar with popular Linux toolkits like awk, sed, grep, bash, etc.
6. What's the last code you wrote recently?
Ideal candidates should have recent experience doing effective programming and be proud of their achievements. Culture fit and a passion for technology matter.
A further question might be: Do you have any side projects? What technical blogs or websites do you follow?
7. What questions would you ask when interviewing DevOps candidates?
Totally unexpected! People who love their jobs will stand out.
Advanced Open Questions
8. Diagram the system you currently run. Do you have any criticism of the architecture you just outlined?
If they really had the involvement and the responsibility they are claiming, then they should have no problem speaking fluently about their achievements - and weaknesses.
9. Describe the most challenging situation that you have faced. How did you fix it?
The candidate should describe the size of the environment that they automated (how many servers, small scale or large scale). You may see good candidates are shining in their eyes.
A further question might be: What interesting issues you have encountered?
10. Have you ever run into break-in issues or any other security issues?
Security is a big concern. You can't easily fake it if you have little experience.
11. What are the main differences between traditional CM tools like Puppet, Chef, Ansible, and SaltStack?
You want to find out how long the candidate has used these tools, whether or not they have used these tools in production, and how deeply they understand these tools.
12. Your site goes down nearly every hour on the hour. What do you look at to diagnose this?
13. How you detect manual changes in production environments?
14. Your deployment is good. Now you need to support offline deployment. What will you do?
Have them list all possible issues and solve them one by one. They should also mention how to verify the solution. Ideally, the verification should be fully automated. For example, manually disabling the network to simulate offline deployment is not acceptable.
15. How does XXX work?
It could be loadbalancer, nagios, chef, haproxy, or whatever. Confirm that the candidate is familiar with fundamental concepts. If you can't explain it simply, you don't understand it well enough.
Special thanks to this Reddit discussion.
More Reading: Avoid Unnecessary Communication Of TOI.
Like our blog posts? Discuss with us on LinkedIn, Wechat, or Newsletter.