The problem is outside the big companies everyone knows, it’s hard to get documentation on a companies interview process.
Glassdoor exists, but often is little help, as there’s a complete lack of information about the actual process, it seems too included only people who didn’t get an offer complaining about something that may or may not apply to you, etc.
Even the sites made specifically for aggregating those sorts of companies often fail. I’ve looked at them and seen stuff like “X company, but only very specific team” or “Y company”, but when people talk about them nowadays, they seem to have switched to utilizing leetcode or similar for screening or something. And god forbid you out any filters on.
Very much this. I've never actually done a single leetcode problem and never will. Recruiters will tell you what the interview process is like (if not, just ask). If it is based on whiteboard puzzles like this, just refuse. Be sure to tell them why you're not interested!
We can improve the maturity of hiring in this industry but only if we collectively refuse to participate in these bad practices.
As long as newbie frontend engineers out of coding bootcamp continue dominating the hiring market this will never change. It's factory mentality.
the big n tech companies have the same problem as harvard, more or less. way more qualified people apply than they have headcount for, so how can they pick efficiently?
I don't enjoy leetcode interviews, but for these extremely competitive positions, I can't think of a reasonable alternative I'd prefer. you know in advance what topics you'll be tested on, and the interview prep applies to several different companies you might be interested in. I'd much rather do that than prepare a bunch of "tell me about a time when..." answers for each company's supposed values.
> In what other industries are the bars so high?
pretty much anything where you can start at $200k with a bachelor's degree? honestly what other jobs like that have a lower bar?
The famous Hunter & Schmidt meta-analysis suggests that only work-sample tests and IQ tests work well enough to use, but it's an old set of studies so hard to know if it still applies.
So debugging or implementing some small stuff against a real application would perform better than leetcode.
TBH, I think the original point of algorithms was to act as disguised intelligence test, which are tricky to use in US hiring.
The more general point is that the algorithmic approaches from leetcode problems have not a lot of relation to what most programmers do all day, and as such, are less useful as a work-sample test.
Doing a take-home where you fix some bugs would probably work better (i.e. more correlated with outcomes) than leetcode interviews.
I'd say asking someone to regurgitate some solution for a random leetcode problem is far worse an approximation than asking someone to write, say, a little toy API that does nothing more than retrieve a value out of a set.
See how well they're able to develop in a language of their choosing. Can they get started immediately or do they stumble putting together the first little building blocks?
Treat it like a "real-world example" and make that clear up front. Do they think about logging and metrics? (for the purposes of a toy interview problem, just writing to stdout for both would be sufficient). Do they think about dependency injection? What about unit tests?
Then follow it up by asking them to modify a bit of their logic. ("okay, we've got it returning a matching value from the set if it exists - what if we wanted to add in wildcard support at the end of the incoming string?").
Tons of very real things to consider, even in the constraints of a simple toy problem.
As someone who works in Big Tech, I would much rather have people on my team who think about maintainability, debuggability, monitoring, what can go wrong, etc. etc. (and have shown during an interview they're capable of writing some trivial business logic around that) than someone who absolutely nailed mirroring a binary tree and solving the longest common sub-sequence problem.
In the updated paper, work sample tests do not come up as important as they were in the original paper:
It appears that almost all of the validity of work sample
tests is captured by GMA measures, because the incremental
validity is essentially zero.
But work sample tests are a great mechanism when GMA cannot be used for legal or other reasons. The paper concludes with: The research evidence summarized in this article shows
that different methods and combinations of methods have
very different validities for predicting future job
performance. Some, such as person-job fit, person-
organization fit, and amount of education, have low
validity. Others, such as graphology, have essentially no
validity; they are equivalent to hiring randomly. Still
others, such as GMA tests and integrity tests, have high
validity. Of the combinations of predictors examined, two
stand out as being both practical to use for most hiring
and as having high composite validity: the combination of
a GMA test and an integrity test (composite validity of
.78); and the combination of a GMA test and a structured
interview (composite validity of .76).This holds for blind applications.
But Facebook reached out to me a few years ago which I was pretty excited about, but then I was dumped into their standard applicant pool, and I really didn't have time right then for an 8 week hiring process with 7 or so leetcode interviews.
This is the key observation. It's mostly ok for the bar being too high, though it means companies miss out on good people.
But when the interview bar is in a random place completely unrelated to the job skills required, that is the fundamental problem in our industry.
My very first job was working with tech I was completely unfamiliar with and had really never touched as the lone developer. Yet, I managed to be productive very quickly in the short contract it was. Turns out that a lot of the programming languages and frameworks used in “real life” are pretty damn similar and it takes a little bit of reading the docs to be able to figure out.
Yet nowadays I can’t even get an interview because my resume isn’t plastered with talk of k8s and every other cloud/infra software the company used once.
In my experience running a company, it's the lowest risk way to hire competent software developers and given just how expensive and risky it is to hire people, it's worth it. Most competent developers don't mind spending 60-90 minutes answering technical questions/leetcode questions in order to get a high paying job so there's not much pressure on me/my company to not do it.
>In what other industries are the bars so high.
Almost all professionals working in fields that pay as high as software development have higher bars, whether it's law, medicine, finance. It's a myth that only software developers have to go through a kind of technical challenge in order to get a job. If anything, spending 90 minutes to solve basic technical questions and getting a 6 figure salary as a reward is among the least demanding and most objective systems that exist among professionals.
>Take a chance on folks and don’t be afraid to part ways if it doesn’t work out.
So I should hire someone who is likely leaving an existing job to come work for me for 3 months during which time I pay them, all for the sake of what? What is the benefit of doing this other than appealing to HN/reddit's hatred of technical interviews?
When I first started my company back in 2009, I was a young, naive 24 year old entrepreneur and decided to listen to reddit about hiring and running a company. Valve was all the rage back then and they had this culture of no management, anyone could work on anything they wanted, do whatever they want etc etc... and so I decided I would run my company the same way. I had this idealism that if I hired people who seemed motivated, enthusiastic about technology, good well rounded people then nothing could go wrong and my company would be sure to succeed.
Well... boy was I wrong and it almost drove my company to failure. Running a company is absolutely damn difficult, managing people is incredibly hard and honestly frustrating and time consuming.
People are not intrinsically bad or evil, but people do respond to incentives and if you just pay people, even smart and well intentioned people without having rigorous expectations as well as solid management and structure then they converge to a point where they basically do nothing productive. My idealism that smart, hard working and good people would be able to be productive without needing to be prodded in the right direction, without the need for management and structure, without reviews, timelines, goals etc... failed quite miserably.
I thought hiring "good" well rounded people would mean they would be able to learn things on their own, find ways to advance their career through technical books, or attending conferences or other ways of self-learning but that never happened. Instead the people I hired spent an inordinate amount of time on various social media, Facebook, Youtube, playing flash games. The amount of distractions that exist all of which are competing for your attention and to pull you away from being productive are enormous. Especially if you work in a technical field where you have to solve problems and be creative, you can find yourself with the equivalent of "writer's block" and end up spending a great deal of time just procrastinating and doing nothing. That's what I ended up observing among the people I hired. They were not bad people or lazy, but they just couldn't fight off distractions.
In hindsight it should have been obvious, I mean if all it took to run a successful company was hiring "good" people then then every company would be successful because really, almost everyone is a good person and I rarely encounter bad people.
But being a good person doesn't make you competent and what a business needs first and foremost are competent people working within a system that has a proper incentive structure in place to reward their skillset.
I continue to give people technical interviews because while I might miss out on some strong candidates, even some of the strongest candidates... I am effectively guaranteed that whoever I do hire will meet the minimum standard needed to do well at my company and that risk/reward ratio makes it worth it. If only because people who are good at technical challenges are people willing to put in the time and have the kind of discipline needed to prepare for them instead of people who think they're owed a job, that kind of self dedication is genuinely hard to find.
So at this point I have "lived long enough to see myself become the enemy" to quote the Dark Knight. My company does a lot of the things that HN/reddit says are bad, like we have technical interviews, we have hard deadlines, we have management yaddi yadda... and the end result is we now have a productive and successful company that grows year over year.
There are just so many risks that one takes in running a tech company that the additional risk that comes with hiring people on anything other than their technical competency is not one worth taking.
The more traditional professions do their own gatekeeping and have one, standard, set of exams to take. Once you've taken them you don't need to re-do them for every interview, although you may need to stay current.
In programming, every employer has a different, non re-usable, exam.
> In programming, every employer has a different, non re-usable, exam.
True for DS too. This is the real problem. Like, if I could take a bunch of re-usable take homes and then not have to worry about this for a few years, I would totally do that as it's honestly so frustrating to have to do mostly the same crap over and over again.
I could have done three other tests as well, but those were >90 minutes and I just couldn't find the time or energy for it (Amazon's requires a dedicated 2.5 hours, for example).
So effectively I spent roughly 12 hours just taking exams for my last job search, and basically let the house go to shit for a solid month since I was working on them (or prepping for interviews, or doing other things asked of me) basically every night, and had zero energy on the weekends to catch up much beyond a couple load of dishes.
Compared to having to take a single bar exam, one time, that you cram for in the prime of your textbook knowledge, I'd take that any time.
I often wonder when seeing job adverts that ask for a motivated and driven self-starter who is good under pressure and organising and prioritising and willing to work overtime and on-call and has skills up and down the tech stack, etc. etc. ... why would a person like that be applying for a job as an employee, instead being a founder or consultant?
The fundamental trade of being an employee is a kind of subservience - "I give you my time and effort, you tell me what to do. If it doesn't work out then you take the hit, and if it does work out then you take the bulk of the profit". At the extreme of "I've hired you, can y'all just self-organise into a profitable company and I will still take the bulk of the returns" it all falls apart. It's trying to push leadership and management down onto employees, without any of the money or social status or potential returns or even the ability to put "manager" on their resume and leverage it for promotions in future.
Are you joking? I’m married with kids, and I’ll be lucky if I have a few hours of the week to myself.
I don’t mind that, but beyond my unwillingness to grind leetcode in general, I wouldn’t have any time to so effectively.
The selection bias for young, smart, single unattached people is incredible.
Of course, that’s exactly the kind of people that’ll happily stay and work overtime too, so I can see why a company would like the idea of that.
For their sake, please don't. It's not worth it.
This is for a job that pays 450k+. Do you really think you’re gonna be handed it with no effort?
If you want a mediocre job, then there’s plenty of companies you can get hired at with little effort and you’re welcome to work at those companies. Just don’t be surprised if you make 1/3 to 1/4th the comp.
Because it’s a job that pays that amount, I kind of expect their hiring process to select for the best. But it doesn’t. It selects for those with an abundance of time on their hands.
Or maybe it does, I haven’t tried.
I strongly agree with your point about bias. When I was not a father, I spent a lot of time studying (and passing) AWS certs and reached the point I got all of them. Now? I am happy when I read few blog posts each week and, very often, it takes several attempts to be able to fully watch a single re:Invent session.
"Yes, but you are reading and replying to comments on HN!"
Indeed, with my baby in my arms haha!
I'm slowly coming around to the view that the widely accepted process is ageist. Whether that's deliberate or an externality I'm still undecided.
Every minute I spend on take-homes (oh dear lord the take-homes) is a minute I'm dumping the childcare responsibilities on my wife. And she heads out to work, so I do a bunch of childcare in the mornings/evenings.
Then I also have a full-time job. Like, unless I want to stop sleeping I don't have a whole lot of time to do this stuff.
I just (mostly) finished one and it was because my wife took the baby out to meet other mums.
The worst part is that I have lots and lots of work online, plenty of GH repos and a bunch of really selective companies on my CV. And yet still every time I need to prove that I can in fact call read.csv and do a bunch of data manipulation/analysis.
And I love doing this work. I can only imagine what this is like for someone for whom it's just a career (which is totally fine, tbh).
But the thing is, lots of the experienced people you want to hire will be in this position, so it's worth accounting for.
You’re complaining about the process being ageist, but I think you need to wake up to reality that life is not fair and sometimes you have to make sacrifices. In our case, if you sacrifice your life for 1-2 months it can set you up at a nice job for the next 2+ years. That’s so much better than what most people have it like.
Also, even if training for algorithms questions was purely a matter of signaling with no positive externalities - it's actually a much faster and easier process than getting another degree, which is a common alternative.
TL;DR If you put in the time, it can absolutely change your trajectory in ways that you might like a lot. If you don't, how will you know?
Out of college I sent out to hundreds of places and got one interview offering an abysmal 30k, then at some point got contacted out of the blue by a recruiter for a big company. The email was so badly written (different font faces/colors/sizes, bad English) I thought it was possibly a scam, but then that turned out to be an easy and very well-paying job for someone starting out. Then the next place said I was the best candidate they ever interviewed because I answered some basic language questions clearly.
My conclusion has been that hiring in this field is just confusing and nonsensical, and you never know what you're gonna get, but you probably don't need to touch anything like leetcode unless you're shooting for Google.
I don't think these cheesy interview questions like writing a circular linked list or implementing Conway's Game of Life should even take any "grinding" if you have good fundamentals.
I almost feel shorted that I never got a question like how I would measure the depth of the ocean with an apple, as the article parodies it, since I find that kind of thing fun and interesting.