There are many convincing arguments that the entire way in which engineers are hired is fundamentally flawed, many of which are both compelling and a little scary. Devising a new, generally applicable paradigm for how companies can best identify the best candidates for their jobs is an enormous challenge that I have no intention of tackling here. However, I do feel reasonably well placed to suggest some desperately simple ways to improve a candidate’s experience of your interview process, making it much more likely that the people you decide to make offers to do actually accept them. The advice below won’t completely revolutionise your hiring system, but I am confident that it will make it noticeably more effective for very little extra cost or effort.
Do not automate - hiring is a time-consuming process for everyone involved, and it may feel tempting to try and automate as much of it as possible. After all, a lot of it is just scheduling a time for several Skypes, then sending a link to a work-sample problem on Github, then arranging flights and on-site interview times, then reimbursing for accommodation and transport. You already have a system for tracking candidates internally, so why not use this to send out standard template emails to candidates too? NO NO NO NO NO NO DON’T DO THIS NO NO NO NO NO. Whenever I saw a generically worded email sent “via mailgun.org” I immediately felt very unloved. The email might as well have come with a PS of “excuse the impersonal touch, but we are really very busy and don’t want to sink too much time into you. If you have any questions then you can reply to this email but hopefully you don’t so we don’t have to get our hands dirty.” This may feel like something of a prima donna attitude, but it’s simply true that if one company communicates via a friendly and personable CTO or recruiting co-ordinator, and the other communicates via a robot then you can’t help but warm to the sentient one. By automating communication, you squander the opportunity to keep an actual and real dialogue going with a candidate, reminding them that you exist and might be a cool place to work. Yes it feels, and indeed is inefficient to manually go through sending emails to each candidate, but given how much time and money you are already spending on an interview, the 15 extra minutes that it takes can only be worth it.
Constantly test new questions - your current interview questions are probably OK. But they could definitely be better, and devising and asking a successful interview question is decidedly non-trivial. A question may intrinsically be too easy, too hard, too confusing, too esoteric, or simply not testing for anything useful. You just can’t know whether a question does what you want it to until you’ve tried it out. And it takes practice before an interviewer is able to deliver a question proficiently. They have to know where the dead ends are, what the trivial misconceptions are, and what hints are useful but not too useful. So use a slot at the end of a day of interviews to test out some of your new curve balls. Say up front “we have no idea if this is going to work - if it all goes wrong and you end up bruised and barely conscious in the toilets of a KFC with a Macbook, an open Vim terminal and little idea of how you got there then don’t worry.” Actively experiment and iterate on your interview questions the same way you would on anything else.
Your "Jobs" page sets the tone - most of your candidates are probably people who have seen your foo.ly/jobs page and have decided that they might like to work for you. This page is therefore most people’s first point of contact with your interview process, and the impression it leaves lasts a surprisingly long time. 3 easy points you definitely want to include are:
Over-communicate generally - tell candidates what your interview process looks like, how long it takes, and make sure that they are always clear on what your next steps will be and when you will be doing them by. This is simply very useful information for a candidate to have, but it also makes it clear that everyone your end has their shit together. I felt that knowing the eg. 4 standard phases of a company’s interview process helped give the journey from application to offer shape and story, and meant I knew what targets I would be shooting at and how many of them I had left to go. You generally want to be spending as much time communicating with a promising-looking candidate as is reasonably possible. It’s hard for an engineer to go with an unknown quantity they’ve only spoken to sporadically when they’ve been in constant and presumably pleasant contact with you for the last 4 weeks.
Speed is important - rapid communication makes a candidate feel loved and like they are important to you, and again simply shows that you are ruthlessly on it. A surprisingly large fraction of companies take days or weeks at a time to move candidates to the next stage after a successful interview, and it feels much more disconcerting and rookie than you might imagine. Others come back with yes or no the very next day, or even the same evening, and the difference in perception is vast.
Get everyone involved - as an interviewee with an offer, getting “Congratulations! Any questions?” emails from current employees, especially those who interviewed you, feels really nice. Seriously, over-communicate wherever you can, especially once you have made someone an offer that they are weighing up alongside a bunch of other ~equally compelling offers. Again, it makes candidates feel loved and important, and gives them yet another opportunity to address any new concerns. Questions like “So how long are people usually in the office for?” are much easier to ask once you have an offer and are talking to someone on the ground who you have met before.
Explain your offer - if you make an offer of “$Xk/year and Y share options”, any engineer who has done this before is going to immediately email you back with the template email: “Hello. Thank you for your offer. How many shares are outstanding, what was your last round valuation, and what is the strike price of the options? Thanks. Rob” and only start thinking about whether your offer is good or not when you reply. Anyone who doesn’t send you this email is going to have no idea of the true value of your offer, meaning you are either going to end up under-selling yourselves or screwing them over. Both of these are bad. There is already enough suspicion of options, especially in early stage startups, as tools of vague and negligible value to trick engineers into working 80 hour weeks for no good reason, so don’t make things worse. Include the base salary and number of options in your official offer letter, and explain the total number of shares, recent valuations and strike price in the accompanying email. Anything else looks shady and wastes everyone’s time.
Feed your candidates - your interview day is probably long enough that you already have to include lunch and/or dinner, but if you aren’t doing this then you are energetically machine-gunning yourself in the foot. A casual meal is comfortably the best way to show an interviewee what it is really like to work with you, especially in a smaller company where what-you-see-is-all-there-is. As a candidate it makes it much easier to imagine yourself in a company, and helps you get a (somewhat) true and unfiltered idea of how people interact with each other.
T-shirts are high ROI - you spent all that money printing them, dish them out to anyone and everyone who interviews with you. It’s a surprisingly nice touch, and means that out-of-town applicants have a higher chance of getting through their trip without having to do any washing.
All everything really comes down to is food and t-shirts - it’s not complicated. If you found these suggestions useful or interesting then you’ll probably enjoy my account of the interviewee side of a Silicon Valley job search too.
I publish new work on programming, security, and a few other topics several times a month.