Hiring Senior Engineers
or more snarkily, “How to Hire Me”
advice from the trenches
Preamble
I’ve been on both sides of the hiring process (and hey! currently for hire in the Bay area), and I’m fascinated both by how difficult it is, and how poorly we as an industry seem to do at it.
We have marketing and growth hacking geniuses squeezing out the last tenth of a percent, but when it comes to the company’s most important asset, we just flail around in the dark with a lot of misunderstood anecdotes.
Having spent a bit of time looking around and talking to founders and hiring managers, these are just a few of my thoughts on how to improve the process, and it may devolve into a bit of a rant–consider yourself warned.
Most of these posts about the hiring process end with something like “and I’m now very happy at $BIGCO”, but I’m publishing this one while I’m still in the thick of things for a couple reasons.
First, I might step on a few toes and I’d rather speak freely while the only reputation on the line is my own.
Second, of course I hope to streamline the process for myself, for anyone in a similar situation to mine who is looking for meaningful work, and for anyone currently trying to hire in this crazy market.
TL;DR
Seven points:
- Hiring is sales.
- Symmetric time investment.
- Seniority isn’t about credentials.
- Compensation and work-life balance.
- Buyers’ and sellers’ markets (don’t matter).
- Know your company.
- Fire fast to hire fast.
If you read on, I can promise strong opinions, plenty of [citation needed], and my version of humor (picture a trout crossing the Sahara).
Some of my personal prejudices and background might possibly show through, but hopefully there is enough here to be of value to anyone hiring senior technical talent in California or elsewhere.
There might be a few points worth the read for job seekers.
0. Do You Want to Hire a Senior Engineer?
Senior engineers can be cantankerous, not to mention more expensive than fresh me^W^W recent graduates.
If you’re in the market for senior engineers, make sure you understand what you’re looking for and what you’re likely to get.
Seniority means different things, but to me it means that you are comfortable leading a team; you are capable of making architectural tradeoffs, understanding the pros and cons of alternative programming languages, frameworks, platforms, source control tools, code quality approaches, development methodologies; and you have a hard-won respect for complexity and the approaches to managing complexity that can make or break a software development project.
There is no one right personality type, but seniority implies you should be comfortable interacting with people and confident in your own abilities, while knowing enough to know how much there is that you don’t know.
You should be able to have a conversation equally well on an area in which you have achieved mastery and in an area in which you are just encountering the basics for the first time.
You should earn respect through broad technical competence, mastery in at least one area, the self-awareness to know the difference and the humility to show it.
You should be comfortable taking responsibility for results, and experienced and confident enough to distrust and challenge unreasonable schedule estimates, especially your own.
Seniority is an aspiration and a direction, not a destination.
I certainly do not claim to have “arrived”.
Five years of experience with technology X does not make a senior engineer, nor is it the case that fifteen years of experience are required; we all start out at different points and move at our own pace.
If you’re still with me and this sounds like what you’re looking to hire, then read on.
1. Hiring is Sales
Hiring is a sales process.
At every point when a senior candidate interacts with your organization, she is at least subconsciously asking herself “Are you qualified to hire me?”.
Most of this article is just the natural result of understanding this fact.
If you want to hire me you need to always be selling me on your company, your team, and the role you want me to fill.
Show me that your company is serious about hiring, not just collecting resumes.
If you already know you’re serious about hiring me in particular, make sure I know that too.
2. Expect Symmetric Time Investment
So many companies fall down here, and it’s a pity because you will really miss out on the best talent if you miss this one.
Your time is valuable and my time is valuable too.
If you want me to spend an hour on your hiring process, then I expect you to make an equal investment of time.
This is really just a simple application of reciprocity or the golden rule, so it’s kind of surprising how many well-meaning companies get this one wrong.
The best way to do this is simply to meet in person, or if that’s not possible, to meet in real time over the phone or by some other miracle of modern technology.
The point is that I’m spending my precious time proving to you that I have some kind of quality that you are looking for, and you’re spending your precious time equally as part of the same sizing-up process.
When your first contact with candidates is asking them to do a homework problem on their own time, you’re failing on the symmetric time investment test.
This is a negative filter–you’re eliminating the candidates that have better opportunities, and you’re left only with the ones that lack the confidence or experience to insist on a symmetric process.
If you have an online educational challenge, as some security companies do, that’s an awesome way to generate new qualified leads for your hiring pipeline.
It’s a terrible way to filter the people who already enter your pipeline through some other channel.
The worst of all is a take-home project that “should only take an hour” but which requires installing five dependencies, making sense of your crazy duct-tape-and-string build system, and hacking through your undocumented ball-of-mud code base, just to get into a queue of a dozen other candidates who had nothing better to do with their weekends either.
If your hiring pipeline looks like this, don’t blame the poor quality of candidates coming through your door on the market.
The problem is your filter–it isn’t filtering what you think it is–and the lesson is absolutely not to double down on the up-front filtering.
Learn the lesson of symmetry.
A corollary to this is that if you want candidates to download and play with your app, read everything on your website, your engineering blog, and your “About our glorious company culture” page–I’m sure it’s great, really–then maybe you should take the time to at least read those candidates’ CVs before they walk into your office for an interview, hm?
- Interviewer, reading, “Um, it says here… you’ve um, worked with Java? At SparkyCorp? What was that like?”
Yes, it takes time to spend time on each candidate.
Consider it a “proof of stake”.
If you’re a small scrappy startup, I know exactly what kind of a time crunch you are probably feeling.
Of course, this is easier for big companies that have people and budgets dedicated to the hiring process, but everything is easier for them.
If you don’t have time to talk to candidates, you don’t have time to hire and onboard at all, so fix that first.
There’s a kind of blind spot that technical folks sometimes get into when we evaluate a range of options, such as a hiring pool, competing technologies, or backpacks.
We want to evaluate all the options, finding the very best choice, and we suffer from the terrible illusion that we are capable of purely rational decision making, leading to some very expensive decision paralysis.
You may be one of those companies that makes much of hiring only the top 1% of the top 1% of applicants.
This can be good for morale (“We are the best of the best”) but a too-selective hiring process is quite hazardous.
If you find a way to effectively measure your false-negative rate, (the no-hires that you should have hired) you may find out that half your current team wouldn’t make it through your current hiring process.
If people commonly apply to your company three or four times before getting in, your highly-selective hiring process is probably filtering on random noise more than skill or talent.
In other words, your precision and recall are both bad, the bad results are coming from a costly process, and adding more filters just makes things worse.
If your hiring process is symmetric, but highly selective and slow, now both you and your candidates are spending too much time on it.
(“If you never missed a flight, you spent too much of your life in airports.”)
If you are lucky enough to have one hundred candidates for every open position, but you only have resources to fairly evaluate ten of them before making a hire, what should you do?
A radical suggestion is to randomly choose ten from the hundred, thus saving time and staying honest, with applicants and yourself, about the role of luck in the process.
If you think you’ve eliminated the subjective, messy human elements, and you have a perfectly deterministic, rational hiring process–burn it to the ground and start over, or start flipping a coin; it can’t possibly be worse.
3. Understand the Skillset of the Senior Hire
I’m pretty good with people, I know a wee bit about software engineering, and I’ve picked up a fact or two about computer science along the way.
There’s a lot I don’t know, too, and miles and miles of tech landscape that I’ve never set foot in and likely never will.
If you want to hire me for my ability to jump into a new field, hoover up the academic literature, integrate it with what I’ve acquired over the years, put it into practice, and pass on what I’ve learned to my team, great!
Tell me what you and your team can teach me, and hire me for my interest in learning it.
Better yet, tell me where the state of the art is, and where you want to go, and let’s see if we can get there together.
On the other hand, if you find yourself composing emails like “We are really looking for someone with more ASP.Net 7.3.6x experience integrating in a Foobar 5000 web service environment on the VAX 2009, but thanks for your interest!”, then you are absolutely missing the best people.
Beyond a few legal and regulatory requirements (clearances, right to work in the country in question, etc) keyword matching has no place in any sane hiring process.
You know it, I know it, everyone knows it, but somehow there are a significant fraction of companies out there that haven’t internalized it.
Don’t be that clueless HR department that doesn’t understand which skills are transferrable and which are not.
Evaluating programmers is not easy for anyone, so don’t put non-technical HR folks in the untenable position of filtering on something that they aren’t equipped to see.
While on the subject of credentials, maybe you are hiring PhDs.
This is a credential that certainly means something: they have published at least one academic paper that was read by at least one other person, they have done independent research, and they have navigated bureaucratic mazes that would shrivel the hearts of most mortals.
However, not everyone with a research orientation goes into academia, and there are certainly people on the market (ahem) who might be capable of taking on your research problems even though they don’t have this specific credential.
4. Words on Compensation and Work-Life Balance
It’s been said before, but let’s just get this out of the way: we’re not impressed by your foosball tables and Beer Pong Thursdays.
If anything, they raise questions about work-life balance and how you maintain it.
I take care of myself fairly well in this area, but I won’t participate in death marches and the burnout culture even if your junior employees are willing.
It’s not good for you or them.
A standard 40-hour week leaves 1⁄3 time for sleep and 1⁄3 for everything else in life.
Don’t think I’m giving up either one to maintain a dysfunctional crunch culture, or hold up unrealistic estimates.
I expect the same from my team and will insist on it whenever necessary.
I just can’t let the topic of work-life balance go by without a snipe at the games industry.
(I warned you about the strong opinions, right?)
Outside of finance, there can’t be a better example of what not to do.
Hire idealistic young people who love video games, promise them fame and wealth when you release your big hit, pay way below-market rates, death-march development schedules, management by crisis…
Would it be possible for a games company to treat its people better, thereby hiring better people, and outcompete the rest of the games industry?
Haha, of course not, the games industry is a lottery anyway, and there’s a huge pool of video game addic^W fans who are willing to work for cut rates, so the way the game industry works to churn out titles and burn out young people is actually perfectly rational.
I love the smell of capitalism in the morning!
You know what, games companies, just keep doing what you’re doing.
If I happen to be around when karmic fire rains from the sky on your industry, I’ll roast marshmellows.
I’m sure you’re all wonderful people in the games industry, really.
Now that we’ve got that out of the way, let’s talk about compensation.
You’ve found the perfect candidate and you’re ready to commit.
How much should you offer?
Should you wait or offer first?
You know the market better than 99% of the applicants you’ll get, including senior applicants.
In fact the information asymmetry is even worse for more senior folks, because there are fewer of us and there’s less public information available.
So.
You can offer what you think is market rate, or above, or below.
If above, it’s extremely helpful if you indicate some of the research you did to establish the baseline market rate.
If below, it’s a good idea to acknowledge that and explain it.
The worst case is that you low-ball but don’t acknowledge or explain it.
Now several things can happen.
If it’s so low as to be not even in the ballpark, the candidate may assume you mistyped, you have no idea what the market is, or you have no runway and are desperate, or you’re practicing some kind of psy-ops games.
None of these is a good look.
If it’s low but reasonable as a starting point for negotiations, there are three outcomes, none of them optimal.
First, the candidate you spent so much time vetting gets an offer of 1.5X from your competitor and you never hear back from him again.
Second, you enter a negotiation and end up paying market anyway, just losing a little time and a little face.
Third, the worst outcome is that the candidate accepts your low offer, leaving money on the table.
A few weeks or months later, she is talking to a co-worker or a competitor and finds out how underpaid she is.
Do some research on the market, get some hard numbers, and share them with candidates and share your reasoning.
It’s not just ethical, it’s also smart.
Personally I’m not totally allergic to the concept of salary negotiation, but many engineers are, including some that merit the senior label.
It might be worth asking your candidates if they would prefer a classic salary negotiation or if they would prefer a take-it-or-leave-it offer.
On the subject of comp, I’m going to assume your equity is worth epsilon dollars, where epsilon is as close to zero as makes no difference.
If you’re a bootstrapping startup, and equity is necessarily a large part of what you can offer, try to get this out in the open as early in the hiring process as possible to save everyone time.
We each have our own appetite for risk, existing portfolio, and financial and life plans, so if you are limited in what kinds of comp you can offer, it saves time to check that alignment early in the process.
5. Buyers’ and Sellers’ Markets
Pick your metaphor for the job market:
- Zombie apocalypse of unqualified applicants
- 300 Spartans (“We’re a little short-staffed.”)
- Overfishing in the Pacific
- Hunting the elusive ninja unicorn
What’s the theme here?
I’m not sure.
It’s either a wasteland out there, or there’s tons of great talent but hiring companies can’t figure out how to tap into it.
My personal perspective is that there’s no talent shortage, but there’s a sane-hiring-policy shortage.
But ask me again when I’m hiring, and you may get a different story.
My point: there is plenty of motivated BS on both the hiring and the seeking sides, and the market is constantly changing anyway, so none of it even matters.
The only the decision that really matters is whether or not you want to hire the person you’re talking to.
If you don’t want to go back to the hiring pool, make an offer, make it early, and make it a good one.
There’s no point in wasting time or being coy, unless interviewing and not hiring is your idea of a rewarding pastime.
And if you’re out there looking for your dream job, forget everything you read on the internet (!) about what the market is doing, and just get out there and talk to people.
6. Know Your Company
Are you Google or Apple or Netflix?
If I was on the other side of the planet for the last seven years, would I have heard of you?
If so, you probably don’t need my advice on hiring, so I’m going to assume you’re one of the other 2743 equally attractive companies in the Bay area that are all competing for the same talent.
If that’s your situation, you shouldn’t expect Google’s hiring process to work for you.
Face it: candidates are willing to jump through hoops for Google that they will not jump through for you.
We all know Google is hiring, we know they have the budget for it, we know what their compensation is, and we can easily know as much as we want about their hiring process with a little digging online.
If your company isn’t a household name, none of those things are true for you, and all of them are marks against you in the cost-benefit calculation.
There are also industries that some people simply won’t work in.
It should go without saying, but if you’re proud of what your company is doing in the world, make sure you tell people about it as early in the process as possible.
If you’re in a “questionable” or handle-with-care area such as adult content, politics, defense, or anything described as “innovative” in the field of advertising, lead with that so as not to waste time.
7. Metrics, KPIs, hiring and firing
Opinions vary widely here; what follows is purely my own preferences.
I would much rather work in a hire-fast and fire-fast environment than one where people are terrified of bringing on that “one bad hire” and so paralyzed by legal concerns, confrontation avoidance, or whatever other reasons that they will never fire anyone.
Once you’ve gotten over the hurdle of actually letting people move on who aren’t a good fit (and there doesn’t need to be any blame here) then it’s a lot more rational to hire quickly as well.
If your hiring process takes weeks and involves a lot of checklists, that’s a negative indicator for me personally.
Anyone who has tried to measure and influence human behavior, ever, has learned that you get what you measure.
Which is not necessarily what you wanted.
Metrics have value for teams, but when used for individual performance evaluation they do more harm than good, except possibly in sales.
If you’ve stayed with me this far, I’m not going to wander off into the happy land of management theories, except to say that it’s probably worth being up-front about how you evaluate people in your organization (if it’s big enough for this to be formalized), both what it says on paper and how it really happens.
Politics is unavoidable but at least you can warn people going in what flavor of politics to expect.
Conclusion
There’s a way to spend less time on your hiring process and get better people in the right roles, beating the other companies who aren’t even looking in the right places.
It’s really not rocket science.
Throw away your metrics and accept the human nature of the process.
Accept the necessity of evaluating people as people rather than bags of credentials, irrelevant test results, and Y years with X tech.
Hiring is never going to be easy, but the hard, human way is actually the only rational choice.
And good luck!
Comments off, but feel free to head over to HN.
Email me at inimino@inimino.org.