Hiring engineers can be a difficult, tiring and cumbersome process. The fact that people buy books says a lot about the maturity of existing methods. We hire people to build a product, not to reimplement algorithms that have long-standing solutions. I have yet to meet someone who uses a whiteboard to code day-to-day and has no access to the internet to validate their solutions.
In this blog post I'll take you through the hiring process we designed at Qstream.
The Job Spec
The job spec is a hugely important aspect of hiring as it is usually the first exposure a potential candidate has to your company. If you don't put effort into this section, you are going to harm your chances of attracting candidates.
When we defined our first job spec, we looked at various companies that are considered to be industry leaders in technology. We came up with a format we believe is meaningful and clear, not just for engineering but all roles. Below is an example of the structure we follow when we create a job spec.
About the role
Describing the role is the most crucial piece of the job spec as it details what the candidate should expect from the position. This section acts as your pitch to the candidate, and you need to be sure you're marketing yourself correctly.
This section is used to describe who you are as a company and what you provide to your customers. I suggest getting someone from marketing to provide you with this section and make it consistent across all of your job specs for all roles.
Here you are setting some expectations, so it's important to be open and honest about what your requirements are. Far too often you see a requirement for ten or more years experience with technology barely three years old. All this accomplishes is giving the candidate a poor impression of you.
Question all of your previous requirements every time you put up a role, don't expect one-size fits all. For example, do they need four years experience or is two fine? Do they need a PhD or for that matter even a degree? Is industry experience enough?
Ask yourself "Is this necessary?" of all of your requirements. If you can't convince yourself of the answer, remove the requirement.
The Candidate Guide
One of the biggest issues in my opinion with hiring practices is how company employees engage with the candidate during the hiring process. The general pattern of being passed from person to person leads to a lack of continuity and, depending on the company culture it can lead to an intimidating first week.
To solve this problem, we came up with the concept of a "Candidate Guide". In short, this person is someone from within the team who is responsible for all communications with the candidate, letting them know who they're talking to, where to go and when to be there. For successful candidates, the person acts as their guide for the first week of work. They are responsible for introducing them to their team, showing them around the office and helping them with any questions or issues. This process allows the candidate to settle into their new role with the support of a familiar face.
The Five Tenets
We defined five tenets which are essential to our process:
- Reality Driven Hiring
- Be forgiving about CV quality
- Be considerate to the candidate
- Share the interview process across the team
- Socialise outside of the office
1. Reality driven hiring
Ensure the problems you present to candidates are both realistic and relevant to the job role.
As I alluded to in the introduction, a lot of technical hiring processes include unrealistic problem-solving scenarios such as:
- Print out all the permutations of a string
- Implement an algorithm that reverses a singly linked list
- Reverse the bits of an int
These sorts of questions, usually done on a whiteboard don't sit well with me for two reasons:
- In most software engineering jobs none of the above apply
- In all software engineering jobs I have a laptop and Google
2. Be forgiving about CV quality
Subjectivity is your enemy when it comes to evaluating a CV.
If you can read it and understand it but reject it because you don't like the format, then you're losing many potentially talented people. Having a clear scoring mechanism will help you here, and I will go into the detail of that below.
Bertram Wooster and Ernestine Anderson were staffing up their teams. Bertram was hiring trainees to work in the company’s retail stores, Ernestine was hiring software developers to build a new supply chain system for the company’s operations. ”Bert,” Ernestine asked, “I have hundreds of resumés, how do I whittle them down to a handful of calls and a few interviews?”
Bertram smiled. He grabbed a pile of resumés from his desk, then started dealing the resumés out, first one back onto his desk, second into the recycle bin, third onto his desk, fourth into the recycle bin. When he was finished, he had thrown half of the resumés away. “It’s simple.” Bertram told Ernestine. “Just don’t hire anybody who’s unlucky.”
3. Be considerate of the candidate
The more comfortable you make the candidate feel, the more likely they are to show you how good they are.
Remember back to the last time you were job searching. You were probably still working for a company which requires ~40 hours of your time per week, interviewing with a few companies at the same time, and you had your own life outside of work.
Changing jobs can be an incredibly stressful and scary experience for most of us. Expecting a candidate to drop everything to focus on you is unreasonable and doesn't give a good impression. Be considerate of their time, make your interactions as lightweight as possible and give people the latitude to say things like "can I look at this over the weekend or early next week". Ask yourself at every stage "Would I think this is a fair and reasonable process?"
4. Share the interview process across the team
Everyone in the team will be working with the person you hire, and so it makes sense to get them involved.
Ultimately it's important that every single person in the team take part in the interview process in some form. An example of this would be to change the guide for each candidate.
5. Socialise outside of the office
The less nervous the candidate is, the more productive the time spent with them will be.
We all know the old joke about people in technology having no social skills.
This statement, of course, isn't true at all (Mostly).
Be sure to take all candidates out of the office for a while when they're on site. Don't make this time feel like an interview, try and make them feel at ease.
1. Choosing a candidate guide
Time to pick someone responsible for guiding the candidate through the process. Be sure to pick someone who has been involved in the process before and knows how it works.
2. CV review
The only way to avoid bias is to derive a scoring mechanism from your job spec. Weight the scoring from most to least important, and score every CV this way. This has proven to be a reliable and impartial way of screening CVs for us.
We do an initial phone call with every candidate to inform them about our interview process, the company and the role. It gives the candidate an opportunity to ask questions or decide not to proceed. This call is not a screen and everyone we speak to goes to the next stage of the process if they so wish.
4. Technical assignment
The technical test should be as transparent as possible. The goal is to give the candidate the best chance of doing well. The conditions of the assignment should mirror reality. Employees in your company know what expectations to meet, what success looks like, and have access to the internet. So it stands to reason that your technical assignments have the same characteristics.
We provide our assignment along with the scoring mechanism. You may think that's odd, but we have found the assessment is still very good at surfacing the things we want to see. Generally, we are more concerned with seeing how people approach problems than if they solve them. We purposely make the assignment too large to finish and ask candidates to spend no more than an hour doing it. We make it clear that the goal is not to finish it and to do their best in the time suggested.
5. On-site interview & social interaction
Bringing a candidate into the office can be an intimidating experience, but it really shouldn't be. Interviewing someone is as much about cultural fit as it is about technical ability. If someone feels nervous, it is your responsibility to make them feel comfortable.
Below is how we structure the time that they are in the office.
Arrive, get shown around and do some introductions.
Get coffee with some of the team. This interaction is intended to be very casual. If it's sunny, we usually go to the park with our coffee.
Work with the team. This time is for the candidate to get an understanding of our dynamic and for us to understand their approach in a day to day scenario. We encourage the candidate to ask questions and get help if they need it. We ask candidates to build upon their previously submitted assignment in some way. We provide them with a laptop, or they can bring their own if they're more comfortable doing that.
Meet our VP of Product and Engineering. This chat allows for an honest discussion on the culture and direction of the company.
Meet with someone from People Operations to discuss the company and its benefits.
Wrap it up with a feedback session on the work the candidate did that day. We give them a chance to clarify their solution and talk us through their approach.
6. Decision time
Once the candidate has left the office, a group convenes in a room to discuss the day. This group is usually the candidate guide, the team lead, people operations and our VP. We talk about the candidate and then decide whether we make an offer or not. We always let them know of the decision by the next day and provide constructive feedback of how they did on the day, regardless of whether we're making an offer or not.
Feedback is an important point which I haven't described yet. Not only do we give candidates constructive feedback every step of the way, but we also encourage candidates to give us feedback. We use this information to ensure our process evolves to stay competitive.
There are a few key takeaways from this post which I'd sum up in a few points:
- Keep the process as lightweight as possible for the candidate
- Provide feedback at all stages regardless of progression
- Use scoring mechanisms to stay as objective as possible
- Ask for feedback on you and your process and change if warranted
If you have any feedback I'd love to hear it. Send me a mail at: