Building DevOps Greatness, Part II: Hiring DevOps Talent
In Building DevOps Greatness, Part I, we covered the 3 imperatives for moving from DevOps theory to practice — lower lead times via continuous delivery (CD), drive decisions with telemetry, and validate your learning culture.
To cultivate DevOps greatness within your organization, a smart approach to hiring DevOps personnel is an obvious prerequisite. How do you go about finding people whose experiences and mindsets match our aforementioned imperatives?
Growing a DevOps team requires a specific mentality and set of skills. Generally speaking, DevOps organizations tend to minimize technical silos for developers, operations, or QA. These skills are instead collapsed into cross-functional teams or are provided through automated self-service platforms that provide production-like environments, initiate automated tests, or perform deployments.
Team members must feel comfortable working in a “you build it, you run it” environment to take a line from Amazon’s Werner Vogels.
Finding new candidates or identifying potential inside an existing team is a challenge for any organization. And there is unfortunately no simple litmus test for talent. Instead it comes down to carefully assessing a candidate’s experience, technical capabilities, engineering values, and overall aptitude.
You’ll find the experience and technical capabilities reflected in the CVs you receive in response to your job posting and uncover engineering values and aptitude in the interview process. As such, success in hiring DevOps talent starts by crafting the right job posting.
Crafting the Job Posting
For best results when hiring DevOps talent, you'll need to signal the desired values to the appropriate candidates. The best candidates are already aligned with DevOps culture and have relevant technical experience. Job boards like Stack Overflow and GithHub Jobs offer a dataset for identifying strong job postings.
The ideal job posting mixes “Software Engineer,” “Operations Engineer,” and “Full Stack Engineer” along with a conceptual and experiential basis in DevOps practices and models. Analyzing the posts reveals the requisite technical qualifications:
- Programming experience; candidates should be comfortable developing software.
- Automated testing experience.
- Infrastructure as Code technologies like Chef, Puppet, Ansible, or SaltStack.
- Cloud infrastructure like AWS, Azure, or Google Cloud.
- Infrastructure technologies to run modern applications such as Docker, Kubernetes, or Serverless.
Organizations throw a red flag when hiring for a “DevOps Engineer” position. This is a similar pitfall to creating a DevOps department, as there is no such thing as a “DevOps Engineer.” It’s therefore advisable to avoid this and use a more accurate title. If this is not possible, then it may indicate a larger problem.
On the other hand, organizations can attract more qualified candidates by including answers from the Joel Spolsky test. These answers set candidates’ expectations, and StackOverflow Jobs includes this on all job postings for a good reason.
But the job posting only does so much to vet candidates. The real work happens in the interview process.
Screening for the Three Imperatives
The interview process must assess a candidate’s technical experience and cultural fit. Here you’re looking to understand their relationship with the three imperative or principles laid out in the first part of our series and see how their technical experience relates to them. Search the internet, and you’ll find plenty of examples of DevOps interview questions.
There are specific technical questions such as “how does the linux boot process work,” but interviewers are better served with open-ended questions. These allow the candidate to fill in the blanks and for the interviewer to ask pointed follow-up questions.
Stackify polled 20 DevOps professionals on their hiring questions. Here are some of the best:
- How does a DevOps help organization succeed?
- Tell me about a time that you have implemented an effective monitoring solution for a production system.
- What are some technical challenges with continuous delivery/deployment?
- What testing is necessary to ensure that a new service is ready for production?
- What experiences have changed the way you write software?
- What’s your deployment process?
- How do you know if something is broken in production?
None of their questions point to specific technologies. Their goal is to understand a candidate’s thought process and understanding of DevOps principles and culture. These questions are not a panacea though.
Interviewers should focus on the candidate’s answers and assess if he/she has his/her own ideas on how to approach a problem or simply gives canned answers from his/her experience working in previous organizations.
The goal is to understand the candidate’s thinking as well as his/her ability to come up with solutions. Interviewers should also be prepared with thoughtful follow-ups and ready to discuss relevant design trade-offs.
Hiring DevOps Talent Just a Piece of the Puzzle
Implementing our three principles and aligning the team to them is no small feat. However, we have now tackled the larger problem of defining what DevOps greatness looks like and laying a course to get there despite the likely pitfalls and challenges you'll encounter on the way.
Join us for Part Three of this series, where we will cover how to reinforce DevOps culture via technical practices, keep people happy in a DevOps culture, and continually improve DevOps KPIs.