Ask HN: Why is it so hard to hire good engineers?
I was wondering if anyone in charge of hiring here has any insights on why its generally so hard to hire a good engineer. I have been brainstorming a startup focused around recruiting, and I am an engineer myself who has struggled with this in the past in small startups. Does it become easier if youre hiring for a bigger company than a small startup? Because they all have jobs. And if they are looking for a new one they can pick where they want to go because by virtue of being good engineers it's easy for them to find jobs since everyone is looking for good engineers. And if they aren't looking, why not? My best guess (aside from being happy where they are) is that the engineer interview process is broken. People don't want to go sit in a room and grilled on CS 101 level questions for 4 or 5 hours. It's stressful, it's a poor predictor of performance, and it's most likely not what they will be working on. So they avoid it. Just my opinion though. I like this Spolsky article that - as well as supporting your point - suggests that there's inevitably a lot of dross in the remaining pool of candidates. Anecdotally this chimes with my experiences from both sides of the interview table! https://www.joelonsoftware.com/2005/01/27/news-58/ The "CS 101" is bullshit, completely agree. Curious thing though, I think this is more of a thing in US, because in my many interviews I never got pestered with that over here in UK (London), although I should note that I never applied to one of the big 4. I believe most if not all of the big 4 do algo heavy interviews. So it's my opinion that people know this and then look at their success and say "That's how we need to interview too." Ignoring the fact that probably has little to do with their success. At a previous company we did the classic algo heavy, big O, technical questions and we suffered for it. From the other side of the interview table, how do you tell apart engineers from bulls__t masters, who take credit for their team's work without ever having a positive engineering contribution? Have them talk about the problems they solved at their current and previous employers, and get to some technical depth while doing so. This doesn't mean asking him to implement some CS algorithm from scratch on the board or doing a Big-O analysis. It means asking him about the specific methods and how/why they worked and going into some depth. His former employers' "company secrets" aren't a good excuse for hedging here, either: with few exceptions he should be able to use a contrived, but representative system, data, etc. to explain if he truly contributed to the solution. Trust people's honesty. Fire frauds fast. Are you sure it's not the other way around? Maybe it's hard for good engineers to find good employers and bosses. 9/10 of the technical screens I take are bunk. It boils down to what's fresh on my mind that moment; random trivia. I feel the comment I made "It's an employer's market" https://news.ycombinator.com/item?id=12667346 rings true. There's no incentive for the employer to apply more thought into holistically seeing if a can perform a role - or learn it if accommodated. Not impromptu, fanciful, hypothetical scaling scenarios and job requirements. > good engineer What does that mean? Those involved in hiring aren't skilled engineers. They lack qualification to determine what a good engineer is. It's Dunning-Kruger. A manager is reluctant to hire a star programmer that could run laps around them and upstages them. A junior programmer will use on-the-spot technical interviews to disqualify - catch them off guard - so they don't hire the person who replaces them. Merit is thrown out the door due to turf protection. So maybe a more correct word would be, an "appropriate" engineer. To suit the political dynamic and lack of incentive to make the company tech-centric. If you've been bossing people around for the last years, you haven't been doing much other than talking while we've been hacking all this time. You're generalising and stereotyping in a way that suggests you're not very experienced, so perhaps we can put down the bizarre sweeping statements to inexperience. I'm an experienced engineer and have hired many people. I specifically look for people who are better than me and I can learn from, even if I'm going to be their boss. Why would I do that? I believe if you want to get better at something, hang out with people who are already better. I get better if I work with better people and, as it happens, my bosses/shareholders are happy with that too because they end up with a more talented workforce. The trick then is making them want to come and work with me. If I'm super lucky, they have gaps that others in the team can help with, and that way they can still grow within the team. It's no different to building a band: Paul, John, George and Ringo all knew the others were better at something than they were, and knew that was the secret to them all individually stepping up and beyond their previous abilities. The fact you've worked in toxic environments with toxic people is something I am sorry to hear. I sincerely hope it gets better for you one day. However, please don't make your experiences a statement of fact about the state of technical management and leadership in general. > You're generalising and stereotyping in a way that suggests you're not very experienced, so perhaps we can put down the bizarre sweeping statements to inexperience. Dunno, his experience pretty much matches experience that I had in different parts of this industry in different roles all the way to being someone who only reports to a board of directors. It also matches the experience of lots of people that I know. It is the "mean" of all industries and even unicorns revert to the mean in time. > Why would I do that? I believe if you want to get better at something, hang out with people who are already better. I get better if I work with better people and, as it happens, my bosses/shareholders are happy with that too because they end up with a more talented workforce. That maybe true in some small companies. In fact, it probably is true for all small companies that survive. It is certainly not true in larger or large companies until those companies convert individual departments into entities judged by P&L and only P&L. > It's no different to building a band: Paul, John, George and Ringo all knew the others were better at something than they were, and knew that was the secret to them all individually stepping up and beyond their previous abilities. This is how the bands that do not make it out of a garage look like - the ones that are staffed by sad 40 year old men who think their music is awesome and they are just about to make it while working as waiters and bus boys in restaurants. Successful bands are staffed by "rock stars" - the minimum acceptable level of performance is so high these people are not even in a market. There are no managers that are not rock stars at what they do and non-rock stars are definitely not telling rock stars what to do. > However, please don't make your experiences a statement of fact about the state of technical management and leadership in general. Sure. There's a name for it: The Bozo Event Horizon. https://blogs.harvard.edu/waldo/2012/07/27/the-bozo-event-ho... > A manager is reluctant to hire a star programmer that could run laps around them and upstages them. I don't think so. I have seen something of the sort, but it was an engineer purposefully not hiring too good people. Management is a quite different skill, good programmer is not threat to manager. One of my favorite comments on HN for this subject: https://news.ycombinator.com/item?id=15108883. I agree that it's an employer's market: that comment you linked to is very good. I've seen the "reluctant" manager before (and been a direct report to one), but I've always marveled at their existence. Managers ought to not be coding. Their senior (i.e. Lead) direct reports ought to be the ones doing the architecture and design work which the manager might be involved in discussions about, but only in the role of an advisor. >9/10 of the technical screens I take are bunk. It boils down to what's fresh on my mind that moment; random trivia. Real talk. Being able to define the term singleton or explain the difference between an interface and an abstract class is not much of a metric. This is a myth. It's easy to hire good people, just offer more money. The end. Now, if your question is how to hire the best engineers on some budget, that's a different question. Regardless, the less money you offer, the less likely you'll be able to hire "good people". --- A more interesting and profitable question to have the answer to is how to make a bad engineer a good one for the least amount of money possible. Believe me, it's not as easy as you may think. The main reason is that good engineers will be quick to change their jobs when faced with enough bullshit, but the B and lower grades will be all to happy to take any bullshit as long as you pay them the good money you are paying. You can't make good engineer from bad. Good engineer is a person who is interested in what they are doing. You can't make a person genuinely interested in engineering if they are not. You can make skilled, experienced good engineer from unskilled/unexperienced good engineer. You can tell who will be a good engineer even before they start doing professional work. These will be the people who have integrity, who like to learn, have capability to solve complex abstract problems, stamina to deal with complicated problems for an extended period of time. "B and lower grades"... what? If you have some magical process to separate the "B and lower" from the supposed A, do tell. Even if you had such a process money would be the mechanism to capture and retain the best people, so yeah, money is still the solution to this problem. That's kind of the problem - no one has a magical process to quickly/easily separate good engineers from the mediocre ones, you can only filter out obvious incompetence. So simply offering lots of money is not sufficient to hire good engineers, you'll still get a mix of good and poor ones, and will need to figure out to filter them afterwards when you've had sufficient time to see what they're made of. You're right that there's no process to quickly and easily separate them, however for enough money people will endure a long and difficult process, which is the point. If you’re a company with a lousy reputation, you’ll still lose out on good people to a well-funded company with a good reputation. I mean, you could try to outbid your competitors on every hire, but that’s not a sustainable strategy. It is hard to hire good anyone because reality has a surprising amount of detail: http://johnsalvatier.org/blog/2017/reality-has-a-surprising-... and many if not most people are poorly suited to abstract symbolic manipulation work. Add to that the difficulty of the profession itself and the constellation of ancillary skills one needs (conscientiousness, the ability to interact with other people, articulateness, the ability to disagree respectfully and intelligently, etc.) and you will find it hard to hire good "x" in general. Finally, it is often hard to hire good "x" unless you are paying at or above the market wage for x. The people who have a hard time hiring are generally not paying the market wage or above it. When they do, they suddenly find it much easier to hire. A lot of people commented on the pay. Most companies don’t have the option to offer more to the good engineers in the first place. First, they don’t apply at all, and if they do, the company will probably fail to identify them as good. And if they do identity the good engineer, then they will tend to offer below market (for the good engineer), and then lose out because of pay. But it’s not because the company is necessarily cheap: it’s so rare to have a good engineer that they probably don’t even understand the value of one (or can’t make good use of them) in the first place, and therefore can’t justify the offers that the market is swinging at them. I'm going to venture a guess: I think PG's "Blub paradox" [1] applies to all kinds of skills, generally. In very open-ended (multi-dimensional) domains, a practitioner who's achieved level "B" will not generally be able to appreciate the additional value of a practitioner at a significantly higher level "N >> B" -- at least not enough to compensate them at a correspondingly higher level. In a constrained evaluation (like a few hours of interviewing) the probable outcome is that higher-level practitioner will be considered slightly better, with a lot of strange stuff thrown in, of unclear value; after all engineering is a very open-ended domain (unlike athletics for example, where just by watching for a few minutes you can say someone is much much better). Since engineering skill is so multi-dimensional, one key to hiring well is understanding which characteristics are super important for the specific role, will therefore be compensated appropriately. Looking for generic "good engineers" will probably be a waste of time, or very hard to accomplish. Correspondingly, companies which can compensate well to acquire people with specific skills will probably lure away engineers from other employers who value them as just amorphous "good engineers". To be able to hire good engineers, the hiring process needs, at the very least: 1. Good engineers as part of the selection team, so that they can select good engineers.
2. People who understand the (additional) value brought by good/great engineers, so that they can make the decision to compensate accordingly. PS: All this assuming that the business model is functional (i.e. the business can afford to pay a good engineer's market rate) and the work being done actually requires the additional skills of a high-quality engineer. -- [1]: PG's article on the Blub paradox -- http://www.paulgraham.com/avg.html You mean why is it hard to hire engineers at "ok-ish" salaries? Life is (and gets) expensive. Pay engineers $500k a year or more -- they'll be kicking down the door. Why would any good engineer join you as an employee if you literally have nothing besides a "brainstorm?" Do you have money to pay salary? Sounds like you're looking for a co-founder, not an employee. I think he means he wants to create a recruiting startup focusing on this problem, which seems like it would be yet another company built around increasing the recruiting funnel. I don't believe it's possible to solve the problem en masse; the unwelcome answer is that it requires changing the culture. > I have been brainstorming a startup focused around recruiting I think the difficulty around finding good engineers is because they hide from the traditional recruiting markets, as recruiting is typically a negative experience for the developers involved. Good engineers don't need recruiters, and likely have a network that is far more valuable when they need a job. > I am an engineer myself who has struggled with this in the past in small startups I assume you mean that it's hard to find a good engineer at "small startup" rates? Offer 1.25x market, and you'll find good engineers. As a person regularly in charge of hiring engineers and being engineer myself I have some observations. In my opinion this comes down to the fact, that there is only a limited number of people genuinely interested in engineering but unsatiable demand for skilled engineers. As in any other field requiring dedication to master, only genuinely interested will ever become highly skilled. There is only limited number of these people. There may be many "engineers", but they are not really dedicated to their field. The demand creates an opportunity for people who aren't really skilled and aren't really dedicated but who would like to profit from high wages in the field. These people may be interested in other fields (maybe they genuinely love cinema or are dedicated parents) but the only reason they do their work is because they have to provide for them or their families and they find engineering the better choice than alternatives that would probably pay less. It is my observation that only genuinely interested people actually produce almost all of the results of any engineering organization. Now, if you are an engineer and you love what you do where will you want to work? Will you want to work for large company that has probably a lot of interesting problems to solve and experience to gain or will you want to work for unknown company for roughly the same money? The issue is that all good engineers already have jobs and due to demand they never stay long on the market. To hire a good engineer you not only have to find a way to distinguish the genuinely interested, you also have to figure out a way to change their mind as to their current place of employment. If you are a company that has only mundane problems and you don't want to pay extraordinary rates then you really are out of luck. The best advice I can have for companies who struggle to find engineers in a field is to try and allow fully remote work. That is if the field allows this. Get your systems and company environment ready for fully remote work. You will immediately benefit for being able to choose from people all over the world and not just local to your office. That is, provided you already have the rest of your hiring process in top shape. > There may be many "engineers", but they are not really dedicated to their field. What qualifies you to decide someone isn’t “dedicated” enough? Results are all that matters. All the top devs I know have had to put the hours in. Same as all the top lawyers and all the top engineers. If you can be in the top 5-10% of your field while never working more than a 40 hour week and no side projects or out of hours study then more power to you. But that's rare. When I was, arguably, in the top 5% I was working 45-50 hours a week at a great job and doing 2 hours a day self study on top. I have reservations to take my wife out on Valentines Day. Should I instead divorce her so I can spend more time balancing binary trees? Would that get me hired, sir? > Should I instead divorce her so I can spend more time balancing binary trees? It takes a lot of sacrifice to make it to the top. Should I be allowed to study while you enjoy your Valentines Day? Then I might just get ahead of you. Luckily for us in tech you can make good money without being in the top 5-10%. People want to hire great "engineers" by asking them to write stupid functions on a whiteboard 4 hours in a row. That's after 2 phone interviews of 45 minutes each asking the exact same stupid questions. Are you guys looking for CS students or engineers? Three interrelated reasons: 1) Companies have no interest in investing in job skill growth Which leads to 2) Companies have devalued the role of engineering management Which leads to 3) The tech interview as it exists today is fundamentally broken I think a big part of the problem is insufficient agency on both sides of the equation. I was talking to a potential client today and he told me that he'd been considering hiring an engineer with a strong "official" background (Cisco, etc), who had billed himself at $100/hr. "I don't think I can afford that," my friend said. The next day the engineer messaged him saying he'd cut his rate to $50/hr. In other words: No one has any idea what they're doing. It's still very much the Wild West. The in-demand currency, I've concluded, is security. If you're funded to the point of not worrying about payroll: engineers will flock to you. If you're battle-tested in scaling something huge: terrified founders will follow you around. The critical skill, IMO, is finding entities who could be great, with your help. One of FAANG's strengths is that they pay their devs so well that they can stop worrying about money, and feel safe enough to get absorbed in whatever problem is on their plate. If neither the engineer in question knows if his service is worth $50 or $100 dollars an hour nor the client (i.e. the employeer) has any idea of if the service might be worth that price how can we expect the market to settle for a a price both parties can agree on? The underlying problem is that the value of software development is hard to quantify and that professionals in that area often even try to keep it that way. Why is engineering output commonly measured in time wasted instead of value created? Well, it's funny, after writing that comment, I'm not really sure I still regard the situation as a "problem." For the distributed systems guru with a proven track record, the world is his oyster. What problem? PG's advice that basically reduces to "fundraising sucks" rings true to me, but I suspect that someone really good at it would also find a lot of opportunities falling into their lap. I guess my general train of thought is: most engineers treat the business side as consisting solely of downside---they want to "get fucked as little as possible" and then seek their upside in engineering. But there's opportunity there for those who look for it. Have had experience interviewing, and exploring similar space. My beliefs that I'm in the process of validating further: -> Poor resume filtering (based on keywords and proxy credentials) reduces the size of the candidate pool - biased to those that have worked at brand name institution, or went to brand name school, which leaves out many talented folks. -> Technical interviews are low accuracy predictors of competence, which means you have to up-weight previous experience & credentials to reduce risk of bad hire. If you do choose to open up doors to interview candidates from non-traditional backgrounds, due to the greater variance in competence, you have to spend more time interviewing before you make a hire, driving up the costs. -> Companies are biased towards cheaper, low-risk interviewing. They want to get the talent to meet the business needs, as long as they can do the job and fit the culture ==> paying more to get the talent that they know has greater chance to deliver is totally worth it. A bigger company has the advantage of having more data about their hiring process, which could lead to more systematic experimentation to improve hiring. They also have a brand that would attract more people - bigger company often correlates with stability, and market rate pay, which are also drawing factors. They also have less risk --> a bad hire, that can be identified relatively quickly and fired, hurts a bigger company less than smaller ones, and they have more money to throw around. Hiring at startups is tough: Your low-risk talent pool has other, great from a financial perspective, opportunities. Your higher risk talent pool is expensive to validate competence for because industry standard approaches are low-accuracy signals. Fix interview process to give a higher signal, which allows you to reduce weight on credentials and experience, which allows you to increase size of candidate pool (because you've reduced the risk and cost to validate). There's a lot of talent in the world that doesn't fall into the low-risk bucket that everyone is competing for. This is a broad question and really depends on the context and environment. Outside of major tech hubs the answer usually boils down to "insufficient supply of any quality above poor". In the major tech hubs it usually boils down to the glut of CS graduates who think they know everything or that they are smarter than everybody else perpetuating the CS hazing ritual that is the modern interview process. The bar is set too high using a bad method of measuring skill: the bad definition of "good" leads to an artificial scarcity of "good" engineers. Good engineers aren't going to tolerate that crap, and will be able to get positions that outside of the typical hiring process. Are you sure the question is not "Why is it so hard to hire good engineers if I do not want to pay them good money?" Thinking like an engineer: to hire good engineers, you need A) good engineers to apply for the position, and B) to tell which of your applicants are the good engineers. Those two conditions are necessary and sufficient. As other commenters have noted, A boils down to “offer lots of money.” Some really interesting fields may be able to offer less out of “cool factor,” but odds are you’re not hiring for one of those fields- all your potential hires who claim to think CRUD apps are fun and intellectually stimulating are just lying. ....So A is simple, if you’re honest with yourself and bite the financial bullet. B is a problem that is apparently beyond present-say technology, and quite possibly not possible to achieve at all. There are code-testing sites that go beyond the standard CS interview, but how can a several-hour exam test someone’s ability to manage a codebase over months or years? In particular your company’s codebase, which will have many important idiosyncrasies and be a very different environment than any project the hire has worked on in the past. ...We’ll likely have flying cars before we figure out a halfway decent solution for B. Q: How do you know you're not paying market rate (or enough)? A: Good Engineers are not finding you through their network -------------- Other than that, you need to find good engineers -before they are proven - believe in them and ask for their commitment for let's say 3 years. What is "good engineer"? How can a company tell if someone is a "good engineer"? These are hard questions. And I think you gotta answer them first if you want an answer to your original question. not paying enough or not vetting well The problem is you're trying to hire engineers to do business analysis, product management, support and quality assurance. The problem is your lack of engineering culture and process. Because nobody wants to train good engineers. It’s not like the people you’re interviewing set out to be bad engineers. It’s just that people like you won’t hire them unless they’re already perfect.