Recruiting top technical talent—especially software developers—can be difficult. In 16 years as a software developer, I’ve seen the same mistakes being made time and time again by companies, by recruiters, and by hiring managers. These dos and don’ts are aimed at the hiring manager in the trenches, but the principles apply on up to the CTO and CEO.
Recruiters who can’t or won’t recruit
I get a lot of emails from recruiters. I probably ignore 95%. Even for the 5% I consider, I’m still astounded at how the attitude is essentially “come apply for this job.” This is such an obvious non-starter that I’m surprised it persists.
Here’s an example: Not long ago I received an email from an in-house recruiter for a “hot” startup, saying essentially: “Hey, we’re hiring bro, you interested?” When I replied asking for specifics about the position I was referred to its website. Not even a link, just a suggestion to “go to our website and look at our jobs page.”
Recruiting is, fundamentally, a sales position. If I’ve asked you a question, that is a buying signal. I’m buying into the idea that you might be the right company to work for. On top of that, since I was approached by you, I’m already a qualified lead. If you’ve seen the film Glengarry Glen Ross you know that this particular recruiter gets no coffee. Why? Say it with me: COFFEE IS FOR CLOSERS.
A popular trend these days is to outsource collection of resumes and job applications. Instead of dealing directly with each person, the prospective applicants are required to submit a resume and cover letter to a third party website (a “resume wall”) and then hope and pray for a response. This is terribly inhumane. Justifications abound, but the bottom line is that you’re competing for talent. Just like a sales funnel, any step along the way that turns people off is a loss. The loss might be minimal when soliciting unskilled labor, but with high-demand, creative talent, that loss is unrealized potential.
It’s not just the large companies that do this. I’ve seen this for a 10-person startup. That’s insane. I’m a person. You’re a person. So be personable!
My “favorite” resume wall was for a company whose CTO publicly ranted about enterprise software vendors doing the exact same thing to him when he wanted to buy a product. I guess he didn’t see the connection.
“WANTED: Node.js V8 Korean-language backend optimization engineer.”
I’ll confess, I made that one up. But I’ve seen similar job titles advertised.
Sometimes you need a very specific skill set NOW to solve a serious problem. That is totally normal. What isn’t normal is pretending that you need that level of specificity in every position, all of the time. What happens when your company changes the technology it uses? Am I fired? Or what if other specialists quit? Can I pitch in and help, or should I just mind my own business?
You should be hiring people, not units of labor. American science fiction writer Robert Heinlein said, “Specialization is for insects.” I don’t go quite so far as Heinlein on this, but there is a point of diminishing returns on specialization.
I can’t tell you how many “Ruby on Rails developer” positions I’ve seen. That is not a job description nor is it a useful job title. It says exactly zero about what the actual job is. What sorts of problems are you looking to solve? Is there more programming going on than just tinkering with one particular technology? Would my experience with other technologies be of any use? Would my cloud programming background be of any use? My interest in certain areas of math and computer science? Are you going to make me turn Photoshop files into websites all day, or is it a real programming job? I’m left with questions and no motivation to seek answers.
Assuming I am only the last thing I was
I’ve been a programmer for 16 years. I am an experienced developer with a range of skills, both technical and non-technical. I have written code in the trenches, led teams, and managed. I am not a “Rails developer” or a “.Net engineer” just because those were the last positions I held or the last technologies I worked with.
I like to solve problems with software. And sometimes hardware. And sometimes by just sitting and thinking and chatting with other smart people in the company. I’m a person. My name is Matt. Nice to meet you.
Asking for “rock stars” or variants thereof
Several years ago, it was popular to advertise for “rock star” programmers. I suspect— but can’t prove—that this sort of appeal to ego draws in the problem children. I know from personal experience and conversation with other developers that this chases away the modest and the experienced. It also completely excludes folks who suffer from Impostor Syndrome, who might otherwise make loyal and productive employees for many years to come.
The cookie-cutter technical interview
It is absolutely critical to give a technical candidate a serious technical interview. Unfortunately, the norms that have evolved for these interviews are troubling. It’s 2013. Did you know that computers are almost never used in the assessment of computer programmers? Our industry has followed the same standard interview process since the time of punch cards and room-sized computers with blinking lights. Typically candidates are asked to write code longhand on paper or a whiteboard, with no computer in sight. Worse, they are often asked to solve the same cliché programming problems that they’ve been asked in other interviews.
The number one thing you can do to improve hiring is to actually, genuinely, be an interesting place to work. I’m not talking about ping pong tables and beer in the fridge (both of which are nice). I’m talking about the kind of things your company does. Solve interesting, challenging problems. Or solve boring problems for famous people. Find some way to make it interesting. And it absolutely does not have to be “fun.” If what you do is interesting enough, smart people will find a way for it to be fun.
Genuine passion is contagious and powerful. Fake passion is dangerous: At best, you look like an ass. At worst you attract gullible idiots to work for you. If you don’t have genuine passion for where you work and you do the hiring, you’re committing some kind of moral fraud.
Please acknowledge me when I show some interest in your company.
Here’s an example: I submitted a resume to a resume wall a few years back. I was well-qualified for the position and I wrote a custom cover letter as requested. I heard nothing back. At all. I was sad. Fast forward to six months later: I got an email out of the blue from the company asking if I was still interested. Mental whiplash. By that point, no, I wasn’t interested in the company anymore. I had hurt feelings. Yes, it’s irrational. But it still happens. Alienating people isn’t cool.
Get to know programmers
Here’s an exercise for hiring managers: Name all of the programmers you know personally. Don’t count the programmers you already work with! How many names did you come up with?
The real meat and potatoes of hiring people is getting out into the community and meeting people. Genuine networking is critical. Unfortunately the term “networking” seems to have become synonymous with dull mixers and luncheons where people generally fail to establish meaningful connections with other people. Just like a single person dating, you’ve got to get out and get to know people. And in that same way it’s not about meeting Mr./Ms. Right, it’s more about meeting people who may eventually connect you to Mr./Ms. Right down the road.
If you’re serious about building a quality technical team, you’re in it for the long term. Act like it. Get out of the office and make connections.
Let me program during my programming interview
The tools for a technical interview are simple: An intelligent interviewer and a computer. Everything else (whiteboard, conference room) is optional. The best interview experience I ever had involved writing code for a half hour with every single person on the team. It made for a long interview but it answered questions that the employer and I wouldn’t have known to ask otherwise.