How to recruit engineers when you can’t bring them to the office

Dror Cohen
CodersClan Blog

--

The ongoing Covid-19 pandemic has put all of us in an unfamiliar situation in which many of our regular day-to-day processes are no longer possible. If you’re hiring software engineers, it’s most likely you can no longer invite them to the office and conduct your in-depth interviews. However, this doesn’t mean you should slow down your hiring processes! Far from it — now is an opportunity to try out methods and tools that will help you hire engineers just as effectively, and might even still serve you after things return to normal.

At CodersClan and Vett.io we’ve been sourcing, assessing and managing engineers remotely for over 6 years. During that time we’ve got to experiment with a wide array of methods and tools to help us get talented engineers — even if we can’t physically meet them. Currently, we source and assess hundreds of engineers each month.

So, let’s get down to business! Here’s how our process work when we hire engineers remotely:

1st Step: Insightful & Engaging ‘First Touch Point’

We found that one effective method for getting quality applicants is through an engaging & swift questionnaire that is insightful enough to let us make an easy decision on whether an applicant should pass to the next step. We’ve devised simple and engaging application questionnaires, in which we are able to tell applicants right away if they have passed the first step, instead of having a dedicated HR person skim through CVs. We’re using TypeForm to run these questionnaires. Here’s how it works:

  1. Tech Fit: Instead of looking for technological keywords in CVs like “Experienced with Angular and Node.js”, we simply ask applicants to fill these in. Each applicant who possesses the bare minimum passes to the next step of the questionnaire.
No need to skim through CVs for technologies — the applicants just tell you what they’re experienced with.

2. Professional Depth & Communication Skills: In order to get a feeling for their professional level and written communication skills, we ask professional, open-ended questions. A great answer would be insightful yet concise; a bad answer will be partial and sloppy. If I ask an applicant: “What’s your preferred IDE and why?”, saying, “I like using Visual Studio Code because it’s light-weight and it has a great plug-in eco-system” would give me much more positive signals than merely “visual studio”.

Not a great answer

Using questions like these, we already get some idea about an applicant’s quality. Anyone who fails is given the decline notice. Everybody else passes to the next step.

2nd Step: Basic Professional Assessment & Call with the Team Lead

We’re handing out anyone who passed two invitations:

  1. An invitation to complete a short code quiz. This shouldn’t take more than 10–20 minutes. In the quiz we ask about 10 multi-select questions that cover subjects that a passing applicant should be able to easily answer. Tools you can use to easily send such quizzes are Codility, HackerRank and CoderByte.
Most of our questions are not Computer Science questions but rather questions that will indicate the applicant’s ability to deliver practical work quickly and with high quality.

2. An optional invitation to jump on a call with the Team Lead. We found that often it would be important for high-profile applicants to get a good understanding of the position before they further invest more in our process. Sometimes they’d even want to see “our skin in the game”, and so we added a link to schedule a call with the hiring Team Leader. We’re using Calendly’s integration with Zoom to schedule calls more easily.

Scheduling intro calls with Calendly is easy

3rd Step: Optional Hands-on Practical Test

Many of our positions are created in the expectation that new hires will quickly ramp up to execute tasks for specific tech-stacks. That’s why we find hands-on practical tests to be highly effective in telling us if an applicant could start delivering during their first days of work. If you’re looking for a generalist that you could gradually train for your stack, you may remove this step, but then the last steps should be even more thorough.

Since we want to minimize the amount of time we need to invest in each applicant’s training, we created hands-on tests that reflect our tech stack and day-to-day work. Our tests are comprised of:

  1. Git repository with an existing codebase of a small web-app.
  2. A docker-based development environment that’s connected to the git repository with CI/CD.
  3. A list of tasks that includes bug fixes and small feature addition. We give 3 easy tasks, 2 medium and 1 hard.

Each applicant is asked to install the dev environment, complete the tasks and push the code. Once done, one of our seniors conducts a code review.

Given that we only want applicants who can start delivering very early, passing applicants are only those who:

  1. Were able to run the dev environments with little to no help.
  2. Completed all of the tasks.
  3. Communicated clearly and politely during the process.
  4. Had clean, clear code that could have been accepted to our production environment.
  5. Paid high attention to details and delivered a working product with barely any bugs, if any at all.
Some examples of tasks, and our mini React app for the exercise

4th Step: Whiteboard Session & Cultural Fit

OK, so by now, anyone who has reached this step more than likely has some solid, hands-on skills. But do they really have enough of that special sauce to join our team and work closely with us? Quizzes and home assignments will only get us so far, but what we’re really missing is understanding a candidate’s Logical Thinking and Chemistry/Cultural Fit.

You can argue how well algorithmic whiteboard sessions testify to an engineer’s skill, but in no other test will you be able to get a front-seat view of how they think; what it’s like to be working with them; and how they handle themselves when they need to figure out, on-the-fly, complex s**t. Do they ask the right questions? Are they having a discussion? Or even, are they communicating their solution coherently?

We can’t invite the applicants to our office for a day of interviews, and yet we still need to successfully conduct this last and most in-depth part of the interview. What we do is we ask 2 different senior engineers to conduct a remote whiteboard session with each applicant. The interviewers are free to choose any test they’d like — pair programming session, architectural discussion or even just a plain old one-on-one video conversation. They both submit their notes before discussing it with each other. Some of the tools we use to handle these types of interviews are:

  1. Pair Programming Sessions: We recommend CoderPad to conduct a voice- or video-call with team members and the applicant, along with its browser-based code editing tool. We can run Node, Python and various servers on it and even hook it up with a database or CSV files if we want to test data manipulation abilities.
CoderPad for Pair Programming Sessions

2. Architectural “Whiteboard” discussions: nothing beats a real whiteboard and a marker for collaborating during an interview, but there are pretty good online alternatives.

  • For a feature-rich whiteboard where you can draw collaboratively — Miro
Miro: Fantastic for free collaborative drawing and scheme creation — especially if you have an iPad or a digital drawing pad.
Creately.com — Works great for detailed schemes.

Final Step: Signing

After going through these 5 remote, yet in-depth steps, you should be be able to reach a clear decision on whether you got a good hire or not, and hopefully even get to sending a contract.

The next step, naturally, is starting to work with new employees remotely, but that topic deserves a whole discussion of its own. :)

--

--

Dror Cohen
CodersClan Blog

Co-Founder & CEO of Vett.io and CodersClan. I help companies and talented engineers find great collaboration opportunities through delightful processes.