I was running the numbers. I've interviewed between 700 and 1000 people in my life so far.
I started interviewing people very early in my career because the company I joined right out of college was hiring aggressively – perhaps too aggressively considering they folded a few months after I joined — and they didn't have many engineers to assess technical talent with. So here I was, a fresh, bright-eyed, severely underpaid 22-year-old engineer, interviewing engineers and designers who were at least 10 years my senior.
Since then, I've recruited and interviewed at every company I've been in, including of course the ones I've started, and every time I've learned more and more things about talent and human nature. I've interviewed people much less experienced than me and I've interviewed people that were getting their degrees while I was still in middle school playing The Sims. At different times, I've succeeded and failed at hiring good talent, in my ability to both assess the value of candidates and successfully hire them. This is an attempt to summarize my learnings over the last 10 years or so.
What's the goal?
Let's start from first principles. If you're hiring, the company you work for has the budget to increase its workforce. This means you're making money or your company has enough cash to burn and the person you're hiring will increase your chances of making money in the future. This is an incredibly shallow way of looking at the problem, and I will dive later into long-term value, but if you're not in one of these 2 camps, you probably shouldn't be hiring at all.
The reason I'm taking such a straw stance is to run through our first mental exercise: why are you hiring this person right now? Most teams I've met don't sit down and ask themselves this question. They either have a budget or, if the company is young enough, have recently raised capital and have the impending hunger to deploy it.
Understanding why you're hiring for a role is everything. It'll determine the skills you should be looking for, what this person will be doing with their time in your team, and the process you should run to find and recruit them. You have to ask yourself: what's the ideal, wand-waved, magical scenario? If this person joins the team, what's the result? What is it that you want them to do and what do you want the final result to be?
Qualities I look for in candidates
I'll start with the most controversial first: hiring engineers.
I don't do leet code / algorithm-style interviews. After 10 years of interviewing engineers, I've come to the hard realization that whether a candidate can whiteboard an off-the-cuff bubble sort or write an A* algorithm in Python or not is irrelevant and gives me no signal on their prospective value to the company. I expect future engineers in my team to research things they don't know and figure out how to build them effectively at scale. That's it. I've always encouraged peer review with pull requests; if I see spaghetti code in your first PR, I'll show you how to do it better. If you continue doing it, the problem isn't being a bad programmer: you just don't know how to learn.
I'm looking for fundamentals. How good is the candidate at understanding problems and designing solutions based on first principles? How is their system-design thinking? At the end of the technical interview, the candidate should be able to produce the design for:
- Something that scales.
- Something simple; a clear answer to a clear question.
- Something that isn't over-engineered/over-designed for the needs (and constraints) of the context given.
See how these 3 qualities apply to virtually every role in a software company. I mostly have experience hiring what I am: engineers and designers. Designers, just like engineers, are divided into 2 categories:
- Need structure and frameworks, are very good at using the existing LEGO blocks to create something that has aggregate value. They can leverage existing systems to create something amazing.
- Don't need structure or frameworks and thrive in environments where they can create them from scratch. They can create systems.
Depending on the stage of your company, you may need either or both. In the first 2/3 years of your company, unfortunately, you don't have the time to create structures or manage people. You have to hire people who will present virtually no overhead to you or the team and can in fact build the structures for people to come.
That's not to say people who need structure aren't incredible designers and engineers. Just don't make the mistake of hiring them early on. They need a type of management you need to establish beforehand, and hiring them without it is irresponsible.
I need to work with people who can and want to learn. The best engineers and designers I've hired are in it for a longer-term purpose. I love hiring people who want to eventually start their own companies and projects, especially in the early stages of a company. They're hungry for something different in life and enjoy building from scratch.
Many people disagree with me, but there's nothing better than people you've hired eventually graduate out of your company, and go on to build the most amazing things. It's the most sincere form of flattery and demonstration that you can grow people from within. The best ambassadors of a company are the people that leave. They have an unbiased opinion of the company you've built. With no attached incentives, seek their feedback after they've left.
Going back to cultural qualities, because I'm getting sidetracked.
I'm looking for astronauts. NASA is well known for hiring and sending people into space who hold themselves and others accountable, eagerly accept responsibility, and have a self-aware sense of humor that keeps them cool in stressful situations.
Especially early on, I hire people who I know will correct me and speak up if I mess up. I don't need deference, I need peers. I need people who will speak up if we're building something stupid that no one, especially users, wants or needs. Sometimes it only takes one person in a room to voice the invisible – or to surface the quiet vox populi.
I look for a special kind of self-awareness. People who apply a small amount of paranoia in what they build, but with a sense of optimism. If something can't be achieved, let's find together what we can do to provide value to the user. My worst hires have been people with high technical skills but terrible attitudes: this can't be done and I won't give you alternatives. Stubbornness needs to be paired with optimism; otherwise, it becomes a terrible waste of time.
Last but definitely not least: a sense of pride in what they build. The product manager is breathing down your neck and the JIRA (yikes, but let's not get sidetracked) ticket states the deadline as today. You have the opportunity to sneak something past a PR that you know the person reviewing it will not notice. It will cause problems down the road for someone — not you most likely — but it gets you out of the ticket and everyone is temporarily happy. I don't want to work with someone who knowingly pushes a small bird poop in their code, with the only reason being to get out of it. I want to work with someone who will message the PM, come clean, and explain to them that it'll be ready tomorrow, not today, and it will be well done. Sometimes you have to eat shit to build a great product. The company will survive. Users will thank you.
I try to be extremely transparent in our recruiting process: what we do, why we do it, who we are, steps, and compensation.
I worked in companies earlier in my career that stuffed their faces with Earth-saving missions that turned out to be untrue. They weaponized people's morality and used it as a weak point to recruit them. I don't believe in that. Since then, I've built companies that are much more utilitarian. We can be aspirational, and I certainly want bem to change how we build software, but I can't look at you in your face and tell you we're going to change the world forever. I can promise you an amazing place to work and develop your career. I can promise you it'll be hard, hard work, but also incredibly stimulating and fulfilling. I can't promise you we'll eradicate world hunger. Nobel Peace Prize-mission statements were created by consulting companies to charge billable hours and make you feel great about it.
I'm also very transparent regarding our funding, runway, and investors. I'm interviewing someone who may become a shareholder of the company, and they deserve that level of transparency.
I try to design interviews in a way they're conversational and respectful. In a market as liquid as tech, going into interviews with any superiority stemming from perceived – and misguided – market leverage is a terrible idea. If you really want to hire the candidate, be prepared to lower your ego and convince them you're worth it, your company is worth it. It's your job.
Conclusions and a personal note:
Finding truly great talent is the hardest thing you'll do. Harder than fundraising, surprisingly. It's very easy to hire, very hard to find and hire amazing people. Always err on the side of keeping a very high bar. I've made the worst hires in times when I felt desperate and pulled the trigger too soon. I've made my best hires while waiting for a local maximum and going all in.
I won't go into the next step in this post: company culture. However, I will say something important: the recruiting process is the face and first contact of people with your culture and values. The best recruiters are people who exude the best qualities of your culture. It changes everything.