It should be telling that there are a number of, usually for-profit, resources for prepping for just the interview process:
* leetcode
* Cracking the Coding Interview
* Elements of Programing Interviews
* Interview Kickstart, which costs like $5500, is a bootcamp just for passing interviews
* educative.io
* algoexpert.io
That being said, I might just play along with the DS / Algo interview game. Having an interview process that is artificially arduous and way outside the expectations of the job duties means that the job market will stay artificially inflated on the demand side. Hiring leetcode monkeys who can barely deploy and manage k8s cluster on AWS means the demand for my skills will be more valuable than if the interview process actually worked. I can complain all day to my bosses about how hard it is to hire (its not that hard) and meanwhile rip their HR budget to shreds when I threaten to leave unless I get paid more (I've done that before, I recently got a promotion and 50% raise on base alone).
So yeah, I'll gatekeep as long as others play too. I hate the game, but I will play it to my advantage.
I know you think you’re making a “cynical but rational” kind of argument here, but man, this comment is a huge fucking bummer.
You’re acknowledging that you have the both the ability and the knowledge to change (your small part of) a shitty system, and instead you’re pulling up the ladder behind you. That sucks.
You should not let yourself feel good about that, even if it’s “economically rational” or whatever.
You’re making things just a little worse for everyone but yourself — actually, even for yourself, too — and trying to excuse it with “well, that’s just the way things work!”
You'll feel better when you see some of my other comments. I'll paste it here for you:
> What’s your suggested alternative?
In my experience, any alternative to leetcode provides a better signal-to-noise ratio. You are better off asking trivia questions.
Additionally, this is the common narrative among leetcode advocates - "If no leetcode, then what?" As a hiring manager, you think harder and do better, that's what.
> Please remember that while some of us would do well and prefer some live pair programming or debugging sessions, it stresses the hell out of some folks and penalizes them unfairly.
So does leetcode. And a candidate that is truly a good fit for the role would be more at ease with the interview than if they saw a leetcode question they haven't seen before.
> Take home tests penalizes people with families and other responsibilities...
So does studying for leetcode for hours.
> ...and probably has a racial bias as well in countries where different races have different societal loads.
Share some sources before making a claim this ridiculous.
> In the end, even if these coding challenges might not reflect the actual work you do, they might still be predictive of success in the job, as much as any other method can be when we look for unbiased markers.
In my 6-ish years of experience, this is false. I have actually tested this theory in practice, and through my anecdotal experience, leetcode is a poor signal for job performance.
I can usually usually accurately screen a candidate for success in about 45 mins. And, unlike leetcode, you can't pretend like you haven't seen the question before, bc I can push the candidate to their limit, which is where you will find hire / no-hire signals. I love talking about this stuff, but I find that my peers engineering peers do not give a shit and would prefer to stay in leetcode hel
I mean, I don't even have to suggest; I can let the OP suggest instead.
> Having an interview process that is artificially arduous
Make your interviews less artificially arduous.
> way outside the expectations of the job duties
Re-design your interview questions to be more in line with the actual job.
> leetcode monkeys who can barely deploy and manage k8s cluster on AWS
See previous suggestion.
If you want my personal suggestions on interviewing better:
- Interview for problem-solving process, not just for correctness. A candidate's ability to solve an algo problem in 45 minutes is much less important than their ability to calmly, thoroughly, and clearly explain the way that they think.
- Tune interviews to the role at hand. This should be obvious, but for some reason full-stack web devs still have to pretend like dynamic programming is a big part of their daily work.
- More systems interviews. I find that it's much harder to bullshit/memorize here, at least not for very long.
- Interviews based on actually building stuff. "Hey, here's a super simplified version of a feature someone in your role built last month. Can you walk us through how you would build the same thing?"
Interviewing is hard. It's not that fucking hard. When someone is out here complaining about what they see as obvious flaws in their process, and then decide that the best course of action is to "gatekeep as long as others play too," it just reeks of laziness and self-interest.
This does not get better unless individuals decide to start making it better. That's my biggest suggestion, really; don't become a cog in the machine. Every single interview that you, personally, conduct has a small but meaningful impact. It's up to you to have that impact be positive or negative.
I hate this from someone who manages interviews. They are leetcode monkeys, because they are not dumb and this is what gets them rewards and jobs. If he changes the criteria, they will change what they spend time on.
But, instead, he chooses to insult them ... for doing exactly what he rewards.
> Tune interviews to the role at hand. This should be obvious, but for some reason full-stack web devs still have to pretend like dynamic programming is a big part of their daily work.
This personally hurt :)
Completely agree with you on everything you've written.
I don't hate leetcode, but I'd really rather do interviews in one of these ways
1. Rely on referrals from people I trust. If somebody I've worked closely with and respect highly says that Person X is awesome, then just hire Person X. This obviously has massive problems with creating an insular culture and only works for people with a sufficient professional network, but it is incredibly high signal.
2. Have a long conversation with the candidate. Discuss their prior experience and war stories. This can be gamed, but I suspect is harder to game than leetcode.
Both of these options have a big problem as they scale, which is that interviews do not transfer. You need the hiring manager to do this interviewing. Making every hiring manager at a 100,000 person company do their own sourcing and interviewing is going to be a mess. Megacorps want to allow anybody to interview and then once somebody passes those interviews, they'd be able to join any team. I have mixed feelings about this approach.
So the best option IMO is two 2-3 hour pairing sessions. Refactor some code, develop a feature, and diagnose a bug. Have the person comment on the architecture of the code or system they used and describe large scale changes they'd make to improve it or prevent it from arriving at this state.
This requires more pre-work since you need to create an entirely working fake system and environment. And since there is a huge incentive to practice for these things, people would definitely sell knowledge about the fake system. It is also higher variance when there are new interviewers, since they represent a larger portion of the total interview panel.
What is that supposed to be telling? There are a quite a few industries where there are profitable neighbor industries around breaking in to it. Even ones with licensing and blah blah blah instead of whiteboards.
Hell, the cynics would call the entire current university system one! And if not that, than it least the massive industries around getting into better schools...
Science typically requires advanced degrees, publications, etc. You're not doing much of anything a lay person would consider you a "scientist" for with just a Bachelor's. Getting these degrees serves as the hurdle/filter.
Math is the same as science. You're probably not getting hired as a mathematician if you just graduated with your Bachelor's.
[Non-software] engineering has all the professional certification, shadowing, etc. that is required to get very far in the field.
Software is the only STEM career you can get into right out of high school, being completely self taught. Yes obviously a degree helps and it's much easier with one, but not having advanced degrees is a non-starter for most STEM careers, let alone not having one at all.
> I can complain all day to my bosses about how hard it is to hire (its not that hard) and meanwhile rip their HR budget to shreds when I threaten to leave unless I get paid more (I've done that before, I recently got a promotion and 50% raise on base alone).
Kudos for that. I may be making a similar move soon.
It should be telling that there are a number of, usually for-profit, resources for prepping for just the interview process:
* leetcode
* Cracking the Coding Interview
* Elements of Programing Interviews
* Interview Kickstart, which costs like $5500, is a bootcamp just for passing interviews
* educative.io
* algoexpert.io
That being said, I might just play along with the DS / Algo interview game. Having an interview process that is artificially arduous and way outside the expectations of the job duties means that the job market will stay artificially inflated on the demand side. Hiring leetcode monkeys who can barely deploy and manage k8s cluster on AWS means the demand for my skills will be more valuable than if the interview process actually worked. I can complain all day to my bosses about how hard it is to hire (its not that hard) and meanwhile rip their HR budget to shreds when I threaten to leave unless I get paid more (I've done that before, I recently got a promotion and 50% raise on base alone).
So yeah, I'll gatekeep as long as others play too. I hate the game, but I will play it to my advantage.