Our hiring process

January 20, 2022
Designing a great interview process for software engineers is tricky. How do we offer an accurate and comprehensive view of the role without taking up too much of your time? How do we give you the opportunity to showcase your skills without resorting to artificial tasks or introducing bias? Collectively, our team has observed the hiring process at dozens of software companies. We've attempted to distill our experiences into a set of best practices.

Step 0: Application

We personally review all applications and make a concerted effort to respond within a week of submission. No one likes to be stuck in limbo!

For more junior or unconventional candidates, we strongly recommend including a cover letter. This provides another opportunity to explain why you’re interested in working with us and how you feel you can contribute. In the absence of formal experience, we like to see significant independent projects.

If we think there’s a potential fit, we’ll schedule the initial call over email.


Step 1: Initial Call

The initial call is a 30 min Zoom with a member of our team. This is an informal chat so that we can learn more about you—what you’re looking for, motivated by, and excited about—and answer all of your questions about us. The goal is to determine if your interests are well-aligned with what we’re working on. We ask that you have your video on during the interview, if possible.


Step 2: Programming Interview

This is a fairly standard 1-hour programming interview, though we do a few things differently:

First, the interview is conducted from within your normal programming environment via screen sharing. We want to mimic real work conditions and see how you really program.

Second, you’re allowed to look things up. Copying and pasting a code snippet from Stack Overflow (after reading and understanding it) is a perfectly acceptable way to solve problems! We want to see how you really program, not how you perform in a contrived whiteboard setting.

This interview is not ML-focused and does not require targeted study of any obscure algorithms. We’re more interested in assessing your ability to think and program than in testing for specific domain knowledge.

Finally, we do offer an alternative process for people who feel that they consistently under-perform in high-pressure interviews. If this is a concern, please mention it when scheduling the programming interview and we will try to find a way to accommodate you.


Step 3: Pair Programming Interview

In our second and final programming interview, you’ll pair with our CTO Josh on a problem that neither of you has seen before. The goal is to figure out the solution together. As with our other interviews, you’re allowed to look things up and use external libraries. While you will write code, the focus is on collaboration and problem-solving. We like this interview because it’s more reflective of our actual work style (we spend a lot of time solving novel problems together), and we find that most candidates enjoy it as well.


Step 4: Onsite

The onsite (which is virtual for remote candidates) consists mainly of a 2 hour job history interview with our CEO Kanjun. The purpose is to get a sense for common themes and trends in your professional history and gain further insight into your strengths, weakness, and values. There may occasionally be additional interviews, conditional on the exact role and candidate, and in-person onsites include lunch with the team.

We also ask for references at this stage. The job history interview is a great opportunity to help identify who the best references would be and contextualize anything that they might say.


Step 5: Trial Project

During or after the onsite, depending on your availability, we will work together on a trial project. The purpose is to give both sides insight into what working together will really be like. You will get full visibility into our code, infrastructure, and processes as you work on code that we’re actually going to use.

We realize that a trial project might be a big ask, so we’re flexible; it can be scoped for anywhere from half a day to a few days.

Because of the time commitment involved, the trial project is paid. If you’re contractually prohibited from doing any paid engineering work for another company, we will ensure the projects are all contributions to open-source software and will donate the compensation instead.


Conclusion

We hope this helps you understand our interview process better. If there is anything that seems weird or wrong to you, please feel free to reach out—we are always looking to improve!

If you’re interested in what we’re doing, we’d love to hear from you.

To apply, see our open roles or email jobs@imbue.com.



Thanks to Kanjun Qiu, Bartosz Wróblewski, and the rest of the team for their feedback and comments on this post.