Remote technical interviews suck - here's how to fixed them
TLDR: Prepare a ready to use environment where engineers can show off their skills
There's a problem with the live technical interviews - the tech. Latency during Zoom calls is one thing, but when you add installing NPM dependencies, incorrect Node versions, busy ports - you end up in a tangled mess.
Whether as an interviewer or an interviewee this is incredibly frustrating. What's more often times people's careers are at stake. With all the anxiety that an interview already brings the last thing you want to see is an error because you're using Python 2 and not Python 3.
After yet another interview where a candidate had a hard time getting started with the code assignment I use for interviews I decided enough is enough. There has to be a better way?!
In this case, the problem can be a solution too. You just have to out-tech the tech.
The tool that helped me break this endless cycle of sadness is Gitpod. It's akin to GitHub Codespaces apart from a few minor differences but the important thing is it allows you to spin up individual development environments that have everything you need.
I'm not just talking about having the right version of Node. Interviewees are a click away from being presented with a Visual Studio Code instance that:
- has all dependencies preinstalled
- has the test application running
- has client and server tests running on watch mode
All they need is a GitHub account, a browser and an internet connection.
Getting started with Gitpod is very easy and well documented.
Once your Gitpod project is configured you'll end up with a YAML file in your repo that might look a little bit like this one:
# https://www.gitpod.io/docs/config-start-tasks#wait-for-commands-to-complete ports: - port: 3000 visibility: public - port: 8000 visibility: public tasks: - name: Install dependencies before: cd full-stack-test init: npm i && gp sync-done dependency-install - name: Run client tests before: cd full-stack-test init: gp sync-await dependency-install # the command won't run until dependencies are installed command: npm run test:client - name: Run server tests before: cd full-stack-test init: gp sync-await dependency-install # the command won't run until dependencies are installed command: npm run test:server - name: Run app before: cd full-stack-test init: gp sync-await dependency-install # the command won't run until dependencies are installed command: npm start
Projects are automatically prebuilt so there won't be any waiting around when the interview starts. You just need to make sure the candidate has access to the repo and instruct them to go to
gitpod.io/#https://github.com/<your-org>/<your-repo>. After they login in with their GitHub account, they'll be automatically enrolled in Gitpod's free plan. If everything goes well they'll be ready to code in 60 seconds.
I've gotten very positive feedback from candidates who've experienced this improved development experience. In one case a candidate chose to use their own PC for the interview. Soon they realised it'd take them too long to clone and set up the repo, so they quickly switched to Gitpod and began coding. Instead of the interview being completely derailed we only lost a few minutes.