How To Hire Me (or any other programmer for that matter)
Tech companies seem to be having trouble finding good technical talent. Maybe I can help. For you, the hiring person who is having trouble finding programming talent, I’ve created this brief hiring guide. It is based on my experience over the years both as a prospective employee and as a person doing the hiring.
PLEASE STOP WITH
Recruiters Who Can’t or Won’t Recruit
I probably ignore 95% of recruiter emails. 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.
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 their website. Not even a link, just a suggestion to “go to our website and look at our jobs page”.
Seriously?
If I’ve asked you a question, that is something salespeople call a BUYING SIGNAL. As in, I’m buying into the idea that you might be a cool company to work for. On top of that, since I was approached by this recruiter (not the other way around), I’m already (again in sales terms) a QUALIFIED LEAD. This particular recruiter clearly gets no coffee. Why? Say it with me: COFFEE IS FOR CLOSERS.
Don’t even get me started with the outside recruiters who just spam people.
Resume Walls
I am expected to meekly submit my resume into The Wall and hope and pray for a response. Could you be less humane? I might expect this from some megacorp, but I’ve seen this for a 10-person startup. That’s insane. I’m a person. You’re a person. So be personable! Interact!
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.
Micro Positions
“Node.js V8 Korean-language backend optimization engineer”
Ok, I made that one up. But I’ve seen close cousins.
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 stops using Javascript on the backend? Am I fired? Or what if Karen quits? Can I pitch in and help, or should I just mind my own goddamned business?
You should be hiring people, not units of labor. I don’t go quite so far as Heinlein on this, but there is a point of diminishing returns on specialization.
Under-Described Positions
I can’t tell you how many “Ruby on Rails developer” positions I’ve seen. This 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 in the Rails stack? Would my C/C++ background be of any use? Would my distributed programming background be of any use? My interest in graphs and set theory? Are you going to make me cut up PSDs? 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 am not a “Rails dev” or a “.Net engineer” just because those were the last positions I held.
I like to solve problems with software. And sometimes hardware. And sometimes by just sitting and thinking and chatting. I’m a person. My name is Matt. Nice to meet you.
Asking For “Rock Stars” or Variants Thereof
I honestly thought this one was dead. But I just saw a rockstar-style posting a few minutes ago.
I can’t say for sure if this draws in the douchebags or not, but I know from personal experience and conversation with other devs that this chases away the modest and those experienced enough to know they don’t want to work with alpha-brogrammers. 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
You know what I’m talking about. There are many variants, but they all boil down to something along the lines of:
- Ask people to write code on paper or a whiteboard
- Ask someone to code a fibonacci function
- Ask any question that starts with the phrase “tell me about a time when”.
PLEASE DO
Be Interesting
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 and/or incredibly attractive 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.
Care
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. You might want to see to that.
Acknowledge Applicants
Acknowledge me when I show some interest in your company.
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. But Lo! 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
Pop quiz for hiring managers: Name all of the programmers you know personally. Don’t count the ones 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. This is a graph traversal problem; they call it “networking” for a reason. 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.
You don’t have to be a social wizard to tackle this problem. I once had this boss, Andrew. The first time Andrew would meet anyone – almost anyone at all, really – he’d ask them “Do you code?”. It was awkward but fairly effective. 9 times out of 10 the answer was “no”, but it opened up a conversation. The network effect kicked in. People knew that we were hiring programmers. We got some referrals. Did it solve everything? No. But it helped.
Just like a single person dating, you’ve got to get out and meet 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 team, you’re in it for the long term. Act like it.
Let Me Code, Dammit
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 pairing 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.
Stuck? Email Me
Are you having problems hiring programmers for your company and don’t know why? Send me a note and tell me about it. Seriously. I’m matt at-this-here-domain. I might not have the answer but it’s worth a shot. If you can be honest with yourself and with me, I’ll be honest (blunt) with you.
Further Reading
How Stripe built one of Silicon Valley’s best engineering teams
Why we don’t hire programmers based on puzzles, API quizzes, math riddles, or other parlor tricks