Our technical hiring process

September 6, 2023
Designing a great interview process for engineers is tricky. How do we offer an accurate and comprehensive view of the role while respecting your time? How do we give you the opportunity to showcase your skills without resorting to contrived tests or introducing bias? Collectively, the team at Imbue has observed the hiring process at dozens of software companies. We have built a technical interview process from first principles with the goal of creating a rich bidirectional flow of information between you as a candidate and our team.

If you’re interviewing for a technical position on our Research/Engineering team, here’s what you can expect.

Step 0: Application

After you submit your contact information, resume, and optional cover letter on our careers page, we will review your resume and email you whether or not we’d like to move forward. We strive to get back to you within ~1 week, but there may be a delay in times of higher volume.

Some important notes about our review process:

  • Every application is reviewed by a real person. We do not use any kind of keyword screening, automated or not.
  • We review applications holistically and actively consider you for any opening on our team. (I.e. the specific role you apply to is not extremely important, so don’t sweat over it.) Applying to multiple positions does not help your chances of receiving an interview.
  • By policy, we do not give feedback on resumes. We have a small team with limited bandwidth, and we simply cannot give thoughtful and useful feedback to everyone who asks for it at this stage. We hope you’ll understand!

If we do not move forward, we encourage you to apply again in the future! That being said, we ask that you wait until you’ve had a significant change in your experience, which is hard to do in less than 12 months or so.

Step 1: Initial chat

This call is 30 min over Zoom. Most commonly, it’s with Rob, but sometimes other team members will jump in. This is an informal time to get to know each other and make sure we’re aligned on expectations, both in terms of the work you want to do and the environment you want to be in. We’ll look for opportunities to offer up relevant information as we chat, and we’ll leave dedicated time for questions towards the end. Feel free to ask questions about our technical work and roadmap. If there’s anything we can’t answer during the call, we will make sure to get you those answers afterwards.

Step 2: Coding interview

This call is 60 min over Zoom. In order to give every candidate a fair, equitable, and consistent experience, we have dedicated Technical Interviewers on our team whose sole responsibility is to conduct these coding interviews. Because they are not members of our technical staff, they will not be able to answer questions about our work. To make sure you get the detailed information you need to better understand our company and work, you will be sent an informational Q&A doc, written by Kanjun (our CEO), prior to the interview.

Some additional notes about this interview:

  • In order to mimic real life coding, we do not use online coding environments. Instead, you will be asked to use your normal programming environment and share your screen with us.
  • As in real life, you are allowed to look up anything you’d like, copy-and-paste code (once you understand what it’s doing), etc., however we don’t allow the use of coding assistants during the interview
  • This interview requires no ML knowledge and is meant to test the fundamentals of computer science and software engineering. We value clean, readable, debuggable code over fancy solutions.

Note: For those who feel that they consistently underperform in live interview settings, we do offer an alternative take-home coding exercise. Please ask about this if it is something you’re interested in!

Step 3: Collaborative interview

This call is 90 min over Zoom. During this time, you will pair with a senior member of our technical staff and work on a problem that neither of you have seen before. In fact, you’ll pick the problem together at the start of the interview, and the goal is to figure out the solution together. The problems are similar to the previous coding interview in nature (e.g. no ML knowledge required) but are much, much harder. The focus is on problem-solving and collaboration, and it is okay if you don’t have time to actually produce much code. We like this interview because it’s more reflective of our actual working style (we spend a lot of time solving novel problems together), and we find that most candidates enjoy it as well for this very reason.

Step 4: Trial project

The final round of interviews is a 2-day trial project during which you will work on a “live” project, i.e. one that is real, relevant, and valuable to our work. Because this is a serious time commitment and produces useful output for our team, we pay you for your work. The experience is meant to emulate what it is actually like to work with us so that there are no surprises if you do end up joining the team.

Some additional details about the trial project:

  • If you are interviewing for an onsite position, you will spend the two days at our office in San Francisco. If you are interviewing for a remote position, you may complete the trial project remotely and have a bit more flexibility in terms of how you spread out the hours.
  • There will be a series of different interviews/sessions included in the trial project stage depending on your role, e.g. a resume deep dive, a reverse interview where you get to ask us questions, etc.

Step 5: References

After the trial project concludes, we debrief internally and strive to get back to you within one business day. If we decide to move forward, the last step in the process is references. We use the information gathered during the interview process to request specific references. We prioritize talking to your references as soon as they are available; this step usually takes 3–5 days.

It’s important to note that we take references more seriously than your typical startup and have had to refrain from giving an offer at this stage.

Step 6: Offer 🎉

Should everything go well with the reference checks, we will deliver a verbal offer followed by a call to discuss the offer details. Once we reach an offer that we are both happy with, we will send you your written offer letter. We can also set up supplemental conversations at this point so you can fully evaluate the opportunity before making a decision.

Last remarks

You will also be assigned a Talent Coordinator who will help with the logistics. If you have any questions throughout the interview process, don’t be shy about reaching out to them. We look forward to meeting and getting to know you better!

If you’re interested in what we’re doing, we’d love to hear from you. To apply, see our open roles.

Thanks to Josh Albrecht, Kanjun Qiu, and the rest of the team for their feedback and comments on this post.