How To Recruit A Software Engineer
The Very Basics of Being Aggressive And Awesome
How To Recruit A Software Engineer
If you wish to recruit software engineers, here are some tips. These are generic tips as to how you should go about recruiting ANY software engineer — it is oriented towards strong and experienced ones, and obviously people differ, but most of the tips will apply to anyone. They are also generic “be an awesome employer” tips, as recruitment/retention are strongly intertwined.
TL;DR:
1. Realize you are competing with other companies
2. Care
3. Be personal
4. Have Engineers Contact Engineers
5. Impress
6. Swallow Your Pride
7. Be Selling At All Times — Even When You Lose
If this text sounds harsh at times, remember it is for your own good as a recruiter/engineering manager.
Realize You Are Competing With Other Companies
Realize you are competing and that it’s an employee’s market. This means the rules of the game are different than usual — you want A players, and that means you’ll have to be recruiting them aggressively. Your candidates will most likely already be employed (why wouldn’t they be?), so you will either need to convince them to leave their current company to come work for you, or you will have to catch them at a narrow window in time, before someone else does. Either way — you’ll have to be aggressive.
If you think someone is a good candidate, other companies will too. And as long as the tech sector remains so strong, it will be an employees’ market. This is not a symmetrical affair — YOU are pursuing THEM, while competing with other companies’ offers. Realize this ASAP; your attitude and actions should be adjusted accordingly.
Care
Show empathy. Interest. Positive emotional intelligence. If I have to deal with automated forms or specific resume formats I’ll just give up and move on. You should pursue your favorite candidates with passion — contact them immediately upon identifying the potential, and follow-through ASAP. Give them humans to talk to, including personal phone numbers. Tell them to contact you any time, about any thing. Live up to that promise.
Be Personal
Why are you contacting me of all people? Am I just a warm body that knows how to program? (If the answer is ‘yes’ you’re doing it wrong, but in any case you should make feel otherwise). Let me know you’ve researched me, that you see something special in me, that you’re impressed by my whatever. (If you’re not impressed by anything, why are you contacting me in the first place?)
E.g: “Hey Sella, I saw your Linked-In profile and was very impressed by your academic achievements at the Hebrew University. Magna cum laude! That’s awesome. I am also impressed by your GitHub projects, like Daat and JabJS. What were your impressions with the MEAN stack? I also got glowing recommendations about you from Eyal Arubas…”
On a parallel note, what role are you contacting me for? If it’s a specific role, say so. If there a couple, mention both of them. As usual, be detailed in describing why I would be a good fit for specifically that role. It’s easier for people to reason about a specific possibility, but you think there are a variety of possibilities you can explicitly state so.
“…We are expanding our back-end team and we think you’d be a great fit for our banking team. Our code is mostly in Python, and we are now moving from a monolothic app to a microservices architecture. [optional:] But we’d love to get you on-board in general.”
If you manage to bring them in for an interview, take them out for lunch. Give them swag. Introduce them to the team. Show them you care about them personally and about recruiting in general.
Have Engineers Contact Engineers
Ideally, you should have engineers contacting other engineers — this shows respect for the candidate, as well as enabling a way to impress him (see below). I won’t bother asking an HR recruiter if a company uses microservices or believes in SPAs or even if they do pair-programming, because he won’t know the answer. That’s a point of friction you should just eliminate.
Unfortunately it is likely that most of your current engineers (the ones doing the contacting) might often be adverse to cold-calling people. They don’t want to be the ones to deal with rejection or with the grunt work (that’s what HR is for, right?). This issue can be solved in various creative ways, but I would posit that any engineering manager must deal with this. If you’re going to invite the candidate in for an interview, you might as well be the one contacting him by mail.
Additionally, most employee engineers are just not very good at this. This is a real problem, but it is not an irrelevant symptom — textual communication about the job is a super-important part of everyday work. If I think you are awesome over email/IM while you recruit me, I will probably think you are awesome when we work together. As a corollary, if you can’t adequately and passionately describe your tech stack while recruiting me, why should I expect it to be better when we work together?
Show me your engineers and team are awesome at interpersonal communication — that’s worth a ton.
Impress
Make no mistake, this is a competition. Whatever selling points you have, flaunt them. Don’t hold anything back and remember YOU are the one playing offense and YOU need to convince your candidate, every step of the way. This includes emails as well as any “we’re hiring”-related posts.
As in everything else, *talk is cheap*. Don’t tell me your team is awesome, the tech stack is cutting-edge, you’re “agile”, the challenges are fun and the compensation is competitive. Show, don’t tell.
Some examples, in no specific order (remember, different engineers care about different things).
Show me that…
…your team is awesome: Show me examples of your team members, talks they have given, or mutual friends we might have that would recommend them as strong & fun co-workers. Do you have an awesome engineering blog? Why not? What is your turnover rate? Why have previous employees left?
…your tech stack cutting-edge: What is it, exactly? Be as detailed as possible, this is your chance to impress me in many ways — architecture, language-choice, knowledge, and communication ability.
…the challenges are fun: give examples. Write them well. Other than the technical stack, is your problem-space interesting?
…you have cool methodologies. Do you practice ‘agile’ development or do you just say that buzzword? How often do you release code? Do you unit-test? Do you pair program? Do you perform peer reviews?
…the compensation is competitive. How much money/equity will you be offering me? This is a touchy subject (legally, too), but you will have to work around it. Do you have any non-monetary perks? Like what? Some possibilities might include [unpaid] vacation time, personal projects, investing in developers’ personal growth, free food, holiday gifts, open allocation etc. Back each of these up with real-life examples; bonus points for getting me in touch with current developers that will attest to their awesomeness.
…developers are empowered. Do the developers have any say in the product? What say, exactly? Do they have time for personal projects? How much time? Is telecommuting accepted? Is there a chance for growth in the company? Do you organize hackathons? Meetups?
…the problem space is interesting. What exactly does your product do? Be specific. Does is it have good karma? Who does it help, other than the shareholders? Will I be proud to tell my Mom what I’m working on?
…you maintain a work-life balance for your employees. Will I be woken up often at night? Will I be asked to work hard to meet deadlines? The first one should only come with significant authority, the second is a signal of poor management.
…your managers are professionals. What is the management structure? Are team leaders promoted from within? I expect whoever manages me to bring to the table some mixture of significant technical skill and professional/superb management techniques (technical, methodological and interpersonal). Do middle managers still write code themselves? What schools of thought regarding management do they subscribe to? Do they have any favorite literature regarding how to manage? Or are they just winging it?
…you have a culture of transparency. Do your employees know the current hiring status, for example? Will they acknowledge your presence there as a candidate? Are they part of the hiring process? If they’re not, I guess that means I won’t be part of the decision-making process either, if I work there. The first step towards transparency is the hiring process — what exactly are the steps? What are you looking for?
Remember, your candidate is being approached by other companies at the same time. This includes the big players like FB, Google, Microsoft, Apple and Amazon, but also smaller companies offering a bigger role or any other reason to join them. Convincing a candidate you are awesome may be difficult, but it is crucial. This is yet another reason why your star players — both in terms of tech and in terms of charisma — must be part of your recruitment process.
English is very important. I see no way around this: every contact you have with a prospective candidate, your English should be impeccable. (Note to native English speakers — English is virtually ALWAYS used in textual technical communication, including between native speakers of other languages) Your best candidates are especially likely to have good English (as you would assume they read all the time) and if they see you have spelling/grammar errors, it sends a horrible message.
The Size of the Fight in The Dog
Remember that having less money and prestige than other companies isn’t that big of an issue. Many A-players are not in it for the money alone, and are more than willing to comromise on the cash for other things: equity, role, team, perks, challenges, responsibility, problem space, karma. You obviously have to play with the cards you’ve been dealt; this article is simply about maximizing your existing hand. It is worth noting that humans are famously non-rational — stated plainly, you can score above your level (land engineers that could have snagged a ‘better’ deal for themselves) if you play aggressively and play it right. (If this sounds a bit creepy, note that any interpersonal interaction is this way. Ideally a win-win, but maximizing YOUR win, not theirs — they can always theoretically score a bigger win for themselves than you.)
Swallow your pride
Remember you must play offense and be as active as possible. This hurts sometimes (rejection sucks), but in the long run it is much better to run offense than defense. (in fact, under certain assumptions, that has been mathematically proven). So put on your big-boy pants. Unless you’re drowning in great candidates, don’t play hard-to-get. Each candidate you identify you are interested in bringing to the next level (interview, test, sign), you should be pursuing with all your might. Swallow your pride over the ones that will go elsewhere anyway. Fuck them. We’re playing to win, not to impress others.
You are always selling your company
Be selling even if you lose
Even if a recruitment does not fall through, you can still benefit from it. Strong candidates have strong friends, and they’ll pass on whatever experience they had. If they are impressed, they’ll tell their friends. If they were treated badly, they’ll also tell their friends. Word travels fast. This means that whatever you decide regarding a candidate, you want him/her to leave wanting to work for you even more than when you started the process. They should have stars in their eyes. The stronger a candidate is, the more weight her opinion will carry with her mates, the more important this is. That means candidates who rejected you might very well be the ones to bring their equally-talented friends the next round over — so treat them with as much respect as you can. Hey, they might even come work for you eventually.
Sell at all times
Every second counts. Every email, every phone conversation, every online form, every interview. You never know what might tip the scales in your favor as an employer and you should be fighting on all fronts. When a candidate is considering you as an employer, whoever he is talking to IS the face of the company as far as he’s concerned. Do NOT have anyone but your BEST people talking to him AT ALL. Make him feel this is a company of superstars; that he absolutely MUST come work for you. Have your best, brightest, most charismatic people chat with him. They should discuss your company’s technical stack with him and awe with the breadth and depth of their knowledge and the sheer aptitude of the team. You cannot take the chance that he might think your team is weak or unpleasant — and if he is an A player, he will definitely be thinking about both of those.
O(1)
Doing all of the above, all the time takes some effort (which is worth it since hiring A players should be your number one object at all times), but doing most of it is just O(1). (Which is, BTW, a term you should understand if you are in the business of recruiting engineers.)
Further Reading
There are a lot of good resources on this out there. Make sure you have at least command of the very basics.
- http://www.quora.com/What-makes-a-good-engineering-culture
- http://algeri-wong.com/yishan/engineering-management-hiring.html
- http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html
Contact Me
Did you enjoy the above? Any comments? Please let me know at sella.rafaeli@gmail.com. You can read more on my blog (http://sellarafaeli.com) and you can also contact me about potential collaboration — you now have the full playbook. Good luck! ☺