In March 2016, I had recently become the Director of Engineering at Auth0, and we were growing A LOT. This meant we had to spend a lot of time hiring.
We thought it would help if we explained what our process looked like, so we decided to write "How We Hire Engineers," a blog post that explained our process in detail. It:
Provided applicants with more information about our process.
Increased the number of applicants.
Served as a good indicator of a candidate's interest. If someone was applying to work at Auth0 and had read the blog post, that was usually a positive sign.
Since then, we have grown even more. We are over 650 people in more than 30 countries, and many people who join Auth0 tell us the blog post was a great asset. An update has been long overdue, so here it is!
What We Look For
Before diving into the specific steps, we want to share what we look for in candidates. In the early days, we'd hire mostly generalists, but as we have grown, we have started to hire specialists for specific roles. However, there is a set of traits that we look for in all candidates, regardless of team and seniority.
Great candidates have these traits based on our values, our remote culture, and Auth0's natural tendency to grow and change as a company:
Waiting for the ideal circumstances to make things happen is a "no-no". We continuously grow and evolve. There are no "ideal circumstances". Great people cover the gap between where Auth0 is and where its processes are. They make things happen regardless of circumstances.
We are a rapidly growing company. The 2019 challenges are very different from the 2020 ones and the ones we'll solve in 2021. Getting the right people in the right seats is very important, with reorgs every year common. We MUST hire people that not only "are OK with change" but "embrace change".
Great candidates want to work at Auth0, not use technology X or solve very specific problem Y. They understand that priorities change and that learning and applying varied skills is a must to succeed.
Because Auth0 is continuously growing, learning new skills fast is key. We look for candidates with a growth mindset and can learn fast, take feedback, are self-aware, and (in the case of experienced candidates) have a career growth trajectory.
Know How Computers Work
We look for people that grok principles, not specific technologies. Even specialists should understand the concepts behind the technologies they know and be able to discuss other options in the space. This enables fast learning, good tradeoffs, and understanding the new.
All teams in our engineering org have members across different countries. Having people that can effectively communicate (according to their seniority) is fundamental for us. This prevents misunderstandings and repetition, which helps avoid rework and being blocked.
We want candidates who help their teammates out, serve as mentors, and are OK with doing the unglamorous work. Good candidates understand when it's necessary and when it contributes to the success of the team.
Strong Sense of Ownership
We want people who feel responsible for the team's success and the company and not just "their work". This is related to our "One Team, One Score" and "We Give a Shit" values. Ownership powers our use of the "You build it, you run it" model.
Read on 👇 if you want to learn how we hire in a company that values those ☝️ traits.
Step 0: Apply
We list open job positions on the Auth0 Engineering Jobs page. Candidates send a CV and optionally a cover letter or custom message. Either the hiring manager or a recruiter will review resumes. The question we ask is:
Does it seem like this person WANTS to work at Auth0?
We'll check the application for a custom message/cover letter to see if it reflects an interest in the company and position. We also look at their resume and try to assess their relevant experience for the position.
Each role has a set of associated time zones. Our engineering team is remote, and we try to make sure that members of a single team have at least 3 hours of overlap.
A candidate might be a good fit for a position they did not apply for. In that case, we will reach out to see if they are interested in that other position.
For less than 10% of candidates, if we think they are a "strong yes," we email them to set up an interview with the hiring manager. Otherwise, if we think a candidate could be a good fit, we move on to the Recruiter Screen.
Step 1: Recruiter Screener
The screener is a Zoom conversation with someone from our recruiting team. The goal is for both the candidate to find out more about each other and us. This is not a technical interview, but mostly a high-level conversation about the candidate's experience, interest in Auth0 and the role, and expectations. We assess:
Remote work experience
Recent experience, successes/challenges, fit for the role, etc.
Authorization to work in the country the candidate resides
In this and all other conversations, we always make time for a candidate's questions.
Step 2: The Interviews
There are three interview stages. Each one only takes place if the previous one went well.
Hiring manager interview: This can be a mix of technical, interpersonal skills, and behavioral questions. We often go through previous experience and assess whether the candidate's values and ours align.
Technical interview(s): Either one or two technical interviews. Engineers from the team the candidate has applied to and engineers from other teams will participate as interviewers.
Engineering leader interview: A conversation with one of our Directors of Engineering to talk about the position, our values, direction, and culture.
Interviews in the first two stages involve a panel of two interviewers each. We want multiple Auziros to meet candidates and to give candidates the chance to meet multiple Auziros.
Over the years, we have kept our "No Live Coding" policy, which usually receives great feedback. We don't think a short live coding exercise gives us the right signals on the candidate's abilities. People get nervous, and it does not replicate real work conditions.
Step 3: The Technical Exercises
This is a topic that gets revisited at Auth0 frequently. We are constantly asking ourselves how we can improve our process, make it more inclusive, and ensure that the length does not make us miss valuable candidates while also giving us a good understanding of the candidate's skills.
Over the years, we have done some experiments with exercise variants and other ways of assessing a candidate's ability to work on problems remotely. Still, we continue to prefer the current exercise format. We still believe this approach is the best one for us to use when hiring. We're trying to make sure that people will be successful at Auth0, rather than just assessing their engineering skills.
We conduct a number of exercises that are specific to the position and seniority. We aim for exercises to take 8-12 hours to complete, and we give candidates at most seven days to work on them. Each candidate approaches this differently and decides how to manage their schedule.
When the exercise starts, we:
Invite the candidates to a Slack channel with everyone involved in their hiring process.
Share the exercise and assign an exercise "go-to person": This person is responsible for replying to the candidate and unblocking them, guiding them through the exercise, and work on defining scope, providing information about Auth0, etc.
Explain to candidates that they are free to ask questions and validate their thoughts on the channel.
Everyone in the channel, especially the "go-to person," guides candidates by going deeper into the requirements or highlighting problems that might lie ahead. We do our best to adjust to each schedule, such as replying late at night and/or on weekends, as we know this requires time from both parties. It's a pretty interactive process!
Anonymized exercise conversation
Step 4: Demo
After the candidate finishes the exercise, we set up a 1-hour Zoom. Candidates walk us through their design, explain how they arrived at it, and demo the working solution using any means they prefer.
During and after the demo, we will ask questions and exchange thoughts. Again, the goal is to simulate as much as possible the experience of doing a demo at Auth0 during an internal Demo Day or Sprint Review session.
We strongly believe that measuring the application process allows us to improve how we do things. We use these metrics to estimate how long filling a position will take and how many candidates we need to attract to fill some roles.
These are the numbers for a recent search to find a Senior Engineer to work in an IAM (Identity and Access Management) team:
Funnel for a Senior Engineer position
Since the initial blog post was written four years ago, a lot of things have changed, but many have remained the same. We have experimented with lots of alternatives, received feedback from candidates, experienced pain points, and learned valuable lessons that helped us improve our process.
As a company, we are always looking to experiment and improve. Our hiring process is just one of the many things that we apply that approach to.
I hope this blog post has been useful to you. If, after reading this, you agree with our values, the traits that we look for, and our way of working, apply to be part of our engineering team.
You should now have a good idea of what to expect.