It's a time of year when a lot of businesses are hiring, and layoffs mean there are more candidates in the marketplace. That also means the volume of online commentary concerning 'bad practices' is growing; and the amount of bad practice is staggering. Otherwise rational engineering organisations seem very susceptible to copying their hiring process from whatever nonsense the FAANG interview handbook currently suggests -- without thinking about the people they are putting into the meat grinder.
I wanted to lay out my experiences; in a small (ie. sub £2m/year) software company, a long way from Silicon Valley.
The Job Advert
A job advert isn't a mystery novel. The point is not to intrigue. A job advertisement should be extremely explicit, and it should be exhaustive in it's detail where possible. From an efficiency point of view, it's much better for your candidate to spend time evaluating the role in written form, and making a choice to proceed or decline early in the process. This also saves time on the employer side.
Your job advert should contain absolutely no misdirection. Don't talk about 'leading new projects' when your engineering team spends 65% of their time on maintenance work. Don't be tempted to try to attract engineering talent to the zeitgeist; don't advertise new frameworks and languages, when you only use them for prototypes and not your day-to-day activities. If you allow your job advert to turn into a marketing piece, then you're just saving up disappointment for your candidate's first week on the job. Write about the company you are, not the company you wish you were.
This transparency must extend to the salary for the role. If you do one thing to improve your hiring processes, make it this one; you must be explicit about salary. If you have a range which depends on experience, that's fine, but be explicit about how much that experience affects the compensation. The narrower salary band you can offer, the more confidence you can build in your hiring funnel, because both you and the candidate have the same expectations.
The salary you offer for a job is the clearest expression of the bargain you're making between the organisation and the individual. If your organisational success depends on undervaluing your staff and underpaying them, then you need to fix that before you hire anyone else. This doesn't mean you need to reach for the highest number you can; geography and prestige and debt all effect what an organisation can afford to spend on it's talent, and your organisation might not be able to spend top dollar. If your number is lower than the competition, that is fine, but you can at least be honest about it. As the compensation discussion usually comes at the end of the hiring process, if either party enter into the process without clarity, then you run the risk of wasting everyone's time. That will, quite correctly, damage your credibility.
Once a candidate has contacted you, you need to lay out the process for them in detail, from the very first communication. No matter what your process is, it probably has multiple stages, and those stages all have a window of time, and your candidate needs to know this so they can plan accordingly. So if your process is 3 stages, and it usually takes 2 weeks, then be clear about this. Highlight any potential risks (particularly around the availability of key people); nothing destroys trust and motivation faster than a candidate who is simply left waiting for you to 'get back in touch'.
I try to always open an interaction with a reminder of where the candidate is in the process, and any changes. It never hurts to let someone know if the process if running off-schedule, or if someone dealing with a future stage is unavailable. Transparency at all times.
The steps in your process are commitments, both to the candidate and the business. You should take them seriously, as this may be your first opportunity to demonstrate your integrity to someone you may work with for a long time to come. Cancelling interviews, arranging meetings without proper notice, not having the interviewer available -- these are all examples of bad practice and it's hard to trust an employer who breaks their early commitments.
Speaking of your commitments to a candidate, you should commit to feedback, regardless of whether it's good, or bad, or awkward. Telling a candidate they did a good job in an early stage of your process can give them confidence for future stages. Be human; if a candidate impressed you, let them know!
Equally, being clear and empathetic in your feedback for a candidate who isn't right will take you minutes, but may save that person hours of wasted time in a job search which isn't well-targeted. Bringing a new employee on board is a collaborative process. I have given clear negative feedback to candidates who I didn't hire, and then employed those same people a few years later. It costs nothing and builds trust.
No Technical Tests
This might not apply to all organisations: but I strongly advise you to remove the technical test. The technical test is usually a way of uncovering technical proficiency. However, well run interview process, asking the right questions, will uncover the candidate's technical proficiency naturally. Asking about their experience, examples of work, examples of past mistakes, all of these things develop towards understanding this.
If you absolutely must do technical tests, then do with an unfixed deadline, and pay the candidate for their time. I usually ask a candidate for an up-front day-rate early in the interview process, and work from there. Expect it to take time to come back, and always assume your candidate has, and is entitled to, a private home life which your process should not interfere with.
Meet Candidates In Context
If you are a remote organisation, conduct the process remotely. If you're an in-person organisation, meet your candidates at your offices. The interview process is all about building context, and your candidate is watching and noticing everything. A candidate would, unsurprisingly, be skeptical about an '100% remote' position when the interviewer is sat in an office, with poor videoconferencing equipment, and a busy office in their background; a clearly dissonant context.
Don't Use A Recruiter -- Until You Find The Right One
There is perennial natural hostility towards recruiters among most software organisations. Low-quality recruiters are a constant annoyance, who treat the recruitment process as having a probability-based outcome. Ignore all recruiters who are playing the numbers by sending unsolicited CVs to cold contacts.
However, there will come an inflection point when you find the right recruiter, and suddenly working with recruiters becomes incredibly valuable. A high-quality recruiter:
- has pedigree with a particular technology stack, the narrower the better. A 'software engineering' recruiter is no help to you. A 'Python software engineering recruiter' is better, but a "Django software engineer recruiter" is best.
- understands their candidate base, and networks with them all the time. Note that LinkedIn isn't networking, and sending emails isn't networking. I'm talking about real, in-person, taking-people-out-for-dinner networking. Boots on the ground.
- is willing to take the time, sometimes months, to understand your business and the type of candidate who will work for you.
If you find a recruiter who works for you like this, then you should stick closely to them, because that is the relationship which will ensure you only encounter high-quality candidates at the top of your hiring funnel. Quality in, quality out.