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.
At a previous company we did the classic algo heavy, big O, technical questions and we suffered for it.
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.
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.
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.
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.
Sure.
There's a name for it: The Bozo Event Horizon.
https://blogs.harvard.edu/waldo/2012/07/27/the-bozo-event-ho...
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.
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.
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.
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.
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.
I mean, you could try to outbid your competitors on every hire, but that’s not a sustainable strategy.
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.
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 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
Pay engineers $500k a year or more -- they'll be kicking down the door.
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.
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.
What qualifies you to decide someone isn’t “dedicated” enough?
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.
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 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.
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?
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.
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.
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.
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.
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.