Steve Ball teams with startups and businesses to help them define and execute corporate strategy and go-to-market plans. As CTO at Spring, Steve shares some insights about hiring great developers:
I get asked a lot about interviewing. As CTOs we're all scrambling to find that top talent whe hiring coders.
I try to only hire coders in that top 2-3% of global talent and have small teams of exceptional technologists who can quickly create secure, scalable and innovative technology. That minimizes team size (and cost) while maximizing output and quality.
I realized a long time ago that the ability to identify developers at that world-class level and assemble them into a team is a universal solution that can be used to solve any commercial problem. There is no problem that cannot be solved by applying exceptional talent to it.
These 8 strategies have worked for me, but YMMV!
1. Online tests
These are invariably terrible. They're usually multi-choice, the candidates aren't matriculated by the agents so it just becomes a test of how well they can google, the tests always seem to be woefully out of date and don't test the skills you actually care about. To be avoided. I even ask the agents if they use them and, if they do, count that as a negative against the agent. I've hired guys who said the online technical test the agent gave them was so loathsome that they almost withdrew from the process before their CV even reached me. If your agent does use an online test, ask if you can sit the test too. It will be an hour well rewarded, you may be shocked by how bad it is.
Having said all of that, I've had good experiences with the type of testing on codility.com. It's an online coding test. You get to choose the coding problems and the candidates have to write code to solve them. It's hard to cheat on, you get to see their code quality and style, and those programs can be excellent jumping off points for subsequent conversations. If the agent can supply you their results before the first interview then you can begin by discussing the design choices they made. It's an easy way to get into tech conversations.
3. Hiring coders in the top 2-3%
Very cost effective to do this. The compensation for that top bracket is only 10-15% more than the average in the market, but their productivity isn't 10-15% more than an average developer, it's more like 200-300%. So it's an obvious no-brainer to pay a little extra and target those devs. The tricky bit is identifying them. The top performers have a couple of qualities in common: they have high levels of intellectual curiosity and they exhibit good judgment in areas of the unknown (i.e., faced with a completely unfamiliar problem they will still make sensible choices).
4. Probing the unknown
I'm looking for sound judgment rather than what facts they know, so I try to avoid broad questions on multiple topics. I'm not looking for generalists, as that tells me nothing about the candidate's abilities. I want to pick a single topic and dig deep. I might ask them what area really excites them (distributed databases, functional programming, GPU programming) and I want to dig down and down until we hit the limits of their understanding. Now we have found an area of the unknown for them (and probably me too :-). Then I will pose exploratory questions in that area. It doesn't matter if they don't know the answer. And when they say they don't, I say that doesn't matter: what would you say if you were to speculate or think aloud? It's really only at this point that you get to observe how smart the guy is. It doesn't matter that you may not know the answer either because, together, the two of you can explore these ideas. You will see how smart the candidate is immediately. This type of intellectual collaboration is at the core of what it means to work in a high-powered team creating innovative technology for difficult problems. Explore the unknown together at interview and you will instantly know if this feels fun and exciting with this person or painfully excruciating.
5. Monitor your feelings
Observe your own feelings during the interview. If you feel a growing sense of excitement that you could work with this person every day and build some cool stuff together then you should probably hire them. If you're feeling fatigued or frustrated, it's a no.
6. Choose one good agent and invest in that relationship
Having a good recruiter is the first important step to establishing a pipeline of excellent world-class developers. Agents appreciate it when you can help them improve the quality of their screening. Investing in those relationships gives a good return in hiring coders. Stress to them the importance of not pre-briefing candidates on the questions you ask and be prepared to fire the ones who ignore this reasonable request. Build a relationship of trust with an agent who "gets" you. There are excellent agents out there who know how to hire coders but the exceptional ones are just as rare as the exceptional developers, so be prepared to work hard to trial a few agents, measure their performance over time and zero in on (preferably) just one agency you like working with who understands you and supplies good quality candidates.
7. Ignore which languages a developer knows
Sounds shocking I know but, literally, it is safe to ignore which languages a developer currently knows, so long as they are exceptional in the ones they do. If you're serious about hiring in the top 2-3% then you can't also impose the additional restriction that they must use language X or database Y (because now you're talking about some fraction of a percent). You are better hiring an exceptional dev in the top 2-3 percentiles for sheer talent who doesn't know your language (because they can learn it in a week and be fully productive in a month) than someone average who's been doing PHP for 5 years. To advertise for someone with 3-5 years in technology Z is to totally miss the point about what the crucial skill is.... it's not Z! It's the ability to quickly learn and create superlative technology whatever the challenges (and languages) are. Agents hate this of course, because they can't do a google search on their database for "being exceptional" but that's the only thing that matters to you. The best recruiters will get it though.
8. Build small crack teams
One or two true 10x-ers really can out-perform a team of 10 average developers (or more). It's worth constraining the rate of growth of a team by the rate at which you can find exceptional people. As a manager, the most important skill I have is my ability to identify top-performers and to create the cultural environment where they will thrive. I want to hire coders and designers smarter and more creative than me. Investing in constantly reviewing, improving and experimenting in your interview processes will yield a greater long-term benefit for the team and company than anything else you do as a leader.
This was originally posted on Steve's LinkedIn page, you can find it here.
Are you trying to set up a process to hire coders online? Launch your process with Codility.