Home

My Top 0x10 Tips for Hiring Great Developers

TL;DR put in the effort, be very selective, and treat all of your candidates even better than you'd like to be treated.

I’m often asked for tips on how to hire exceptional software engineers in a competitive market. (The market for talented people is always competitive.) Here’s my advice.

  1. Recognize that this is the most important part of your job, by far. If you do a poor job of hiring you will struggle to succeed. So don’t dump it on somebody else because it isn’t fun; own it yourself. Also, realize that this will be hard for you and allocate your time accordingly. If hiring is easy, you’re not doing it right: recruiting great people is extremely hard because demand always vastly exceeds supply. Make sure you’re always thinking about how you can do better at recruiting.

  2. Don’t be afraid to hire better engineers than yourself – rather, make it your mission. If you feel threatened by hiring fantastic engineers, you deeply misunderstand your job. Your job is to build a team so great you can be completely uninvolved in engineering, not a team that can’t function without you. The measure of a manager is often who they can recruit onto their team.

  3. Don’t compromise on aptitude. If you catch yourself trying to imagine a candidate working out, say no. You and your interview team should be genuinely excited about every hire. It’s easy to fill seats by recruiting ineffective people, but your goal isn’t to fill seats. There are engineers out there who are 10 times as valuable as the average engineer, and they only cost twice as much. Because of this, elite teams are actually cheaper to run and easier to manage for a given level of output. Managing exceptional people can be an intimidating challenge, but it’s a lot more fun than the alternative. And while saying no to someone might seem hard and discouraging, it’s nowhere near as hard and discouraging as letting them go when they don’t work out.

  4. Don’t compromise on attitude. You’re not just making hires, you’re building a team, so you need team players. This is actually something that interviews are pretty good at revealing, so make sure to listen to your gut. Tech hires need to be bright and technically adept, but also humble and eager. Despite the movies, the most talented engineers are always very humble. This is why the phrase “better a hole than an a-hole” exists — it’s tempting to hire strong engineers, but if they’re assholes, they’ll wreck your team.

  5. Never turn down a great hire if at all possible. If you’re not in the market for a particular role but a world-class candidate comes along, adjust your budget and make the hire — your hiring funnel probably doesn’t have the volume or reach to be predictable, so you need to adapt your hiring plans to the circumstances. Every time I’ve made an opportunistic hire, within a few months I’ve felt they were crucial to our success.

  6. Absolutely obsess over the candidate experience. This could be a whole post by itself. Understand what a funnel is, understand your “customer”, understand your pitch, and focus on making every touchpoint with a great experience, from first contact with your organization to offer delivery. Make sure they always know what to expect from you and what’s expected of them. Drop what you’re doing to get back to candidates. Lavish time on them. A great hire is probably the highest ROI of anything you could be doing. Corollary: don’t include take-home coding assignments in your process because that’s a big, asymmetrical burden to put on a candidate and tends to bias against senior hires who are more likely to have family obligations in the evening and weekends that they can’t (or won’t) put aside to do your lame coding assignment.

  7. Take the high road. Lots of agency recruiters use pressure tactics like “exploding” offers and employ flagrantly unethical practices like sharing interview questions between candidates; there’s a lot of money at stake and they have no incentive to care about the long run. But tactics like these will backfire with great engineers because they’re not idiots and it insults them to be treated like they are. I want our candidates to shop around so they realize how great our team is, and feel they’d be fools to turn us down — and not feel like they were railroaded into a major life decision. You might lose one now and then but I believe you’ll make up for it in better retention.

  8. Know your quarry. To recruit great engineers you have to know what they want, and here’s what they want: to work with other great engineers; to use tools and technologies that don’t frustrate them constantly; to report to a manager who’s an engineer, or who at least won’t ask them to do things that make no sense; to be challenged to a decent degree and given the opportunity to learn and develop new skills; and to build a product they’re proud of at a company that’s well managed and likely to succeed. Put these pieces in place and then make sure to convey them in your interview process. But the best bait is a great existing team, which is yet another reason to keep the bar high.

  9. Train your interviewers. Your interviewers are your sales reps; don’t just throw them in the deep end. Train them on courtesy and empathy; make sure you know the questions they ask and that they have total ownership of the material; make sure they give the candidates time to ask questions; make sure they act professionally.

  10. Don’t have non-technical people do tech screens. This makes for a poor candidate experience. A tech screen should be an engaging conversation where the screener is surveying the candidate’s skills and the candidate is forming their first impressions of the team. Having an engineer do these instead of your recruiter sends a strong message that hiring is something you really care about — and also gives you better data on candidates.

  11. Fight bias with process. We humans are extremely efficient bias generators, and bias is not your friend here. Try to identify and remove as much of it from your process as you can. Make sure you’re truly evaluating the skills you need, starting with general intelligence. Every interviewer should take good notes and write an opinion supported by facts. Someone walking out of an interview should absolutely not tell someone walking in what they thought. Fight the bias to hire people you like.

  12. Don’t write off inbound channels. Everyone thinks you can’t get great engineers inbound these days. This isn’t strictly true, it’s just really hard and demands a lot of attention. But if you can get great candidates reaching out to you, half the battle — getting them interested in your company — is usually won.

  13. Hire for strength, not lack of weakness. This applies to all hiring, but it’s important to keep in mind when interviewing often-quirky engineers. If a great candidate doesn’t have a personality you love, get over yourself and make the hire. You’re building a team to carry out a mission, not filling out a guest list for a dinner party.

  14. Don’t undervalue communication skills. Coding is communication and engineering is almost always collaborative. If an engineer can’t communicate clearly and precisely, they probably don’t think clearly and precisely. Communication skills are not nice-to-have for an engineer, they’re the heart of the matter — in my experience, truly great engineers tend to have exceptional language skills.

  15. Retention reduces the pressure to hire. If you aren’t losing people, your net hiring goals are easier to hit. Also, it sends a strong message when candidates talk to people who’ve been on the team for several years. Obviously, this is only a good thing if they’re solid contributors. But losing great people who’ve been on the team for a while is a huge headwind.

  16. Never, ever ghost applicants whom you’ve interviewed and don’t want to move forward with. That’s just unbelievably poor form. Have the guts and empathy to say thank you very much but we’ve decided not to move forward with your application, or something similarly respectful and professional. I honestly cannot understand how people who ghost applicants can live with themselves.

Finally, not strictly a hiring thing, but closely related: admit your mistakes and deal with them. Nobody bats 1000 in hiring and for various reasons not everybody’s going to work out. If you don’t deal with it, you’ll impair your team, they’ll be less productive and less happy, and this may be felt by candidates, potentially creating a downward spiral.