In March 2020, New York City was put on PAUSE due to the novel COVID19 virus. For us here at Yext, this means everyone had to work from home. One of the biggest challenges for us, other than our daily tasks, is how can we continue to hire quality engineers if everyone is at home. Like many other companies, interviews at Yext are done in 2 parts, an initial phone interview, and an onsite interview. Phone interviews are not impacted since they were never in person. So, we needed to move our onsite interviews online. Most of our onsite interview questions can be done through coderpad and/or zoom. However, we have a debugging question, which involves generating a graphic, that we could not give through coderpad. We give this question on interview laptops preloaded with the question. Even on the best days we had issues of making sure that each interview laptop can run the questions, its examples, and the solution correctly. The challenge is to move this question online, to allow us to continue interviewing during the COVID19 pandemic while improving our interview experience.
As we began thinking about putting this question online, we determined a few criteria. First, we would need to be able to create new instances of the interview at will, just like how coderpad works. Second, the question needs to be able to be fully completable in this new platform, every part needs to be completable and runnable. Third, this platform needs to be easily updatable, no more syncing laptops. Finally, and probably most importantly, this needs to be done quickly as we don’t want to put our interviewees on hold.
With the criteria in mind, we started off designing and implementing our solution. The solution we ultimately came up with was to put code-server from Coder on kubernetes and host it on google cloud. To view the graphic that the question generates, we hooked vscode up to a tiger vnc instance. Finally, to control the lifecycle of the instances we wrote some python scripts that allowed initialization, download, and tear down of instances.
We completed the solution within a few weeks and were trialing the interview in early April. We were able to continue our interview process with little disruption to our interview schedule. The initial feedback we have received was really positive. Candidates were really impressed with the overall experience, however we do have room for improvement.
During this process, we learned a lot about how vscode works and our interview process. Setting up a local docker instance to test our implementation was crucial as it allowed us to iterate on our solution. After rolling the solution out, we had to retrain all of our interviewers so that they are familiar with the platform and can help candidates with any technical issues that may arise. We increased the interview time from 1 hr to 1 hr and 15 mins to account for the unfamiliarity a candidate may have with the platform.
Since receiving initial success, we plan on expanding our platform to contain more questions and eventually maybe have all our interview questions hosted on there. We may even consider starting to use this as an adhoc dev environment.
We are still hiring! If you like to join our team please apply at our careers page.