If you run a medium or small-sized company, and you are wondering why your hiring process is not optimal, why candidates reject you at the middle of the process, or why you end up with mismatches, this article might help you a bit. Having taken many technical interviews with medium/small-sized companies, here is a list of the most common mistakes I spotted out, and how I suggest you to tackle them.
Your did not incentivise the candidate
If you are not a big and recognisable company, chances are that you are not the dream-employee of your candidates. If you want candidates to give their best of efforts to the hiring process to prove you that they are worthy, your first need to prove them that your company is worthy of those efforts.
Solution: Identify your strong points and describe them at the candidate at the very first stage of the interview. By strong points I don't necessarily mean perks. Here is a list of some examples:
- Attending conferences
- Contributing to open-source projects
- Working with huge clients
- Organising internal trainings
- Flexible working schedule
Good candidates with more than one job offer, will consider these very seriously, you need to make a difference early on.
You have a coding assignment
I could write a separate post explaining why a take-home coding assignment is a bad idea if your are not a huge and recognisable company, here is the short version. Candidates who seek their next destination will usually send dozens of job applications. After one or two weeks, the good ones, will have proceeded with a few of them. A typical coding assignment takes 8 to 10 hours. Being assigned a coding assignment by more than two companies, while working 40 hours per week, means that the candidate will have to choose which of these assignments they will proceed with. Free time is very valuable to all of us, and if you didn't manage to make a good impression as I described in the previous section, chances are that you are either getting a hurried and sloppy one, or nothing at all.
Solution: If you want a code sample from your candidate, ask them to see their open-source projects, if they have any. If not, merge this step with your in-house interview. Do a coding exercise that will require modification of existing code, ask them to review a pull request, or prompt them to find a bug in a problematic function. Coding something from scratch, is the exception, not the rule, and maintaining code while keeping a good quality, is more difficult than creating a small code sample all by your own.
You tried to copy someone else's process
Different needs, should mean different processes. Stop copying interviews of the big-five companies just because you read a cool blog post about them. Having a five-stages interview process to hire your 5th developer is insane. It is like having 10 engineers to develop micro-services because that's what's trendy, right?
Solution: Processes will not help choose the best candidate, your judgement will. Design the interview process from scratch based on your company's and each of the position's needs.
You brought compensation too late into the conversation
To be honest, this is a mutual mistake. Candidates should ask about the position's salary early on, but usually they are afraid of making a bad impression. If you are looking to hire a senior engineer, be sure that you can afford their compensation and that you can be competitive within the market. Otherwise, you will end up hiring mid/juniors and entitle them as seniors, a sad fact that is becoming a pattern.
Solution: Having a candidate advance through a multi-stage interview, only to tell them that they are too expensive for you, is disrespectful. You need to ask for the candidate's salary expectations very early on. If there is a huge gap do not proceed, you will both waste your time (and money).
You did not describe the position well
Job descriptions should be accurate. The vast majority of the job descriptions out there are generic, not making the candidate aware of what their every-day work will be like. This advice is mostly for companies who have a hard-time hiring people to do a job that nobody wants to do. Sounds familiar? Candidates may be deluded to join your company, either because they are in need of a job, or because they lack of experience, but once they are find a better position in another company, there is nothing to hold them back.
Solution: You don't need to put up very long and detailed job descriptions. You can leave the details for the phone screening session, but you need to clarify what the open position is about, plus what your expections from the candidate are. Speaking of screening sessions, avoid letting your people for the HR do them. Technical screening requires people with technical knowledge. It is better to let your engineers do them, so they can identify bad matches early on and save you time.
Bonus: You are full of stereotypes
You keep thinking that developers are like the protagonists of the Silicon Valley TV series. Although that TV series is somewhat accurate and funny, you need to keep in mind that not everyone is the same. No, developers are not machines that consume pizza and coffee and produce code. Please avoid having your recruiter tell me that you have a fancy breakfast buffet, pizzas on Fridays, and a casual dress code, like it is something unique and amazing, because none of these things matter to me when I am about to choose a company. What I expect from you, is professionalism.