How To Hire for DevOps

How To Hire for DevOps

About the image – I originally thought naming this post “How to Hire Ninjas” but then realised I don’t honestly like the analogy. DevOps people are not ninjas – they don’t work in disguise and aren’t trained from the very childhood. Moreover – this heroical ninja image is actually harmful. It only contributes to the DevOps identity crisis as outlined by Baron Schwartz and lies at the very heart of the problem that I’m trying to suggest a solution for here.

It’s no secret that the tech workforce market is starving for DevOps. (I know, I know – DevOps is not a job title, it’s a mindset.) The cloud, BigData and modern software delivery standards all produce the need for professionals who know how to get those complicated systems built, deployed and running. The demand keeps growing and the supply just doesn’t seem to catch up. More and more organisations realise they need to bring “DevOps guys” on board.

Now how do you do this? Not an easy question! Especially considering the discipline and accompanying tools are all new and the term ‘DevOps’ is very loosely defined. As Tim Lockwood correctly notices : “the pool of candidates who have had the opportunity to master [the devops tools and techniques] is small” Even if you already have “ninjas” on your team – the chances are they aren’t particularly good at hiring others like them. Now, I’m being gentle here – most of them are disastrous at hiring as they expect the candidates to have mastered the exact same set of tools as and gained same experiences as themselves. Taking in account the number of currently available tools, technologies and solutions it’s very hard (not to say impossible) to find that exact match. Moreover, as many have already noticed – in fact the soft skills are the most important part of the DevOps toolkit and they can easily get overlooked if you concentrate on knowledge and technical ability only. The potential candidate may be a Linux system guru but have no understanding whatsoever of development need for flexibility and fast change rate. Or be a Python virtuoso but posess zero service-orientation.

The high demand for DevOps professionals makes things even harder with top candidates requiring top salaries and thus elevating the cost of mistake in case of a bad hire.

A great approach is the one suggested by Jez Humble – don’t hire DevOps experts, but instead grow them. As someone who has hired and trained a number of talented novices – I can confirm this is a valid and sustainable solution, especially if the organization provides the necessary means for retaining and developing that talent.

Still – hiring novices presents another risk – how do you know someone would be good at what they do if they haven’t done that in the past?

How do you identify that great DevOps enabler? Well, as Uri Cohen lined out in his great talk on the subject – we should first of all be looking for:

Passion and willingness to learn
Problem solving mentality
Self-motivation
Great social skills
Tools and experience are important, but are not the only, and certainly not the most important factor.

That’s all great, but what questions do you ask at the interview? How exactly do you identify these traits?

Here’s what I do, and what worked for me in the past:

Look for passion about people and not just technology (after all the main purpose of DevOps is helping people work better)
Look for system-wide vision ( ask to explain how their work influenced their previous organization’s ability to deliver software )
Don’t probe for knowledge, but rather for understanding and ability to learn new stuff and solve new problems.
Now I also have a method for verifying that last point. I think this works much better then giving the candidate a bash scripting test, asking to write pseudo-code on the white board or throwing her tricky questions about linux command options. I call it the “hello new world” method. It goes something like this:

Find a tool/technology your candidate hasn’t worked with in the past.
Give them a computer connected to the internet.
Ask to perform a very basic task with that tool/technology. Something that can be completed in an hour. (A ‘hello world’ type task)
Tell them it’s ok to not complete the task in full – that their way of thinking is what interests you most. (this is to release some of the pressure that comes from being under test)
After the hour has passed (or after the candidate completed the task) – review the results together asking to explain what they did and why they did it.
I like this approach as it allows me to test a few connected things:

willingness to learn : your ideal candidate will be happy to do this as good DevOps always jump at opportunities to learn new stuff
ability to solve new problems ( in a defined time scope)
communication skills – i.e the ability to explain and justify their solution
I’ve used this to hire all my past team members (and when assisting some of my clients with their DevOps hiring process) and they all proved to be great guys to work with. And some of them turned out to be real ninjas in the end 😉

Please let me know if you decide to try the “hello new world” approach and if it works for you as well. Or if you have other tricks that you feel do the work.

Just remember – DevOps is not about tools, it’s about people.

originally published on my linkedIn: How to Hire for DevOps