Today’s post is not a recipe at all. Maybe a little. More of viewpoint than a recipe.
How to get the right people for the tech jobs employed ? The most common way nowadays seems to be the one of paying lots of cash to the recruitment company to do this for you. How it ends ? There are few things that annoy me more than the people from the recruitment companies. I am not saying that all of them are annoying, no. Just the very most of the ones who contacted me. I find questions they ask fundamentally flawed. They appear to more like a pattern-matching mechanisms than the actual people. Maybe it’s because I am biased, I don’t quite get the idea of hiring non-programmer to hire a programmer.
Here’s what I think the tech recruitment should look like. It won’t be cheap. And yes, I conducted a lot of interviews in my life.
Start by describing the position. Who are you looking for, what would they do for you, how would they bring money to your company. Use words, not techie talk. I found most of the job descriptions online do not match the real expectations of the employer. You just want a good programmer, a person who thinks about what her does. It really doesn’t matter if they know Haskell and you write in Erlang. I doesn’t matter if they think in asm when you’re looking for Forth. I doesn’t matter if they are Linux nerds and you’re Windows-only, if they know how a computer works. As long as they think about what they do and know what’s that for and agree with your goals that’s perfectly fine. If you translate your desire for a good programmer into a bulletpoint list of tech words you dehumanize it. Don’t look for skillsets, look for people I say.
How to check whether someone is a good programmer then ? How to score people against such a vague job description ? You don’t score people I say, you just sort the set of people.
I start by a rather loose conversation. Tell me about the point in life you’re in, tell me something about what fascinates you in the programming job and finally what’s your motivation for changing the job and why do you want to work with us ? Somewhere in the middle I ask about the projects, what technologies you do like what not, why not. Do you feel comfortable teaching others ?
Then the talk gets momentum. We do focus on computers finally, why should it slow down, really ? If someone is fascinated by The Machines you should already noticed that, to be honest. Same with boring people or annoying people. If you do not want to work with them then do not hire them. Even if they’re brilliant.
How does the computer work then ? How does this happen that I have this text file full of strange writings and suddenly they make the computer do stuff ? Why it’s not a good idea to get the modern pc to fly a space shuttle ? What’s a stack and what’s a heap ? Is the stack memory really different from the heap memory ? Why so.
And the WHY. The most important question for me is the mighty why. Not only should they understand how something works, but more importantly why it works like that. I really enjoy working with people who are microwave-curious than the hex-feared ones. How does the microwave oven heat things ? Does the DEADBEEF scare your ? Maybe it needs some heat treatment then.
Talk with people, make notes. What annoys you, what impresses you. Do the exercises with them. Ask them how would they solve a simple but a real life problem. Design the solution with them. The more lifelike the work scenario the better. Do the things you’d normally do with your work colleague.
And order the set of candidates. Work as the simple max function. Take the first one and the second one,. Decide which one seems better suited for you. Then take the next one and compare her to the current max.
And please hire people only when you’re ready to hire them.
After writing this post I’ve stumbled upon this 37signal’s art . Worth reading.