Tell HN: Stop Accepting Shitty Interviews

136 points by chrisaycock ↗ HN
There was a long discussion on HN the other day regarding why companies are having trouble hiring engineers:

https://news.ycombinator.com/item?id=29892437

One of the recurring themes is the "leet code" interviews. I will go further and say that any interview that doesn't mimic the job is a guaranteed way for me to turn the company down.

Stop accepting shitty interviews

When I was talking to trading firms about coming back to the finance industry, about half of them admitted they already use my open-source software. And yet, only one firm bothered to ask me about how some of my stuff was implemented. That's the firm I'm working at now.

Instead, I got plenty of firms that still insisted on asking me questions that are not remotely related to the job. Tons of Hacker Rank and Codility, even though I've never had a time limit when building something in real life. Tons of intern-level questions as if I was a college freshman. And tons of detailed questions about how a specific programming language works, as if we're going to build a compiler for that language.

And to reiterate, those were the firms that already admitted to using my software!

Stop accepting shitty interviews

The stupid assessment practices won't change unless employers suffer the consequences for this nonsense. I have always made it my mission to reject any firm that asks me syntax questions or brain teasers. (Seriously, the New York Times doesn't assess journalists by having them conjugate verbs; it's just weird to ask this.)

Yes, people get mad when I terminate the interview on the spot. I'm sure I've been blacklisted from a few places because of my stubbornness. But damn if I'm going to allow stupid shit like this.

Stop accepting shitty interviews

126 comments

[ 4.3 ms ] story [ 211 ms ] thread
So what do you propose as a replacement?

In your case, they should've certainly dug into your open source, at least if it was directly in their line of business.

I certainly love it when I ask a candidate "tell me about a project you found interesting" and they can go into details, talk about tradeoffs, etc. Sadly, most candidates can't. They can't come up with anything better than "well I rewrote the thing, and it was challenging since I hadn't used Kotlin before, learning Kotlin was interesting." So at that point I'm unimpressed, but I'll give them a chance to code still because (a) not everybody has had opportunities to work on interesting stuff and (b) I wouldn't have enough people to hire otherwise.

But if "has open source software we use" is the bar, you're gonna fail a lot more good engineers than you would using algo questions.

I ask the same thing you do: "Tell me about a project you've worked on." There is tons of ground we can cover with that:

* implementation choices with pros and cons

* details about how the underlying system works

* domain knowledge, where applicable

* sample code where the candidate writes to mimic something from the system

My interview style has always been: "Tell me what you know, and we'll see if that's true or not." Surprisingly, most candidates fail even that since they don't seem to understand their own projects. But I find this approach the fairest of all since it allows the candidate to lead the interview and it doesn't assume anything about the candidate's knowledge or prior experience.

I work in the same industry as you and I agree. Your problems are never how to reverse a linked list, or finding the missing number. It's always tradeoffs: why does the business benefit from this technical decision over that one? What's the point of this language? What do you need in terms of hardware? How do you organise the code to suit the needs?

The interview that's always worked for me in hiring is where we talk about the issue and we see if the person understands the problem. There's an infinite number of things we can get into, and if the person is experienced they'll never run out of things to say. I've never hired someone who turned out not to know the basic things like some particular algorithm.

I suppose if we're talking the leetcode style interview loops, they normally have a system design part. That might be the closest to what I do.

I once would've completely agreed with your point idea. But since then, I've had multiple experiences of talking with someone who made a great impression, super knowledgeable, but couldn't actually write any code in a real-world setting.

This approach simply doesn't always work. Some people are amazing-sounding but terrible in practice. The reverse is also true - some people are terrible at talking about their work, but produce amazing code. (Their lack of communication skills might or might not hamper their actual job performance, depending on multiple factors.)

I agree that the interview can't be just war stories. There has to be code in there somewhere, like whiteboard sketches of an algorithm the candidate has implemented.

On the other hand, leet code questions definitely don't show that the candidate can actually write maintainable, well-documented code with test suites and easy-to-use APIs.

Yes, luckily those aren't the only two options :)

Though I will say that having some kind of fizz-buzz style phone screen is still, in my mind, a good idea. It saves a lot of time if it turns out that your candidate can't even write a simple for loop (and so many can't, to my great dismay).

"We need to serve 1TB of data. How would you do it?"

Start there. Let the candidate walk through the problem. Ask questions, and introduce hypothetical limitations. "We need to display the data in a table on a webpage." (frontend) ... "We need an API that can query the data." (backend) ... "We need to sort the data." (discuss algos) It's not that hard to find people's strengths, and make sure you're hiring qualified folks.

And, maybe, c) not many people have both strong verbal skills and strong technical skills?
While I agree in principle, the average developer is not going to have released and maintained an open source project. Let alone one that is used. Let alone one that is widely used. People in your position should rightfully do that, you have all the leverage. Other people not so much, especially new graduates. I agree that having tasks that simulate the real environment is the goal but we also work in an industry that it is common place for productivity to only really start after 6 months. Thus, any interview is going to be some simulacrum of the real thing. Personally, I would like to see something like "Make 10 commits to X open source project and we'll talk". Make the world a better place while actually evaluating the candidate for job readiness. Both technically and behaviorally as you see how they behave in the community.
Not every developer has the time and resources to dedicate to FOSS. Some of us spend most of their working time writing software for, well, the company we work for, which won't suddenly open source their IP.

Making commits to FOSS a general requirement in interviews would exclude a whole lot of highly skilled and experienced engineers, limit the chances of beginners, and lead to loads and loads of BS open source projects that exist solely to fatten resumes.

First, 10 commits to an open source project is not "dedication". It feels like table stakes if we want a meritocratic process. Second, where do people get the time to work on leetcode problems? Replace that with open source contributions and/or open blog posts. I do agree that it would probably lead to a glut but that makes the interviewer's job incredibly easy if a commit is BS or not.

It seems you are asking for a miracle: an interview that properly assesses the candidate's job readiness without time involvement. How much time do people spend preparing for interviews and then have to do it again the next time they want to interview? At least with this system, you have a history that is reusable.

The point of a leetcode style question is to test someones' ability to explain and adapt a tricky problem on the fly. Given most of a software engineer's day to day is about communication and adapting existing solutions to related problems, leetcode problems are a very powerful tool for analyzing candidates.
While there is a lot of nuance to interviewing people, I can't say that solving leetcode problems in an interview setting is similar to any problem solving I've done on the job.

The closest might be white-boarding potential solutions in meetings, but there, most of the time, I have a lot of context wrt. the company and situation.

In the past I haven't minded presenting solutions to contrived problems in interviews, but these days I wouldn't. I also wouldn't take a job without significant equity attached, but I'm probably not representative of most devs.

>> The point of a leetcode style question is to test someones' ability to explain and adapt a tricky problem on the fly.

This is just nonsense, since the only reason the developer can answer the question is because they crammed it in preparation for the interview. Leetcode questions are not tricky, they're just tricks.

I myself am not pro-leetcode, but I see the advantages of leetcode from both the interviewer and the interviewee side.

From the interviewee side: It gives you a known set of material to prepare for (ofc there may be newer questions). But this alone helps a lot. With the explosion of frameworks, libraries, languages it is very hard to prepare for everything.

From the interviewer side: Again it will give you a standardized set of questions which can be asked and you can compare across candidate due to this.

>> about half of them admitted they already use my open-source software

Similar to how people don't have time to prepare for leetcode, there may also be people who don't have github repos with open source code etc. Take my case, I work for a company where I have to get permissions if i am gonna start a open source project, even though it may not be related at all to my current work.

> I work for a company where I have to get permissions if i am gonna start a open source project, even though it may not be related at all to my current work.

Is this common ? Or legal ?

“You agree that everything you write is work for hire owned by us, in return for your salary” is pretty common in full-time employment contracts. Certain jurisdictions have chosen to pass laws limiting it, so I suppose it would be legal otherwise.

https://leginfo.legislature.ca.gov/faces/codes_displaySectio...

https://apps.leg.wa.gov/rcw/default.aspx?cite=49.44.140

For morale and tech brand reasons, some companies have a process to officially bless releases of work they might have had a good case for owning.

I'm curious about the legality of such practices. Your employer needs to authorize what you do on your own time and dime? What country/state are you located in?
More efficent? maybe. More effective? debatable.

What you're describing are not advatanges as much as ways to make the job easier, without accounting for if it produces better results.

Yup, there are countless employers looking to hire coders. If your spidey senses tingle, end the interview and move on to the next one.

I've got a little anecdote on an interview that I should have ended, but I was a junior so I didn't really know better at the time.

At this interview, one of the things they wanted me to do was to do a series of one minute coding challenges. They weren't leet code or anything, but just difficult enough that they required a lot of knowledge, and I wasn't allowed to look up documentation. This one guy stood behind me and looked over my shoulder with a stop watch. After a minute was up, I had to put down the code I was writing and move on to the next one, and the process would repeat. I think I did about 12 of those. It was some of the most ridiculous bullshit I ever did in an interview. If you didn't remember the exact array method off the top of your head then you were just screwed. Mind you, they were hiring for a junior position. These days there's a possibility I'd survive it, but I wouldn't even bother at this point.

I think OP implied a better solution when mentioning interviews that mimic the job: present interviewees with a small take-home case study based on a real on-the-job problem. I have done a few of these and they have been much more enlightening experiences than any paired programming boilerplate live coding exercise. Even in situations in which my proposed solution weren’t up to snuff to land the job, the conversation with the team about my solution felt like an actual representation of what it would be like to be a member of the team.
> present interviewees with a small take-home case study based on a real on-the-job problem

In my experience these are terrible. It becomes an arms race, what the company intended to become a 5 hour take home assignment becomes a 20 hour assignment because everyone else that's doing the take home assignment is also spending 20 hours. Take homes are a trap.

Personally, I like the idea of objective based take homes rather than time based. Then just have them check everything in on git so you can see how they work.
You get to choose between a lot of factors when deciding where to apply:

Location, pay, workload, social aspects, stocks. Not to mention work environment, chance at promotion, career progression. Deciding on interviewing types can be part of the equation.

Changing employer's tactics is not going to happen at the interview feedback level. This movement needs a gurus/books and a cargo cult mantra which filters into magazine articles and popular culture.

You are better off going in a different direction and using this information to hire the best employees for your own company or offering a service that places your candidates in roles.

I accept very few interviews at all, so sniffing out shitty ones ahead of time isn’t particularly intuitive for me. But I can say of the two worst ones, I very nearly walked out on one, and did walk out on the other. I regretted not walking on the first one and didn’t regret walking the next one. The first was a FAANG, the second … should be in the acronym.
People never talk about the most important metric for interviews: your target rejection rate. Google and Facebook need to do these interviews because of the number of applicants they get. Any process they design must definitionally reject 99% of people who go through it, and they found it is essentially impossible to hit that kind of rejection rate with just 'tell me about your work' questions.

If your startup operates with a 50% or 75% target rejection rate, you absolutely can and should operate differently, and this could be an important competitive advantage for you.

Doesn't this work like Harvard/Yale/Princeton/etc admissions, where if they selected a completely different set of applicants everyone there would just as likely be qualified and deserving of attending?

I swear sometimes it might just be easier or even fairer to throw all resumes/applications in the air and see which ones land inside of a predetermined circle.

> I swear sometimes it might just be easier or even fairer to throw all resumes/applications in the air and see which ones land inside of a predetermined circle.

When I was a responsible for hiring interns, we used to joke about this all the time. Just throw away 75% of applicants, everyone that got thrown out is unlucky, and we don't want unlucky people bringing the company down.

The Monte Carlo hiring technique?
Yes, but that would destroy the illusion of a meritocracy and the idea that these companies are basing their hiring decisions on rational, objective metrics and not simply making it up as they go along.

Steve Yegge made that observation many years ago regarding Google. For every person working at Google, there is a panel of interviewers that would have rejected that person.

Rejection rate has been discussed many times. It is not the most important metric since it's just an observation. You can't start with a desired rejection rate and come up with a good interview process. What you can do is know what kind of person you want to reject or select for, design a process to do that, and then adjust other factors (listed compensation, recruiter talent, marketing site, etc.) so that you have enough candidates to which you want to extend offers.

Few companies are actually in a position, given their knowledge, stability of their industry, and marginal quality of hiring success, to succeed at deliberately loosening or tightening their interview process to arrive at just the right number of final candidates.

They don't have a target rejection rate. They have a target quality threshold. More software engineers that can productively employed is good for them. It's not like Harvard or other institutions where the point is to be elite, not to do something. The more SEs Google can hire the better. If they could reduce their false negative rate in half that would materially impact their bottom line. False negative for Harvard is basically undefined. They could easily dectuple the number of students they admit without compromising on academic quality or family wealth and making only very small declines in average power level (dictator, princes, senator, governor children)
Can't they simply hire the first eligible person? One can go through resumes and filter out people who don't meet objective criteria(e.g. work experience, location). This should be trivial. Then once they have 30 good resumes, they can call these people for interview. Assuming 10% chance of each candidate meeting the job requirements, they have >95% chance of finding a good candidate.

With automated resume pruning, it shouldn't take more than two hours for initial pruning. Actually, the higher number of applications means they can put in stricter pruning conditions, leading to lesser manual pruning later on. Assuming 2 hours/person interviewing, it should take less than a 40 hours-person to close a position.

I'd guess there's also some benefit w.r.t company loyalty when hiring a good-enough candidate instead of the best-available. They would be less likely to switch jobs compared to someone who can solve a leetcode hard problem in 15 minutes.

What open source software did you write out if curiosity?
> One of the recurring themes is the "leet code" interviews

What makes these "shitty" interviews? They're very simple and they test for your ability to write code.

They set the bar clearly and you have the ability to study for them with ease. Solve 200 of these problems once in your life and you'll never have an issue again. You'll breeze through all of these interviews.

Compared to the alternative, where people ask insane unrelated questions and that are incredibly subjective, these aren't all that bad.

> They're very simple and they test for your ability to write code

Do they? Or do they test for your ability to memorize a set of common problems?

I don't have another solution, but just because they are the best we have come up with doesn't mean they aren't shitty.

Thank you for your application to extend our web forum built with Next.js. We query APIs from X, Y, and Z to offer Foo to 500 users. I see you have three years experience with Next.js and eight years working with X, Y, and Z! Excellent. We only have one question before we hire you - can you implement a Trie from scratch in an hour on this whiteboard without the internet?

...

I guess I understand the intent but I think you're off base for 2 reasons.

1. The question you are posing isn't hard. It's easy to borderline trivial, I would think so even for junior engineers who are recent grads.

2. Being skilled in a specific FE framework or any library/API isn't what you should be testing for unless you're hiring for simple task work. You really want to uncover ability (IQ) not familiarity. You want people that will grow with the company, not drag you down.

Everything is trivial once you know it. Good engineering principles like software architecture, for example being able to produce a sound Onion architecture with an accurate and well tested domain model, could be missed entirely by focusing on leetcode but is more important.

Edit: If you're looking for puzzle solving skills then give someone a puzzle

> Being skilled in a specific FE framework or any library/API isn't what you should be testing for

Knowing how to implement some arcane algorithm is also not what you should be testing for. It tells me ZERO about this persons ability to code in the real world.

It may not even tell me they understand the algorithm...they may have just memorized the pseudocode implementation well enough.

> You really want to uncover ability (IQ) not familiarity.

a) Cognitive ability isn't accurately measureable. Not with IQ tests, and certainly not with standardized puzzle questions the internet is making lists of which one to learn to crack interview @ company X

b) Familiarity is EXTREMELY important when working with complicated systems.

a) sure and that's why you aren't literally administering an IQ test. it's highly subjective and flawed. so?

b) of course it is! no dispute whatsoever. that's why it's 6 months to become productive in any new job in the first place. But you want someone that can BECOME familiar and can UNDERSTAND the framework du jour.

When I hire an appliance repairman I want a guy that understands how the machine WORKS and can troubleshoot it from that knowledge base. Not someone that can swap in a fuse as long as the machine tells him which fuse is bad. I want someone who is knowledgeable with DISHWASHERS not someone that is an expert in MIELE seeing as I have a BOSCH or I've modified my miele beyond recognition anymore.

If you need seat warmers the story is different. Then sure, you just want a miele certified repairman.

I think we are completely in agreement about what constitutes skill, and what companies should look for in candidates.

The point where I think we disagree, and please correct me if I'm wrong, is: are LC style questions an effective testing method for these skills.

I say no, they are not, for 2 reasons:

a) implementing something like a non-trivial graph algorithm doesn't come up often in day-2-day work, and if it comes up, even some experienced developers look it up, just to make sure they got it right from memory. To borrow your dishwasher-analogy: I want the repairmen to know how a generalized dishwasher works, so he can repair Miele, Bosch, whathaveyou, but I don't need him to be able to program the DWs microcontroller on a whiteboard, or forge one of the pipes with nothing but a firepit, a hammer, anvil, crucible and some copper-scrap.

b) since all these questions are known problems, both in their solution AND their usage as test questions, we are facing a "learning for the test" dilemma: people can, and many do, just memorize these answers to pass interviews, same as many students in standardized test environments just learn how to pass the tests.

This is fundamentally different from understanding the subject. Again, I agree with you: I want someone who can answer these questions because he can apply generalized knowledge about algos and data-structures.

But I am not confident tests which rely on pre-fabricated and well known puzzles will give me that.

Because in OP's case, they indicate that the company either doesn't care that OP wrote software the company uses and thus has already demonstrated competence and then some, or they indicate that the company's hiring process is too inflexible to avoid insulting someone who they already know is beyond qualified.

Either one is a red flag, and a perfectly great reason to bail from an interview. If hiring/HR is rotten, the rest of the company is likely similar.

> They're very simple and they test for your ability to write code.

This statement is an oxymoron.

> They're very simple and they test for your ability to write code.

Do you have objective evidence that this is an effective test of "the ability to write code", or is that just your belief?

There's a compromise in here that's worth looking into. Leet code has multiple difficulty levels for problems, and FAANG generally set their bar at the medium level. By contrast, I've had success asking senior candidates an "easy" question.

It's a small portion of the interview, the majority of which is asking them to talk about problems, technologies, strategies, etc., but the easy question (not fizzbuzz, but also not a DP question) makes sure they actually know how to code. My general issue with leet code interviews is that once I get nervous, my brain stops being able to come up with clever solutions to problems, and if a problem seems hard, this only compounds.

When you give someone an "easy" question, they loosen up and can actually start thinking creatively. You can see how they think it through, verify their solutions, and talk to you about requirements and approaches. As opposed to giving them a hard problem and watching the amygdala do its thing for an hour.

> they test for your ability to write code.

Do crossword puzzles test my ability to write novels? No they don't, because remembering some obscure name for a medieval dignitarys hat of office doesn't mean I can write compelling immersive stories.

By the same logic, memorizing how some obscure algorithm is implemented doesn't test my ability to think about real world applications or code in the context of a large project.

I totally agree that asking people who created/maintain/make significant contributions to open source projects is a waste of time.

However, for hiring people who don't have a public body of work to point to - it remains pretty effective. (I am not affiliated with hackerrank/hackerearth/codility - just been on the hiring side for the last many years)

Also, in my current org - we've been able to trust people lacking the "expected" graduate degrees - solely because they were able to prove their acumen in the interview by solving algo-data-structure problems. (Of course, we have to be creative here - and avoid like the plague the same bunch of questions which are present all over the web)

Why should I have to make a good resume when that doesn't mimic anything I'll be doing on the job?

I suspect the answer to this question is the same as to why people do the same for interview questions.

Too bad you didn't record your interviews. I bet if you bailed on a shitty interview from a high profile company, it'd go viral. Could be much more effective than pleading with people to stop accepting shitty interviews.
> Stop accepting shitty interviews

Why should I stop? My personal experience is that many of the best companies to work for have shitty interviews. All I need to do is to study a bit and go through a 5 hour interview and I have a cushy high paying job? Sign me up. Complaining about interviews is missing the forest from the trees, I don't spend the majority of my working life interviewing, I spend it working. So if preparing a lot for interviews and getting my ego bruised a little means I get a good job so be it.

Yes, it’s easy to forget we are in of the highest paying industry. But yeah interviews should skip some redtape and HR bs.
Still, it's not like any other field of engineering has something equivalent to leetcode. You don't make someone with a civil engineering degree and a resume of bridge building go up to a whiteboard and work out an irrelevant physics problem like it's undergrad again. You don't have an M.D. talk you through a hypothetical surgery. Only in computer science is there this metagame that you have to dedicate unpaid time toward, yet is hardly ever relevant to the tasks outlined in the job description. I feel like it's been pushed onto recruiters by companies that specialize in creating this crap like most other Enterprise software sold to HR teams, and now there is this expectation that this is how you are supposed to do these interviews because it's been going on for years now. Snake oil salesmen and lemmings in HR brought this upon us, not technical leadership demanding competency.
Civil Engineers and Doctors have professional boards that certify they meet a minimum level of competency.
I've done an EE "leetcode" phone interview with a non-technical HR person asking scripted problems. Didn't get to a real interview, then they foolishly called me back a year later where I just told them not again. This is for a company in the hinterlands of Oregon where you're making a sacrifice to work for the only viable employer in the area.
Is this Intel? The people of Hillsboro would resent you referring to their Portland suburb as "the hinterlands of Oregon"
And other fields of engineering don’t pay nearly as well.

I’d choose a much higher pay over a reasonable interview.

Yes, if you know the job is good go for it, it's a minor hurdle

Otherwise you might not just bother, because it's usually a reflection of what the company values and how it thinks

Funny enough, I was looking for jobs relatively recently and decided to apply to cruise but didn't bother because they wanted a cover letter.
I get your point, but if every good/senior developer stopped accepting "shitty interviews" the companies would be forced to change their methods and you would be surrounded by better engineers instead of people who studied a bit to go through a 5 hour interview.
Exactly. Nothing is more valuable than a coworker who can implement a half-ass hashtable with a linked list even though there are state-of-the-art implementations available in nearly every programming language.

I’ve got a sickness, and the only prescription is more bloom filters, baby

Depends on where you sit, I'd take a half assed hash table if it consumes 1/10th of memory and code space of a reference library implementation.

Embedded space sadly suffers from a dearth of good implementations for different parameters than CPU cycles.

> people who studied a bit

Most of the population couldn't do 200 leetcode problems if they were given two months full time one on one tuition and told they'd get $100,000 in cash at the end. That would probably hold true even if you restricted it to college graduates and definitely would for high school graduates. Most people are really, really bad at mathematical thinking. It's more than just a bit of study.

Lol, given this market, by the time they solved 40 they'd be ready to get a 50K hiring bonus and 300K a year job at the FAANG. You need to offer 500K or more to even motivate someone to solve 200 leetcodes.
>Most of the population couldn't do 200 leetcode problems

Most of the population are not programmers.

For someone who already knows a PL or 2, the picture is very different: There are maybe 32-50 questions that get repeated in almost every "code puzzle"-style interview. Which ones these are is actively monitored and curated in several communities.

A person intelligent enough to know a PL, can simply memorize these questions. "Learning for the test" is a standard, and successful, strategy to game predictable test environments. We see it in educational systems using standardized multiple choice tests, why would it be different in bad code interviews?

I was asked the stupid implement a calculator question at least five times.
You venn diagram of engineering talent has good engineers in the side that don't understand the value proposition I posted above? It feels silly saying this but the idea that people working at these tech companies are shitty programmers that only know competitive programming is wrong.
Engineering skill is orthogonal to willingness to put oneself through meaningless bullshit to get a job.
What a strangely adversarial comment. In my experience, I can gather more information about a candidate's ability in just 15 minutes talking 1 on 1 with them rather than hours of Leetcode busywork. Funneling candidates through an annoying, needlessly rigid, and blatantly time consuming process is not a good thing, and probably leads to perfectly qualified people being denied; a system that optimizes for 'signals' that should not exist in the first place.
To be fair the parent commenter's post doesn't claim that this process is even remotely efficient, only that it's reality and they find it easy to game.

Also more meta-level commentary, I find the word "should" interesting, as in general I have found that comments on HN which contain this word reflect a level of frustration that X is X instead of Y, because "X should be Y". Someone else may come along and say "X should be Z", and all the meanwhile, X is X.

The problem comes when a majority of us agree that X is not fit for purpose as it is, but we still get people saying "X is X, why are we talking about Y and Z?"
I don't see anything adversarial, it is just someone describing how they play the interview game.

There's a whole leetcode culture on sites like teamblind.com. A lot of people are happy to play the game.

Not my cup of tea either, but to each their own.

Even if you're correct about your ability to sniff out talent you don't scale, and you can't be implemented by someone with eight hours of training, or replaced by automated testing, or a pencil and paper test. Legible processes that are known to work to within some tolerance are great for large organisations.

If you can tell if someone's good within fifteen minutes of talking to them you should be able to get rich by setting up a software consulting company or startup with other people's false negative rejects. That's equivalent to being able to take mine tailings and spit out gold.

What does adversarial mean in this context? That I disagree with the original poster?

> In my experience, I can gather more information about a candidate's ability in just 15 minutes talking 1 on 1 with them rather than hours of Leetcode busywork

This is your perspective as someone doing hiring. My perspective is from someone being hired. I really don't think leetcode is that difficult all things considered so a system based on leetcode is just not that bad in my opinion. It's really not that difficult, there is a set of 15 or so algorithms that are all 40 or so lines long and you just need to memorize them to the point of instant recall. Now you can get hired almost anywhere.

So in those 15 minutes, how do you know this person is able to write good code? How do you know they are not just riding on the success of their former colleagues, and bullshitting you with high level responses they heard their colleages talk about?

How many people did you interview and hire?

Just asking since I interview and hire a lot of people, and find it very hard to asses someones capabilities.

That question works both ways:

In those few LC questions, how do I know the person can write good, maintainable, reliable software with a team of engineers and didn't just learn for the test?

Yes, interviews are hard. Assessing a persons capabilities is a difficult job.

> In my experience, I can gather more information about a candidate's ability in just 15 minutes talking 1 on 1 with them rather than hours of Leetcode busywork.

You think you can gather more information. I doubt that your decision is more accurate than leetcode interviews on average.

I've done over 800 interviews, and I call bullshit on this.

I've spent 30min talking to candidates about their projects, experience, tech they used, choices made, etc. and been super excited and positive about them.

Then I ask them to find the intersection of two lists in better than O(n^2) and they completely fail to write functional code in their preferred language in the next 30 minutes. This isn't even "leetcode" level of challenge.

If I'm hiring you to be a professional software engineer for 6 figures income to spend 8-10 hours a day designing, writing, and debugging code, you need to be able to write code.

The disparity between the conversation and the coding performance can be significant, and both need to be evaluated.

If there's a better way to evaluate if someone can write code, I'm open to try it. But take home tests, portfolios, pair-programming, "a day in the life", etc. all have their problems and disadvantage different groups.

Aren't these shitty interview processes just gates and proxies for commitment and a dark pattern per se? If someone is willing to do the work and endure the shitty process to get the job then they must be committed to get the job and will likely be committed to keep the job.

That commitment can be exploited.

It's like Nigerian Prince scams, those willing to jump through the hoops are more easily to convince and get jumping through future hoops.

It's also likely they will rationalize that their job is great because they had to do all this shit to get it. The employer could think "if we can get their foot in the door and convince them to fully enter the room even though we make it difficult to fully open the door, they're less likely to leave and more likely to fight to stay in the room." It keeps uncommitted folks out, but doesn't necessarily filter for competent people, just committed people.

Cognitive dissonance is a powerful thing.

In my experience, a broken HR indicates a broken organization. Yes, you can hunker down and focus on your field and move on in a while but I can’t, usually.

As to shitty interviews. I was approached by Google for a non-programmer role a few years back. Failed the coding part as I’ve not been a professional programmer for a 20 years, despite being able to write all the code that I need for my research. Was told they’d be in touch for a development program as I’d apparently aced the rest of the interview. Never heard anything. Was approached again after a while and I agreed under the condition that there was no coding interview - I knew I had failed that and was going to fail again. Was assured there’d be no coding interview. Only to have one scheduled immediately.

So an organization that manages what’s probably the largest information system on the planet cannot for the love of their life implement a simple sales lead process? Why? Because they fundamentally do not care about you.

Not going to lie, I actually like Leetcode style interviews. What you put in is what you get - you know how to control your own outcomes, and that's by putting in the time and work to study for the questions.
People shouldn't have to cram little tricks and algorithms into their brain just to pass a Leetcode challenge; that's the point. No real-world programming career is driven by such pointless exercises.
I would think that real world programming careers are affected by someone's ability to remember information and put in effort, and that's demonstrated by the time spent to study for the little tricks and algorithms that go into passing an interview. I think it makes things a lot less subjective - you put in the time, you win.
I don't think that expecting prospective developers to spend lots of unpaid time on a skill that's ultimately not going to be useful to the vast majority of them should be normalized.

Do you expect medical doctors to do an unpaid "trial" surgery as part of their interview? Do you expect lawyers to litigate a case for free before they'll be considered for a job?

As far as I know software engineering is the only field where in addition to experience & education you have to waste time gaming the interview process. Every other field seems to get away just fine hiring based on experience and/or education.

Yes...but the bar to entry here is also a major factor. Doctors and lawyers in part have already been vetted by lots of crap before even qualifying for an interview.

How much of the content on the MCAT is "useful" for a doctor's daily work? I would argue that the majority of it is moot. In the same vein, the LSAT has a lot of "useless" logic puzzles that aren't applicable to their daily work as a lawyer. Fact of the matter is, we're lucky in tech to have this system that ANYONE can study for "useless" shit, doesn't matter your background, what college you went to, etc. If you get the interview and nail it, you're in.

For junior developers algorithm questions is a test of their technical talent. For senior developers algorithm questions is a test of their soft skills. Most companies are happy that it helps them filter out diva behavior.
It was common ten years ago. It was still possible in 2015 or so, at least in "B-round startups". I was still asked about my relevant previous experience. In hindsight, I believe people like me who ended up in companies like that were already trading down significantly. Or I have never been as smart as I thought.

My experience in the last year or so categorically states that leetcoding is the only game in town in CA. I hate it, I am bad at it, I find it humiliating and irrelevant. I was told by Asian teenagers that I am not good at coding after 20 years building software. I have failed multiple interviews because of dynamic programming&Co even at companies where I had a decade of highly relevant experience. Nobody ever wanted to hire me for my production experience with all of Scala/Kotlin/Java even though I routinely meet companies where they don't use Scala/Kotlin because of hiring difficulties.

It's just the way it is nowadays. The world is getting progressively crazy. If you're in a position to not accept such interviews I envy you big time. I don't see it happening even in smaller (i.e. not-FAANG compensation) companies though. Some European/remote companies occasionally give you a home coding challenge. But they are an exception.

I personally like these questions a lot and I've used them in the past when I was tasked with hiring people because it basically boils down to a few things. One is that people who have a good grasp on algorithms, math or academic problems generally are pretty smart, and you can teach them practical coding skills very quickly while the reverse isn't true. so it's sort of like a IQ test.

Secondly it rewards people who at least put the effort in to prepare for an interview. These questions are a very reliable way to eliminate candidates.

And to take the journalism example, I actually think that'd make a pretty solid test because if a journalist doesn't have a basic grasp on formal language I would have to reconsider how strongly they're committed to their craft. It's honestly only the case in software, an engineering discipline to boot, that people question the necessity of being able to solve basic theoretical problems. Would anyone trust a civil engineer who can't answer first semester math questions?

I guess it all boils down to who you are hiring (the OP is talking about hiring senior developers). It is ok to ask more technical questions to fresh graduates as they don't have any other experience anyway.

> it rewards people who at least put the effort in to prepare for an interview

Is this a good thing? Would you rather hire smart people, or people who studied a few leetcode questions the night before the interview?

> Would anyone trust a civil engineer who can't answer first semester math questions?

Civil engineers use that knowledge in everything they do. A really small subset of developers need to implement tree traversal algorithms from scratch on a daily basis.

Take a step back and see how this leads you to miss out on plenty of candidates who could do the job, at the end of the day. These sorts of tests really just optimize for hiring people with time on their hands to study this stuff. Right off the bat having a heavy leetcode requirement probably excludes people with families or dependents, people with hobbies, or people who want to do anything after the bell that isn't staring at more code on an electronic screen.

I also think its a little backward to expect the candidate to be doing very much prep work in advance of the interview. They are in all likelyhood currently employed fulltime and busy with their life outside of that.

Instead I would focus on simply seeing if the candidate would be interested in the sort of work they would be doing, and giving as much detail as possible on what the job would be like for them. Job listings and corporate websites are often very opaque. It's one thing to get someone competent, but if they hate the job they will be gone in a year and you will be in the exact same place as you are today. If you get someone who might not know all the required tooling, but is very interested in the work being done, they will step up and be one of your most prolific employees before long and contribute to lasting institutional knowledge within your organization, rather than running off with their skills as soon as someone dangles a better paycheck in front of them.

BTW, IQ tests are, even if occasionally legal (seems they aren't necessarily illegal, but sometimes illegal in the USA depending on circumstances), are pretty unethical given that IQ is poorly correlated with what you're trying to measure (G), but it you don't trust me, trust Nasim Taleb: https://medium.com/incerto/iq-is-largely-a-pseudoscientific-...

You should not be trying to approximate an IQ test (and leetcode does exactly this).

> One is that people who have a good grasp on algorithms, math or academic problems

And can you guarantee that this is what LC questions test for?

We are talking about questions here were the answers are known, their usage for interviews is known, and curated lists of questions commonly used for interviews exist .

So yeah, they may test for a good grasp of algorithms, data structures and math.

But they can also just be memorized and replayed at will given enough time.

I have interviews lined up with google and coinbase which both are going to ask leet code style questions. I'm going to go through it just for the promise of more $.

Even if it is annoying to spend hours and not get an offer, I can see why they ask these types of questions to see your problem solving ability first hand.

I would expect any decent engineer to be able to solve leet code style question, or at the very least be able to model the problem reasonably well and give a recurrence. Even if the code contains errors or there's missing edge cases then it allows you to see how someone approaches a problem.

Leet code style questions are basically a bunch of combinatorial algorithms. Even if they seem like a different trick each time there's general techniques that can be used to approach each problem.

I still like to ask somebody if they can code a basic algorithm just to see if they can code at all.
Better advice: Leetcode is easy as shit. Suck up your pride and be good at it. You’ll rake in money getting companies to fight over you. I had a $670k offer that’s appreciated to $1m/yr. The company I joined didn’t ask LC, but it still mentally prepared me for the questions I got.
You are absolutely right from your angle, but this is the perfect example of why the process is wrong. Nobody should be using something as trivial as leetcode to choose people they are willing to pay $1M.
How else do they decide? They’re doing a behavioral round, system design, manager interview, etc. But being able to implement, traverse, and analyze complex data structures and apply them to a problem is essential.

There’s a class of delusional people who think a GitHub profile is sufficient. Outside of a minority of technical influencers that is absolutely wrong and unreasonable.

This comment must be satire, or peek hubris. Please tell me you are joking. I hope N-gate writes a bit about this comment, or about me for not clearly knowing if this is a joke or if it's real.

If you're not kidding, you are so delusional that I don't even know where to start.

If you are kidding than to did a damn good job!

I sympathize but I'm not sure this is the hill to die on. As a potential employee I'm looking for the best company to join for myself, and the likelihood that I will enjoy working somewhere has very little correlation to their recruiting/interviewing practices. So if I want to work somewhere I'll jump through their hoops (within reason), but I'll also be keeping an eye out for red flags from engineers and managers I talk to, because the downside of an annoying interview that is not to my taste pales in comparison to the downside of accepting a job and then discovering the work environment is a tire fire.
I prefer interviews that ask leetcode questions because they are standard. I can prepare once and interview with multiple companies. The alternatives are take-home projects, pair-programming sessions which in my opinion are very subjective and more time-consuming.