Recruiting engineers is one of the most challenging aspects of the software industry according to the State of Software Development report. There is a general lack of developers, so finding and hiring the right people is a nightmare.
Today we will look behind the scenes at Asana and reveal how they recruit the best engineers.
Fanni Karolina Tóth interviewed Greg Sabo, engineering manager at Asana in episode 10 of the Level-up Engineering podcast. Greg puts a lot of effort into recruiting engineers for Asana, so he’s deeply familiar with the ins and outs of the process.
This post covers:
I started my career in Cambridge, Massachusetts at IBM where I worked for a few months on internal tools. Later I worked for Echo Nest, which was acquired by Spotify soon after I left. I spent 2 years at HubSpot on the content teams, and that was my first time at a company that was growing at scale. I learned a lot about hiring and scaling team culture there.
Then I moved to San Francisco and spent 2 years as an engineer at Stripe. Then I came over to Asana and started working as an engineer about 3 years ago. I worked on monetization, and also led the internationalization engineering team.
For the past 2 years, I've been an engineering manager at Asana. I support developers across 4 different teams. We call this the adoption pillar of teams. My primary responsibility is to support my reports and give them clear goals for their growth and the team’s growth as well.
The first principle that goes into building our employer brand at Asana is building an incredible workplace. This also helps with our mission to nourish collaboration. We want our workplace to feel like the future, and be a collaborative, welcoming space. We aim to create the perfect balance of helping people grow and push themselves and proper reflection.
The biggest thing that helps us to recruit engineers is word of mouth. We strive to make it so that developers working at Asana can't stop talking about the company, and only have great things to say.
It’s also reflected in Glassdoor reviews and surveys that we do. We have several best workplace awards. It’s a big part of our employer brand since the beginning. Employees often look this up before they join a company. You need to make an authentically great place to work, as people see through fake reviews.
This is the most important pillar of our employer brand, and the last thing that we would ever drop.
The teams can deploy an update any time, and as time passes, the bots play more frequently. So, an early lead certainly won’t decide the final outcome, and you can always find your way back to the top.
On top of this we need to tell the story of what it's like to work here. Our employees tell the story naturally to their friends and anonymous review sites. But there's more to it, that may not be part of the discussion.
So we have an awesome employer brand team that works on our outreach. We do blog posts, participate in conferences, and work with events. This is how we get the word out about what it's like to work at Asana.
We encourage people to apply through our website. They might have a contact at Asana, but we encourage people to submit online in that stage as well. Early on we look at your experience and see if it’s close to the type of engineers we're looking for at the time.
Then a recruiter will reach out, and get to know you, learn what you're looking for in your career.
If there is a match, we proceed with what we call the coding challenge. This is basically a take-home assignment. It's meant to evaluate your coding style, and to see if you can implement a solution to a problem in a constrained amount of time.
We've recently lessened the time requirement, and designed the problem to be solved in about an hour, because not everyone can spend all day. It’s evaluated by one of our engineers, and if it looks good, we move forward.
The next step is a phone screen interview of a primarily technical nature. If that goes well, we do a series of on-site technical interviews before the final stage.
At the end we might do a reference check, and a deeper conversation with the recruiter and the hiring manager to make sure it’s a fit before you make your decision.
We do what we call a huddle-meeting, where everyone who has interviewed the candidate gets in a room. Each interviewer has an impression to start with, whether they think the person would be a fit for the rule, and we all discuss it.
We try to answer questions like:
We see if we can find common patterns. If we see a consistent strength or weakness, then we discuss its potential impact on day-to-day work.
For example, if somebody struggles to generate new ideas when solving a problem, but they’re strong at evaluating ideas, we tend to hire that engineer. Ideas can be generated collaboratively, as long as someone can be trusted to evaluate them and pick the best one.
Sometimes interviewers see conflicting strengths and weaknesses. We take note of this as well and take it into consideration.
The final decision comes down to the facilitator of the huddle based on the interviewers opinions. The facilitator hasn’t interviewed the candidate, so they bring a fresh mindset to the discussion. We train our engineers to facilitate meetings and make decisions collaboratively with a group.
It doesn't have to be a complete consensus.
The key thing for us is that the facilitators need to know how to make good decisions. They need to be great at listening, and getting the right information from the interviewers. They need to be able to make everyone in the room feel comfortable, and voice dissent against the consensus.
In groups it often happens that 3 people share a point of view, and a fourth person who disagrees won’t even speak up, but their opinions often hold valuable information. This is the most valuable skill we've developed building our engineer recruitment process.
In addition to that, we focus on the candidate experience through all the interviewers. Interviewing is stressful, difficult, and a lot of work. We make sure our interviewers know how to make candidates feel comfortable, use the time well during the interview, transition topics, and hint without giving the answer away. The communication and collaboration skills of interviewers is another thing we work on.
We recruit many engineers from universities, so we often visit campus events. We target ten different schools across the country to visit and develop a relationship with. That includes career fair events, speaking on campus, and meeting with specific students for a one on one who we reach out to in advance.
We have a lot of interaction at these schools, so we're careful to send engineers who are excited to engage with students. Sometimes we send people who graduated from that school, and want to work with their alumni. Other times it’s people who are just excited to grow the team.
This channel is important to us, and not just for volume, but also for shaping diversity in our pipeline. We found that it helps to develop relationships with organizations for members of underrepresented groups. We make it clear that we value diversity, we invest into it as much as possible to encourage a more diverse group of people to apply to us.
We attend conferences, send speakers, and we also host meetups. We organize a TypeScript and React meetup at San Francisco, and we held one in New York as well. We’re early adopters of TypeScript, we were the first company to create bindings for React with TS.
This is how we get the word out about our impact in the TypeScript and React community. It’s a major channel we use.
We also use emails. People often complain about getting emails from recruiters, but it’s a great way to tell the story of Asana. It’s effective for generating interest from candidates that wouldn't have considered us otherwise.
We use email recruitment carefully, and not just spam people. We reach out to individuals who we've researched in advance to make sure they will be a fit. This channel works in the current marketplace.
We've invested a lot into creating our internship program, as talented people often look for internships to develop their skills. We look for candidates with good internship experiences, and we believe in creating opportunities in the industry. People who intern with us often love working here so much, they come back for a full-time job.
It’s another way we share our workplace and show off what it's like to work here. We're proud of our workplace and it results in more people wanting to join Asana. Internships are powerful in building careers. We take on many interns each year, but we are careful not to take on more than we can mentor.
We create lots of mentorship capacity, but we make sure that we're not piling on five interns per experienced engineer on any team. Every intern we hire gets one dedicated mentor on the team and also senior leadership to refine their skills in the time they spend here.
We build a strong community of interns, especially during times when there's several of them at once. We hold specific intern events for people to bond and learn more about the company, or just do fun things together. This is how we run the program.
We extend offers to a majority of our interns, but not all of them. We know this is on the interns' minds, so we clearly communicate with them about their progress, whether they’re meeting the expectations of Asana.
Interns have a mentor and a separate manager. The manager has to be familiar with our expectations, and ready to have clear conversations with the intern about whether or not they're meeting them. If they’re not, the manager needs to know how to set them on the right track.
At the latest about a month and a half into the internship we provide overall feedback. If we see a pattern of an intern getting stuck or not having the impact that we expect, we carefully coach them in a direction to improve on this.
All the interns we have are skilled engineers, it comes down to the type of work we need to do. Asana is a particular company with a particular culture, and we need to navigate a tightly integrated codebase across multiple teams. It requires a set of skills not all engineers are interested in developing.
We have several stages of evaluation. I'm most familiar with the interview stage. We start with what we call technical design abilities.
We’re gauging the ability to build simple and scalable architectures. We also consider code quality, and look at naming conventions, refactoring, and whether they can produce navigable code.
We also carefully look at collaboration and communication skills.
Being able to explain your mental model for others is an important skill for a junior, so your mentor can correct it. This is crucial for a senior to be able to do mentoring. For collaboration, we look at how candidates pick up signals and adjust their approach as the interviewer guides the discussion in a certain technical direction.
We look at autonomy as well, which covers the ability to navigate a tricky problem. This involves a process of idea generation and cutting ideas down to a set of decisions. People have different strengths in this area. Ideally a candidate can both generate ideas, and be decisive about which ones to pursue.
We look out for red flags, like a candidate making the interviewer feel uncomfortable. We can’t have a rubric for everything, but we still notice things in the interview process and discuss it during the huddle. It’s the benefit of our process: we don’t just use a scoring system, but make a human decision.
This allows us to pick up on both positive and negative things that can’t be measured.
Companies need to find ways to continuously invest into the interview process. This may involve developing new interview questions, or empowering engineers to propose even big changes to the process.
An interesting effect is people going through the interview process, and once they join the company, they view it as a rite of passage, and they feel nervous about reflecting on it. Often it’s difficult for people to suggest changes to the process. Nobody wants to be the person who tries to lower the bar.
Everyone working at Asana is more than capable of changing the engineer recruitment process in positive ways, especially in collaboration with others. Leaders have a key role in encouraging people to keep asking questions and refine the process. This way you keep your process feel modern and competitive, and make a good impression on your candidates.
We have areas of responsibility that people take on at Asana. We have several people focusing on our interview process, and some engineers that focus on this. A part of this is operational efficiency, accuracy and candidate experience.
They make sure we talk about any potential bias in our questions. We have a different owner for each of the questions who are responsible for training people, developing training materials and so on. Encouraging people involves making it safe to suggest ideas about our process, so it’ll keep moving forward.
Working with all candidates has been an absolute pleasure at Asana. We have the honor of talking to many talented people in the industry. I've learned a lot working with these people and this process.
Asana has been an amazing place for me to work. I’m fully aligned with the company values, everything feels important to me. We are currently hiring engineers. I hope we can connect with many more developers in the future.
🚀 Need developers for your team or project? Hire our experienced Angular, React or Node.js developers! Click here for a FREE consultation.
About the author:
Gabor Zold is a content marketer and tech writer, focusing on software development technologies and engineering management. He has extensive knowledge about engineering management-related topics and has been doing interviews with accomplished tech leaders for years. He is the audio wizard of the Level-up Engineering podcast.