One of Rainforest’s Engineering’s team core tenets is continuous improvement. So before we started hiring again, we sat down and discussed how we wanted to change our hiring process. We decided on a few changes, but the main one was we wanted to be more transparent about how engineering at Rainforest works. That’s why we’re publicly publish our hiring process here for the first time.

First, we wanted to make it clear how we work here at Rainforest so we can attract more of the right kind of candidates. Second, we wanted to disclose the specifics of our hiring process so you can decide whether you want to go through it before applying. After all, there’s no point in applying for a position if you don’t want to undergo the application process — it’s not a good use of your time or ours.

Over the years we’ve spent a lot of time reading about hiring processes and thinking about our own process. We’re aware there are things in our process that might be disagreeable for some candidates and might lead to some bias in our selection process. For example, you might argue that some people aren’t good at live coding or talking in front of strangers, or that our process isn’t representative of “real” work. This is probably true, but we need some way of assessing strangers on whether they will thrive at Rainforest, and this is how we’ve decided to do it — at least until we learn from the current version of the process and identify how we can improve it.

1. Application

We post our job listings to our website and other job boards like HN’s Who Is Hiring?.

We ask applicants to complete a short puzzle as part of the application submission process. Solving the puzzle requires a combination of web technology knowledge and troubleshooting skills, so we think it’s a good early indicator of fit for our roles.

2. Hiring manager review

The engineering hiring manager will review your previous roles, accomplishments, tasks, and any additional information (such as portfolio work) to get an initial sense of whether your experience aligns with what’s needed to be successful in our working environment and the role.

Particularly, the hiring manager will look for:

  • Work with software programming languages and application-level frameworks that are core to working at Rainforest, OR devOps experience on a modern commercial cloud provider or platform, especially with common Infrastructure-as-Code (IaC) stacks like Terraform, Puppet/Chef/Ansible/etc.
  • Use of Agile methodologies in a cross-functional team setting.
  • For higher grade levels: experience of working effectively with different stakeholders (including non-technical ones).

3. Initial call With HR to describe compensation philosophy

If you pass the initial screening, you’ll have a chat with HR to make sure we align on compensation expectations. To be respectful to everyone’s time, if we can’t align on compensation, it’s best to end earlier in the process.

4. Phone screen

You’ll have your first conversation with the hiring manager (who will usually be your manager if you get hired).

As a quick sanity-check to make sure you can code, there’ll be a short (30 minutes, maximum) collaborative live coding exercise. Please come prepared with a development environment where you can write and run your code (in any language of your choosing).

This is a good first (but not last) opportunity to ask any questions you have about the role and about working at Rainforest.

5. Work sample test

The goal of the work sample test is to help your interviewer ask thoughtful questions about the kind of code you’d write, thought processes you’d apply, and choices you’d make while at Rainforest.

As much as possible, we want to evaluate what your normal, everyday work would look like, which is why we use a work sample test rather than whiteboard or live coding exercise for this part of the process.

We provide detailed instructions (published below) for the work sample assignment, and ask that you spend no more than three hours completing it. Once you’ve submitted the work sample, your interviewer will read your submission, run it, and prepare follow-up questions to ask during the interview panel.

Instruction to candidates

We know that the best way to tell if someone’s a good engineer is to actually look at their code, so before your interview you’ll need to submit a code sample for us to review.

Rainforest’s core languages are Ruby and JavaScript. We may be able to review code in other languages as well, if we have a knowledgeable reviewer — just ask. Choose the language you’re strongest in — we’re looking to have a conversation with you about the decisions you’ve made in your code.

Please let us know right away what language you’ll be using so we can select an appropriate reviewer.

Your code sample is due by {DATE}, and you can submit by replying to this email. Please don’t be late; if you miss the deadline, that’ll jeopardize your application. If you can’t make the deadline please let us know as soon as possible.

Your next interview will be with someone who has reviewed and run your code, so be prepared to explain your code, walk through it with our interviewer, and answer questions.

We have different assignments depending on the position you’re applying for:

For backend engineer positions, pick one of these assignments:

Each exercise has its own rules and instructions. Where our rules and Ad Hoc’s differ, follow our rules. Let us know if you have questions!

For frontend engineer positions, you can find the template repository for the assignment here.

  • As mentioned above, please submit code written in the language we agreed upon.
  • Include documentation about your development environment and instructions on how to run your program. Make sure that someone familiar with your chosen language can easily run your code.
  • Include tests and instructions on how to run the tests.
  • Share your code via a publicly accessible Git repository.

Please don’t spend more than 3 hours on your exercise. If you reach 3 hours, and haven’t completed work, please contact us and we’ll help you decide what to do next.

Good luck! If you have any questions, please let us know!

6. Interview panel

You’ll have three, back-to-back interviews, each with a different member of our engineering team. Each interview will be approximately one hour long. To reduce the stress associated with single interviews that might run a few minutes long, you’ll be in the same video meeting room for all your interviews.

One of the interviews will cover your work sample test. The other two interviews will be behavioral interviews, which means you’ll be asked a series of questions about experiences you’ve had and how you handled them. There are no “right” answers; we’re interested in talking through these situations with you to learn more about you. Don’t be surprised if you get the same question from different interviewers; that’s normal. Feel free to think for a moment before answering if that’s your style — you won’t be judged for it.

There will be times when the interviewer asks for more information, or wants to dig deeper into your answers. That’s also normal; we want to make sure we understand what you did and why.

Please keep in mind that interviewing is a two-way street. This is another good chance to learn more about working at Rainforest, directly from our team members.

7. Reference checks

Assuming you pass the the interview stage, we’ll ask for up to three references to talk to. Two of these contacts should be from people who have managed you directly. The third can be from another manager or someone else who knows your work well.

8. Chat with CEO

If we’re happy about what we’ve heard from your references, at this point we’re pretty confident that you’ll be a good fit.

We’ll invite you to meet with our CEO, who can talk more about the company’s vision. This is an important step because we want everyone to feel motivated by what we’re trying to accomplish. (Also, our CEO just likes to get to know everyone on the team.)  

9. Offer

If everything has gone well, we’ll feel confident that you’ll be successful engineer at Rainforest, and we’ll both be excited about your joining the team. It’s time to extend you an offer!