The U.S. labor market for top-shelf software engineers is currently en fuego, which I think is Spanish for “pretty tight.” This has made hiring them a torturous exercise for some companies.

Some anecdotes:

  • In Austin, Texas, the best engineers I know – the ones I would personally hire with no hesitation – are making oodles. $140,000/year minimum. I know several making over $160,000, and a few making a lot more. This is base salary, before bonuses and such. And unlike in San Francisco, one can buy a nice house here with that kind of money.
  • I don’t know any software engineers looking for work. Zero. To put that in perspective, I’m on a friendly basis with dozens of them and haven’t heard of one being involuntarily out of work for more than 2 weeks in the past several years. If you can code and have a slightly clean ironic T-shirt, you have a job.
  • I recently heard of a local company lobbing cease-and-desist letters at another company due to a manager being a bit overzealous in hiring away ex-coworkers. Whether there’s any legal merit in this particular case or not, it’s something that you don’t often see in a market flush with quality job seekers.

No wonder you’re having a hard time hiring senior engineers for $120K base and a “generous” ISO grant, right? “Okay, smart guy,” you’re saying, “then how do I hire software engineers?”

Here’s what I’ve been advising companies to do (and not do) lately.

Don’t hire from a stack of resumes

Exceptional engineers – the kind of people you want running your organization on the ground floor – have deep networks of former co-workers who all want to work with them again. When a person like this wants a new job, he doesn’t go to a recruiter. Instead, he goes to a friend.The window of opportunity is about one week starting from “Ugh, my manager is acting like an ass today… I wonder what John thinks of his new job?”

As a result, if you’re looking through a stack of recruiter-provided resumes for a senior engineer, you’ve already selected into a pool of mediocrity. The good people are probably not in that stack, and if they are, it’s going to be tough to find them. Your odds of getting a high quality engineer in this way are incredibly poor.

The only case for adopting the recruiter path is if you’re a larger company with an established engineering culture (and supporting HR team) that can weed through candidates and find diamonds in the rough. If that’s you, then put on your galoshes and slog through a truckload of candidates, cross your fingers, and know that you’re going to turn over 50% of these hires soon enough. And if you aren’t trashing 95% of resumes and 80% of first-round candidates, you’re doing it wrong.

If you’re a smaller company or don’t have a strong engineering organization in place to help with this process, don’t solicit resumes for your senior hires. Instead, seek help from people who know your market. Ask them to introduce you to senior engineers. Then follow the next bit of advice.

(Update 2015-08-24: I was discussing this with a friend over lunch today and realized that my messaging here needs a small tweak. If you have a really good recruiter searching on your behalf, this bit of advice doesn’t apply – but get a solid referral from someone who should know the difference between “awesome recruiter” and “average recruiter.” An awesome one will put only a select handful of very good people in front of you. If you get 10 resumes for a position in rapid-fire succession, or if your phone screens tend to weed candidates out immediately, chances are that you don’t have an awesome recruiter.)

Work your network

Once you have a few respected contacts inside the engineering scene, work ’em.

This is easy to do, and – BONUS! – it’s fun. When you meet a new engineer, take her to lunch for a no-pressure discussion. Don’t talk much about your company except in a general sense. Instead, ask her lots of questions:

  • “What kind of people should I be looking for?”
  • “Who are the best engineers you’ve worked with?”
  • “What’s important to you when you’re looking for a job?”
  • “Who else I should talk to? Will you introduce me?”

There are two outcomes from this lunch. First, if you’ve presented yourself well and are genuinely interested in the answers you get, you might end up with the engineer asking if you’re hiring, either for herself or someone she knows who’s looking. This is the most obvious desired outcome.

Second, irrespective of any immediate payoff, you’ve earned an aide for life. Engineers are like other humans, who love being flattered with requests for advice – and are frequently marginalized due to their usual introversion, which makes the effect even more powerful. Once someone helps you with something small, she wants to help more. You can be almost assured of getting new engineering contacts any time you ask, which you can then work in the same way.

Once you’ve made enough contacts and bought enough lunches, you will definitely experience the first outcome (“Are you hiring right now?”) at least a few times. With a little patience, and sooner than you’d believe, you’ll have a hire.

Hire one superstar and grow organically

If you need one great person now, can afford to pay a lot for that person, and know you’re going to need a larger team soon, then you can adopt a long-tail strategy of organic recruiting. This can be very cost-effective in the long run if it fits your needs and timeline.

To do this, you’ll need to hire one very experienced, highly respected senior engineer with deep connections, and then let the team build itself gradually through referrals. You’ll probably have to poach this person and might pay dearly for it, but the costs are more than offset by no/fewer recruiting finder fees and a much higher hit rate on good candidates.

As mentioned, however, you probably can’t pick this “seed” engineer out of a stack of resumes. Get in touch with confidantes in your city who know the tech scene and can direct you, then do that networking thing.

Differentiate your company in meaningful ways

Go to any “cool/hip” company’s career page and you’ll likely see at least a handful of the following perks listed as incentives to sign over your life for the next few years:

  • Open floor plan
  • Nap rooms
  • Exercise rooms
  • Ping-pong and foosball tables
  • Foam projectile weapons
  • Free beer

Sound like college? That’s no coincidence. These perks are meant to attract young, frequently urban workers seeking to replicate the lifestyles of the hackers and brogrammers as portrayed in various media.

But they’re mostly unappealing to the best senior engineers. Working at a company 8 hours (or 10 hours, or 12 hours) per day is not made much better by the presence of a keg every Friday or the incessant clack-clack-clack of a plastic man kicking a plastic ball in the room next door.

If you want to attract and retain the best people, offer more meaningful incentives that target them. Things like regular telecommuting, paid sabbaticals (think four weeks of PTO per year, not two), and much larger ISO grants. Some of these things will cost you more, but find solace in the idea that they’ll be commonplace within a few years. Be ahead of the curve, bro.

(Update 2015-08-25: Recently discussing this with a friend, she referred me to a blog post by Ben Dyer of Austin tech fame in which he touches on the need to differentiate beyond free beer and foosball to attract and retain engineers, among other things related to your business’s culture. Give it a read.)

Don’t hire juniors in place of seniors

The growing demand for engineers is causing a massive influx of new coders into the job market. “Code academies” and “web dev boot camps” are popping up left and right, marketing themselves as a quick way to gain entry to the lucrative salaries on offer. And universities are seeing explosions in computer science degree seekers.

There will be a glut of junior engineers on the market for the next 5 to 7 years. This will make it so, so tempting to hire a couple of juniors in place of a senior. Cheap, readily available – what’s wrong with taking just one hit?

Back away from that pipe, friend. When you hire someone with little real-world engineering experience, your expected value is directly proportional to the number of senior engineers you already have on staff to oversee the newbie. If you don’t want to destroy your team’s productivity, your ratio of seniors to juniors had had better be at least 1:1, preferably 2:1. You need to trust me on this one.

I have nothing against junior engineers. They’re pliable, energetic, and eager to please. Many have opposable thumbs. But left to their own devices, they usually don’t write great software.

Spend significantly more on each engineer

This will cost you more initially but will eventually even out, and it’s the surest path to building a great team quickly.

Essentially, the more you pay, the higher caliber of engineers you’ll attract, which leads to faster feature development and fewer bugs. This reduces your need for each incremental engineer. 1 very good person will do the work of at least 1.5 moderately good people, so the payoff point is around the time you would have needed to hire your third engineer. Imagine hiring 2 engineers at $160,000-180,000/year each versus 3 engineers at $120,000-130,000/year each.

Even if there’s not exact monetary equivalence between the two options, having better engineers will pay off in less obvious ways down the road: the fruits of well-engineered products will be borne and recruiting costs will stay low as the word spreads.

Use a development shop

Need to build a product quickly and don’t have enough people? Contract the work to someone else, perhaps simultaneous with your recruiting efforts.

If you hire a good firm, they (should) have done all of the work of finding top-notch engineers and can make building your product a turnkey affair.

But, as with all things, be very careful which firm you choose (and especially beware the offshore trap). Software agencies aren’t special repositories of engineering excellence – it’s almost always the case that these firms have the same hiring problems as every other company. In fact, their engineers are typically below average. Get to know your market, get a referral from a trusted source, and ask hard questions about how the firm has attracted and retained their own senior engineers.

On the other hand, you can try to find an independent contractor (or several), which can save you 10-30% over using a firm. But you’ll have all of the same costs and pitfalls of recruiting FTE’s. I wouldn’t recommend this option unless you know an independent contractor well or get a strong recommendation for one.

Ping me

If you’re trying to hire and want to discuss any of these options, leave a comment or shoot me an email.