Brian Lovin
/
Hacker News

Poll: Is the leetcode grind necessary to land a high paying remote job?

I live in western Europe.

I've worked for 4 different companies, for European salaries, without doing any leetcode type interviews(I ditched any company that was doing it), it was either take home tests about real problems, technical questions, or sometimes just trust in my abilities given my previous experiences.

I've never really trained for leetcode(or not consciously at least, I did do a bit of algorithms/data structures of course), mostly because I know that I would panic and perform poorly in this kind of interview, so I don't really see the point of practicing for that.(it's not really about whether or not I can solve a hard leetcode problem, it's about if I want to do it live in front of a recruiter, it make me anxious just to think about that and I don't want to inflict that on myself), I'd much rather have a hard take home test than an easy leetcode interview.

+If I have to spend a few hundreds hours of hard work on something I'd much rather work on an useful and potentially profitable side-project, rather than on pointless problems already solved thousand/millions of times.

Do you think grinding leetcode is an absolute necessity to land a good job at a company hiring worldwide remotely? I'd be aiming for salaries around 80-100k$. In my country the only companies paying that are FAANGs.

Thanks for your answers

Daily Digest email

Get the top HN stories in your inbox every day.

cebert

I believe leetcode is a way to skirt around discriminatory hiring practices. It’s not at all representative of most work environments. Some want to pretend they’re cognitive wizards, but many of the algorithms used to solve problems took years to develop. If you haven’t seen a particular problem before or had time to research it, it’s unrealistic to expect a candidate to solve it in twenty minutes in a high pressure situation. This process benefits individuals who have the luxury of time to spend preping. Something minorities, working parents, etc. don’t have.

I’ve been a software engineer and now architect for 15 years. Studying leetcode like problems won’t help me at my current job or a future employer once I get past their interview processes. What leetcode does do is make it difficult for minority candidates, those with external obligations, or those with families to get into firms. For example, I work 50+ hours a week with two kids and a parent with cancer. I work hard at work and have a lot of external obligations. I don’t have time or to study leecode problems.

snth

It's just as easy to argue that leetcode-style interviews are because companies are afraid of being discriminatory in hiring. If you aren't allowed to consider culture fit (because it's discriminatory) or education (because it's discriminatory) or give take home work (because it's discriminatory against people with time constraints) or trust your feelings in a qualitative interview (because they're discriminatory), what can you do? Solving real engineering problems takes too long for an interview, and full-day interviews are also discriminatory against people with time constraints. You can candidates give some automated algorithms problem solving test- that's what you can do.

ryandvm

If leetcode is intended to avoid discrimination, in my opinion it fails miserably. As the parent poster mentioned, it certainly rules out people that don't have the resources to study, but it also rules out another class of people prone to panic disorders. I'll share my leetcode horror story to illustrate.

At the time, I had been coding for 15 years in multiple languages. Out of the blue I got poked by a Facebook recruiter and on a lark decided to go through the process. I made it through the phone calls and screen-share coding sessions just fine. I went onsite and had a several interviews that went swimmingly.

Then near the end of the day, I ended up getting a whiteboard coding challenge that involved pretty simple array manipulation and my brain absolutely locked up. In retrospect it was comical, but at the time it was incredibly humiliating. There I was just alternately staring at the whiteboard and the interviewer with what I can only imagine to be the most hopeless expression. My brain fog absolutely impenetrable.

At this point in my life, I'm fairly familiar with the condition. Basically for some random reason, the thought pops into your head just how disastrous it would be if you failed at this thing you're being asked to do. Then your consciousness inevitably becomes obsessed with this thought and it's all you can think about. You start panicking and soon you have absolutely zero mental bandwidth to accomplish the task and your mind is basically singularly focused with getting out of this terrible situation. It sucks.

So, I'm always a little annoyed when I hear people say, "what's the big deal with a little leetcode?"

I mean, I get it, if I actually could not solve those problems, I would not be eligible for the job. But the reality of whiteboard leetcode is that you're not screening for people that can code, you're screening out people that can have panic attacks. In my opinion, it is borderline disability discrimination.

Dig1t

>You start panicking and soon you have absolutely zero mental bandwidth to accomplish the task and your mind is basically singularly focused with getting out of this terrible situation

This is such a relatable description.

I don't think you even need a panic disorder to have this happen to you, this has happened to me a handful of times and it's absolutely the worst. It really is humiliating, totally ruins your day and you end up kicking yourself for several days after. I think this is just something that a lot of people do, like stage fright or something. The only way I know to avoid this is to do a lot of interviews with different companies that you don't really care about to get more confidence before you finally do get to the interview you care about, just so you don't choke during the one you want.

gopher_space

Meanwhile on the job nobody is surprised or angry if you need to look up basics because they know you have five languages under your belt and are actively using three of them.

comprev

I experienced this recently in a surprise 'shared screen' coding exercise the interviewers threw in at the last minute.

I couldn't even remember how to write a for loop in bash, something so familiar it would be like asking me to recite the alphabet. Utterly humiliating yet comical experience looking back.

abootstrapper

> Basically for some random reason, the thought pops into your head just how disastrous it would be if you failed at this thing you're being asked to do. Then your consciousness inevitably becomes obsessed with this thought and it's all you can think about. You start panicking

This happens to me all the time! You’ve described it so succinctly. How do you cope?

tareqak

This topic of “is leetcode necessary?” and the more general topic of software engineering hiring practices appear regularly on this forum, but this time is the first time I am seeing someone mention panic disorders/panic attacks as part of the interview process. Other people might have mentioned it before here, but I do try to peruse the threads that relate to interviewing.

I am really grateful that you brought up this point as well sharing as your own experience 'ryandvm. My own experience when I fail to think of an answer to a leetcode question is extremely similar if not identical. I would add that my own experience is always a silent panic similar to how I experience going on a rollercoaster. Many people will scream out loud when they are going down a rollercoaster; I just clench the safety/restraining bar really, really tight and look onward while clenching my teeth. I am surprised that it took this long in my career to hear similar feelings expressed by someone else, but I am grateful that it did.

Thanks again 'ryandvm! I really appreciate it.

Godelization

If you as a hiring manager have the choice to pick between two candidates, one of whom stays cool and productive under pressure, and the other who goes blank in emergencies, which would you prefer to have on your team? Stressful situations can occur in software engineering, including for example a moment where you realize production services are broken because of code you just deployed.

camgunz

> In my opinion, it is borderline disability discrimination.

This rings pretty true to me, thank you for sharing your experience.

vmception

> Basically for some random reason, the thought pops into your head just how disastrous it would be if you failed at this thing you're being asked to do.

Like a driving test and the training with parents/adults beforehand.

Even with some judgmental/skittish passengers its the same.

vsareto

>what can you do?

We need a credential that counts as passing a technical interview, so we don't have to take these tests for every single job that we apply to.

If I pass a coding test, stay at a company for a year, then apply to other companies, I'm going to subjected to coding tests even though I just passed one only a year ago. It's like companies are afraid that programmers will spontaneously forget how to program.

A credential's test is not limited by the very time constrained format of interviews. This means it could ask more questions to reduce false positives. People would be willing to invest time because it saves them the hassle of interviews in the future. A centralized testing entity could work to reduce cheating instead of every company having to do that themselves. Plus, administering this test would be full time jobs for folks, so it would likely be a higher quality test than what most companies give.

SteveDR

> If I pass a coding test, stay at a company for a year, then apply to other companies, I'm going to subjected to coding tests even though I just passed one only a year ago.

Well it’s not like the company you’re applying to has access to the test results from the company you’re leaving

> It's like companies are afraid that programmers will spontaneously forget how to program.

To be fair, I think most leetcoders agree that you need to practice regularly to keep your skills up. So if the point is to see how good you are at thinking algorithmically for the job you’re applying for, it makes sense that they’d want to see recent test results.

davidgay

> We need a credential that counts as passing a technical interview

So we could call that a degree? And have institutions that specialise in testing for it? And because some of those institutions will be better at measuring this, we could rank them?

I thought most people complaining about the current approach didn't like this one either.

pmontra

I think that most people here are mistaking the finger for the moon. If discrimination is really the reason why we have this kind of interviews, the problem to solve is discrimination and not the hiring process that is attempting to fix it or to hide it.

A qualitative hiring interview would be perfectly fine if the interviewers had no discrimination in their minds. The real solution is having minds without it. It's probably a goal hard to achieve with grown up people. Easier with newborns. So any solution starts from their parents, grandparents, etc and will stretch over many generations. Education, mingle with people from every origin and background, etc, pick your favorites.

How many generations? Limiting ourselves to the USA think how long it took for women to get a vote since the Constitution and for an Obama to become president since the end of slavery. We can hope that the trend is accelerating but who knows what's going to happen next. The state of the rest of the Western world is not so different.

This is the optimum. Now the good because there will be interviews to do this year. Any stop gap solution would do but don't invest too much into it because if you don't remove the real problem any fix will be worked around.

irvingprime

No. One of the reasons those leetcode interviews happen is because existing credentials, such as a bachelor's degree, don't work. Adding another one that some hirers will value highly and others will be skeptical of doesn't solve anything.

What we really need is for companies to stop trying so hard to find the absolute best most perfectest candidate that they screen out huge numbers who could have done the job but who missed some arbitrary keyword or coding test by a fraction.

adbachman

> We need a credential that counts as passing a technical interview

This idea already exists in many forms. Pick any language, platform, or technical concept and there's someone offering training and certification.

It also describes the whole recruiting industry. "What if there was one person who did a lot of interviews and then presented just the best people to employers?"

It's an extremely human incentive alignment problem. Any certification program, interview farm, or bootcamp that makes more money when they produce more candidates will make quantity the goal, not quality. If you can figure out that problem, maybe there's a niche. Otherwise, it puts us right where we already are.

jjav

> We need a credential that counts as passing a technical interview, so we don't have to take these tests for every single job that we apply to.

We could call this a degree, perhaps in computer science?

This seems like an excellent idea!

Unfortunately my CS degree from a very-top school (CMU) counts for nothing in so many companies.

chrismcb

But they do forget how to program. Or maybe they never knew and got lucky to get the previous job.

cma

Why don't they just use the computer science GRE?

managerclass

If the true purpose of algorithm tests was to be non-discriminatory, the interview and interviewee should not be able to see each other, their voices should be masked to hide nationality/accent, and resumes should not be viewed when solving the problems. I assure you I can still discriminate against a candidate both consciously and subconsciously during a live algorithm question now.

I guess one upside of these types of interviews is I've been able to disqualify candidates just because I don't like them and saying they didn't do well on the algorithm question as justification is a easy way to reject them without much explanation.

And what about every other field that doesn't use leetcode style interviews? Does a biotech company make their interviewees do lab work live? What makes software engineering so special that we need a different interview process?

novok

I don't think that much thought has been put into it IMO. It's cargo culting the google interview process, and no standout success since google has a very different interview process to cargo cult copy.

Google had this process because they are very academia inspired and want to hire the best academics, with a college campus but better work experience, because they had very high back end scale requirements, where algorithms do matter. They also had a shit ton of applicants and favored the false negative over the false positive, which they explicitly and publicly state. You might be able to argue that scale doesn't matter as much at google anymore, but google has no reason to change its process since it first established it, and back then they really had those hard scaling problems to scale up.

The reason why the software profession tends to have extensive interviews is because we don't trust credentialing or even prior experience. [0] We don't want to hire the unskilled bozo who can talk and have brand name credentials but when you actually put them to work find they are not that good at all. So we actually test their skill as directly as possible with various forms of work sample testing with as long as an interview process the market will tolerate, which has stabilized to 5 - 7 hours, or an entire working day.

The beauty of this is that you don't need to get into a med school equivalent with it's crazy requirements, spend 10 years-ish of training and go into 6 figures of debt, get a residency / hazing ritual in a few limit slots in the USA and can come from almost any poor background or country even and eventually make more than most surgeons. In that light, needing to spend 3 months to hard core leetcode doesn't seem so bad.

[0] https://blog.codinghorror.com/why-cant-programmers-program/

Aunche

It's very rare that people intend to be racist. Rather, they have intuition of what a "good programmer" is in their head, which is subjective, and thus more likely to be discriminatory. If you give them an leetcode question and a rubric to grade their performance, it's hard to deviate from that rubric to much unless if you're intending to discriminate.

>Does a biotech company make their interviewees do lab work live?

Not biotech, but according to my cousin, pharmaceutical research interviews are even more arbitrary. He had chat with 5 employees who asked questions about their own rather esoteric specialties. Most of the questions were completely unrelated to the work that he ended up doing, and my cousin thought that the interviewers themselves were unlikely to be able to answer each other's questions. Unlike leetcode, this isn't something you can predictably study. It just so happened that the labs my cousin had worked in happened to specialize in those same niches. There are so many qualified postdocs that want to move to industry that interviewers can afford to be picky.

analyte123

It is common for up to mid-level jobs in finance and consulting to require doing on-the-fly modelling and analysis in Excel. I am pretty sure things like structural, mechanical, or chemical engineering also have substantial technical components to their interviews. While it is not done directly by the employer, board certification for doctors entails 8 hour long tests. Similarly, tradesmen like plumbers and electricians require in-depth written and practical tests for licensure. You can definitely dispute the practicality of these for the job vs. leetcode, but I really don't think that the rest of the world is getting jobs with a resume and a firm handshake.

biztos

> What makes software engineering so special that we need a different interview process?

The combination of absurd profitability (of which the tiny slice allocated to employees still seems like a lot) and a complete lack of any actual objective measure of quality.

Because there's no way to really test whether someone is good at programming other than hiring them and seeing how it goes, and because there is an effectively limitless amount of money to spend trying to organize a "solution" to this problem, and because learning enough about each candidate to make a properly educated guess doesn't "scale" enough for fast-growth companies, senior management has plenty of room and lots of incentive to look like they've got it figured out.

For some, this is following their creative whims; for most, it's "do what FAANG does because it must be working, look at all the money they make."

Anyway that's my opinion on it. If I ever have the power to change hiring at any large scale, I'll probably follow my own creative whims and make it even worse.

jackblemming

https://news.ncsu.edu/2020/07/tech-job-interviews-anxiety/

Here's an actual study with real data. All women failed the leetcode challenge when grilled (probably by a man). They all passed when allowed to do it in a low stress environment.

lhorie

Interviews are, by definition, a way to discriminate candidates based on some criteria (using the dictionary meaning of word here). There are certain classes that are illegal to discriminate against (e.g. religion, ethnicity), but things like education are totally fair game. Airlines, for example, use physical fitness as a discrimination criteria under the rationale that a flight attendant must be able to function in the rare event of an emergency.

Just because a criteria doesn't match one's notion of "fairness" doesn't mean it's inherently a bad criteria. If Google wants to only hire people that are good at cracking leetcode and that ultimately leads them to have their current reputation of being out of touch, that's kinda on them.

TimTheTinker

I think the problem here is that any criteria you use to choose one person over another is discriminatory -- that's the dictionary definition of discrimination: the choice between multiple competing options.

The problem isn't discrimination, it's unfair discrimination -- that is, discrimination on the basis of something that should have no bearing on a decision to employ someone.

Any criteria you choose will rule out people who aren't able to optimize for those criteria for whatever reason. I believe that's OK, as long as you are aware of the tradeoffs and try as much as possible, in good faith, to minimize unfair criteria while maintaining those criteria that help you hire people who have the best ability (or potential ability) to do the job.

aw9f70gae

In that case couldn’t you give an automated test that more pertains to the job requirements and the applicants’ prior experience?

dahfizz

Giving each applicant a tailored test also opens yourself to allegations of discrimination.

As for leet code vs an actually relevant test - I think this is probably laziness on the interviewer's part. Coming up with a good test (and keeping it up to date) is hard, and leet code questions are "good enough" to filter out the people who don't know what they are doing. Remember, most companies are fine with a high false negative rate if it keeps false positives low.

PragmaticPulp

> It's just as easy to argue that leetcode-style interviews are because companies are afraid of being discriminatory in hiring

From the hiring side, this is 100% correct. Giving everyone the same coding interview is one of the most effective ways to remove interviewer bias.

A lot of HN commenters advocate for a “just trust me” hiring process where they want the interviewer to just read their resume and have a quick chat to decide if the person should be hired, without any type of technical interview. That results in people hiring other people who are as similar to their own backgrounds as possible (everyone likes to think their own background and learning style is optimal).

We know LeetCode style tests aren’t perfect, but they’re repeatable and the study material is free and widely available.

> or give take home work (because it's discriminatory against people with time constraints)

IMO, this complaint is baseless. A lot of companies give the option of LeetCode style interviews or take-homes and almost everybody chooses the take-home.

The idea that someone can allocate several hours during their busy day for a live interview but somehow can’t find several hours during the week for a take-home doesn’t even make logical sense.

mabub24

> Giving everyone the same coding interview is one of the most effective ways to remove interviewer bias.

I'm sympathetic to the hiring side argument. But, I don't think the parent comment is insinuating that no technical question or test be asked of the applicant. They're not insisting on trust, they're insisting on showing their own intelligence. They're saying that the test or technical question should be directly applicable to the job at hand, for the company at hand. You can just as easily ask every single person who applies the same specific questions for the role at hand in your company. You don't need to rely on generic leetcode questions if they don't specifically apply to the job at hand.

In other words, hiring needs to actually be specific and targeted rather than adopting the "cast a wide net and catch whatever we can" strategy that many places seem to employ.

9/10 it feels like the insistence on leetcode from hiring comes as an excuse for rather weak recruiting standards and practices.

mattkrause

Leetcode or "just trust me" feels like a false dichotomy.

Biotech interviews, for example, are usually conversational: what have you worked on before[0], how would you tackle this new problem, or troubleshoot a particular problem. There's this persistent meme that charlatans can BS their way though such an interview, but I really don't see how someone could learn enough to parrot their way through 4-5 x 45 minute meetings, often with fairly probing questions. It felt quite a bit like a thesis defense, in fact.

It's true that these aren't "repeatable": each applicant won't have exactly the same experience. This is "unbiased", in a sense[1], but has enormous variance: you're not only testing the applicant's aptitude, but also whether they've encountered this particular problem before. OTOH, tailoring the interview to each applicant' strengths might inject a little bias in exchange for a massive reduction in variance.

[0] It does help that candidates for these jobs had masters/PhDs, and therefore had at least one project they could discuss publicly.

[1] But not really...There's a subjective element to "code quality", fluency, whether the applicant wrote "enough" tests, etc.

rebeccaskinner

> We know LeetCode style tests aren’t perfect, but they’re repeatable and the study material is free and widely available.

One of the things that gets me here on the hiring side is that the ease of “grinding leetcode” as a strategy seems to defeat the entire purpose of it as an interview question. I don’t want to dismiss the value of someone being able to study a skill and learn it, but I see a lot of people fixated on rehearsing leetcode answers like they were magical incantations you recite to get jobs, there’s not always a lot of real learning happening. That’s not reflective of the kind of candidates I’d want to hire or the peers I’d want to work with.

> A lot of companies give the option of LeetCode style interviews or take-homes and almost everybody chooses the take-home.

If true I’d like to see more of this. No hiring process is good for everyone and I think flexibility can be a better way to make a process fair, but I haven’t seen much of it personally. I don’t think I’ve personally gotten a leetcode problem at an interview in years- takehome problems have been the more common screening tool, but I don’t think I’ve ever been offered a choice in the matter.

> The idea that someone can allocate several hours during their busy day for a live interview but somehow can’t find several hours during the week for a take-home doesn’t even make logical sense.

I’m not sure this is entirely on the mark. On problem with takehome a is asymmetry. Most take home assignments I’ve gotten have come toward the end of an interview process, and there fine, but when I talk to more Junior folks it seems like they are often given hours long takehome problems before they ever talk to a human. That seems disrespectful of peoples time- it’s a lot to ask from someone who doesn’t even know if they are a fit or want your job yet.

In any case the hours long takehome is usually in addition to an bourse long set of interviews- not in lieu of them. Another common problem pre-Covid was that a lot of people just weren’t set up to work from home so it was harder to get the space and time to work on a project at home. I expect that’s probably changed a lot these days though.

snth

> The idea that someone can allocate several hours during their busy day for a live interview but somehow can’t find several hours during the week for a take-home doesn’t even make logical sense.

I personally like take-home problems. It's hard for an employer to time-box them without resorting to basically leetcode though. I know that, as a student, I definitely spent many hours on them.

willcipriano

> A lot of HN commenters advocate for a “just trust me” hiring process where they want the interviewer to just read their resume and have a quick chat to decide if the person should be hired

That's how your manager is going to be hired, as well as all of his bosses on up.

fallingknife

The issue with take homes is that they are at the beginning of the process where you might have hundreds of candidates. I won't invest several hours in that. Whereas on-sites are the last stage in the process, so it's better than 50-50 that I'll get an offer out of it. So in that case I'm happy to take the time.

throwaway2037

Ace Greenberg from Bear Stearns (former US investment bank) used to say the trouble with hiring friends and family: "You get 100% of the dummies." Sure, you get a few good ones, but you also get the lousy ones.

Dave3of5

Yeah I agree I'm similar to you in that I'm a parent with 2 kids 16 years exp and these leetcode tests kick my butt.

The companies making you do this though likely don't want someone like me. They want someone young who will burn themselves out working 80 hours a week for them.

So I guess it's a good filter for me as well.

sockgrant

Facebook and Google don’t expect 80 weeks and they do leet code interviews. I’d think most people do 40 hour weeks there.

squidlogic

I'm doing the hiring for a small company. We do coding tests as part of our interview process. I know it can show false negatives but it rarely shows false positives (wrt coding ability).

However, we don't ask employees to work anything like 80 hours a week. In fact, we track overtime hours (> 40hrs/wk) and pull the red "panic" lever when it goes above a threshold as a control for burnout.

But like you said, you're applying a filter too (if no coding test -> low overtime required). It probably has false negatives (my company), but it's worth it for you because you have found that it rarely shows false positives.

pawelmurias

Almost nobody would stay productive coding 80 hours per week.

danlugo92

Almost nobody is productive past the 30 hours a week stage (excl meetings and lunch hour and whatnot).

qwytw

Ignoring whether leetcode itself is useful or not. Do you believe it's inherently unfair to discriminate in favour of people who dedicated more time to e.g. studying CS theory, contributing to open source projects, working on hobby projects, earning advanced degrees etc. ? All of those things require time and money (in opportunity costs).

cebert

No, I think those are great ways to stand out and demonstrate interest and side projects and degrees are more representative of actual work. Leetcode itself though seems to be used as a gatekeeper benefiting those with the luxury of time to do the grind. It doesn’t mean you’re necessarily getting more qualified candidates and are possibly excluding some folks who would be more than capable.

colinmhayes

Finding people with too much free time is the entire point of leetcode. Companies want employees who will dedicate their life to their work. If you don't have time to grind leetcode employers feel that you won't have time to work 60 hours a week and spend your free time thinking about work.

datavirtue

There are boot camps for developer interviews now. The practice is bad and it is inhumane. They will eventually go the way of other unintended gatekeeping disasters like the standardized high school/college tests.

The practice is just a veiled hazing ritual meant to strip you of dignity and agency.

If it isn't meant to do that...well, guess what? That's what it is doing.

And if I study real hard and maybe take a boot camp, I can join one of the illustrious paragons of internet virtue such as Facebook (sorry, meta block chain addicts inc.) or Google to spread ad-tech throughout the known universe.

wayoutthere

I do think it’s inherently unfair that high-paying jobs are placed behind arbitrary leetcode gates. Dedicating time because you’re passionate is great, but I’m not here to feed your hobby. My experience is that people who dedicate lots of time to development outside of work burn out around the senior engineer level because they never get to use the cool techniques they play with on their own time.

Most development jobs require very little CS theory or hobby projects to do the actual work. Most of what software engineers build are glorified CRUD apps. What those things tell a prospective employer is that you’re willing and able to grind yourself to the bone.

Case in point: I’ve been hiring people from local minority jobs programs for entry level dev roles. Yes they’re green as heck (usually just a coding bootcamp) and we have to handhold them for a few months, but it gives mentorship opportunities to our mid-level devs and after 6 months of project work you’d be hard pressed to tell the difference.

Not everyone can take a couple years off work to go get an advanced degree. These jobs are not so hard they require one. Credential inflation is out of control, and trying to hyper-optimize individual achievement often ends up building poor teams. Give me someone with good work-life balance and priorities outside work any day.

datavirtue

"people who dedicate lots of time to development outside of work burn out around the senior engineer level"

Word. I left the industry to sit around my farm and raise my kids for about ten years. When I came back and started working with people I was shocked at how long it takes to learn anything about tech on the job. I was working on my own trying everything while I was away.

I noticed that my "senior" co-workers who had been working the previous whole ten years knew far less about the inner workings of the various tech they used daily than I did. I would rattle off something and expect a comment or answer and would repeatedly see architects and lead devs freeze up. I watched as they completely botched implementations simply because they didn't read the manual. The surprises were many because they used the same mental model to understand everything.

One implementation with a vendor required socket programming. They snapped and threw up their hands immediately in a big huff. I pointed out that C# had libraries to support that and that it was fairly trivial and probably way more fun than consuming a HTTP API. It took a few of us to calm them down and get it working but the dev who was assigned to it continued bitching. They were incensed at having to program against a TCP stream. It was so easy and trivial (imagine a binary string the size of an encoded JWT). He fucked it up bad and blamed the network for weeks.

In another instance, they were having trouble selecting a protocol for an external message passing framework. After selecting one at random I started asking about the protocol, mentioning that it sounded like it was based on "remoting (RMI binary non-routable transport). They had no idea. That concept of not having any idea about the underlying libraries and tech they selected was spread across an entire project, causing many real life disasters.

This all worked out great for me because I got use my deep knowledge a lot to identify root causes and fix thier messes which led to mahoosive salary increases and bonuses.

These bros were trying to leetcode everyone they hired. I couldn't do fizzbuzz to save my life. Just not interested in it. Is leetcode a filter to make sure you can work on the same old boring shit without losing it?

mjburgess

You can discriminate on skills relevant to the role. The issue here is that these are extremely weakly relevant, but discriminate on features not relevant to the role.

The argument is that leetcode is a means to dress up the latter as the former. Prima facie, this seems plausible. I dont think it's racially/etc. motivated -- I just think interviewers like people "like them", and leetcode selects for "like them".

throwaway2037

Another way to look at it: If you were running your own small business, given the choice between a candidate who had more of "studying CS theory, contributing to open source projects, working on hobby projects, earning advanced degrees etc" compared to another candidate... which would you choose?

Hiring is not about absolutes; it is about relatives (local maxima). When you work at an "elite" company, you quickly realise that you don't need to be a genius. For each open role, there must be 100 qualified candidates. As a candidate, you need to be a more-than-a-little-bit lucky to get the role! How does the hiring manager choose? Start with a baseline. Then pick the best.

druadh

I think you're right that it's a filter in favor of people who are willing to waste more time for their employer. I don't think it's unfair, just a bad hiring practice.

Be curious to see numbers on burn-out rates between people who do practice leetcode to get hired and people who don't bother with it.

rmah

I'd argue that exactly the opposite. It allows those who don't look or speak a certain way to shine. It allows people who don't have good contacts and family networks to demonstrate their capabilities.

Our firm has every candidate take a quiz of five coding problems. Two of which are quite easy and the remainder a bit more difficult but none of them even approaching "leetcode" levels of difficulty. Even so, let's just say that most candidates don't do very well.

throwaway2037

I too am supportive of using LeetCode-style easy problems. FizzBuzz used to be all the rage, but dummies have memorised that now. :)

For a long time, I used an easy-to-understand, but hard-to-be-perfect interview problem: Please implement the classic C-function atoi() [string to int] in any language. (The candidate cannot use a built-in to do the parse!)

The best candidates immediately dissect the problem and start to ask about edge cases. The worst ask no questions and very rarely do a good job, and never think about test cases.

kitsunesoba

As someone who broke into the industry without formal CS education, contacts, or family networks and struggled to speak confidently and coherently in interviews, leetcode didn’t do anything for me except stress me out that much further.

I’ve been able to stay comfortably employed and even climb the ranks in software dev for 7 years now, but had it not been for the company that first hired me eschewing the leetcode in favor of practical exercises in their interview, I wouldn’t have gotten in until a couple years later at minimum, assuming the resources required to continue studying held out (I was extremely cash-bare at that point, so absolutely not a given).

Now that I have years of experience under my belt it’s not as much of an issue — lots of places want to hire me regardless, but if I really had to I could drill leetcode for a couple months to prep for an interview. Back in the early days that wasn’t really practical, though.

gameswithgo

Having been in charge of hiring a few times I can absolutely tell you that coding problems are not motivated by a desire to "skirt around discrimination". There is no need to skirt around it, we could just do it, via whatever method of interview you want to propose.

However I have seen the "leetcode" process defeat discrimination at least once in my career, when HR was assuming a black guy was not qualified but he was able to prove himself on the white board.

There are plenty of good critiques about the whiteboard process, many of which I agree with, but this critique is silly.

indymike

> I’ve been a software engineer and now architect for 15 years. Studying leetcode like problems won’t help me at my current job or a future employer once I get past their interview processes.

Perhaps. I've been building software for over 30 years and I still find that I learn a lot when I practice and push myself to work quickly and efficiently.

> If you haven’t seen a particular problem before or had time to research it, it’s unrealistic to expect a candidate to solve it in twenty minutes in a high pressure situation.

Someone just slipped a bug into production. We now have $12,399 per minute in transactions that will not be processed. CEO needs a report for a board meeting in 20 minutes. Junior dev didn't show up and four team members were waiting for the commit he was supposed to have in yesterday. Dealing with high pressure problem solving is really every day, and practicing against the clock is a great way to learn to be calm and focused when it matters.

> For example, I work 50+ hours a week with two kids and a parent with cancer.

So sorry that you are dealing with cancer in your family's life. Cancer sucks.

namelessoracle

If you have a major bug in production and have to report to the CEO in 20 minutes, all kinds of soft skills that you can show in interviews are going to serve you vastly better than knowing a leetcode algorithm.

fer

> Someone just slipped a bug into production. We now have $12,399 per minute in transactions that will not be processed. CEO needs a report for a board meeting in 20 minutes. Junior dev didn't show up and four team members were waiting for the commit he was supposed to have in yesterday.

While it's helpful to have rockstar devs that fix that kind of situation in 5 minutes, I'd say you still have to have boring people who test thoroughly, document properly, and have deployment procedures and rollbacks figured out, none of which is something you identify from a Leetcode type test; yet these practices which lower the chances for that scenario to happen in the first place.

vincentmarle

Hey Mr CEO, I have no idea how that bug slipped into production but I see you have a whiteboard here… let me show you how to invert a binary tree.

willcipriano

> $12,399 per minute in transactions

> Junior dev didn't show up

Why is the junior dev in charge of something so important? What were the senior people working on instead that was more important than this? Sounds like he cracked under the pressure. Where was leadership?

indymike

> Why is the junior dev in charge of something so important?

I think you are blending all of those problems together (there are three - hopefully not all of them at the same time... that would be a worst day ever). It's pretty normal that someone can't get to work, and you end up with a last second scramble to get something fixed. When something ships into production and is buggy, what matters is fixing it quickly.

The point is that most developers do end up having to work under pressure from time to time, and the higher up you get, actually, the more critical it will be.

cowl

The situation you describe is not what you face in leetcode. The key here is "a problem space not seen before". Bugs in production by definition are problems in a domain on which you are currently working and are familiar with. So yes in that case I would expect someone to work efficiently even under pressure. But a problem in a completely new problem space no. Someone may know for example that a presented problem can be seen as graph traversal problem but may be blocked for the moment on the actual implementation of it. This is a context switching problem and not a performance problem.

haspok

I don't think it is fair that you are downvoted, the parallel you are presenting is a real question, eg. how much does being good at leetcode correlate with being good at solving production issues timely and efficiently? (Even if real life production issues are _not_ leetcode problems, but nobody said that.)

I don't think that there are any conclusive studies covering this, so both sides might be correct for all we know.

vangelis

Sounds like an organization problem to me. Roll back to the last working state. You have CI right... right?

pfooti

Roll back prod?

indymike

What do you do when that fails?

300bps

Your comment reminds me of the video where they ask white people in Berkeley, CA if voter id laws are racist. They say yes of course they’re racist because African Americans don’t have id as often, don’t have as much access to the internet, don’t know where the DMV is, etc.

Then they go to Harlem to ask people what they think of those comments.

https://youtu.be/yW2LpFkVfYk

As for your claims themselves, In 3 months I studied 350 hours to pass the hardest test in finance while I was married, had three young children and worked full time. Nobody has time to do the things required to advance your career. You have to make the time.

For years, I also recruited and mentored students from an inner city bootcamp near me where the students spend 80-90 hours per week for 12 weeks learning software engineering. The vast majority of students are minority and there is fierce competition to hire graduates by local companies.

tzs

> Then they go to Harlem to ask people what they think of those comments.

Maybe they should have asked in one of the states that is actually passing restrictive voter ID laws, and that is at the same time closing DMV offices in minority areas, limiting the hours that DMVs issue IDs, and has nearly non-existent affordable public transit.

The might have gotten different answers than asking in a state that is pro voter rights, in a neighborhood that has a DMV office, and that has excellent access to public transportation if for some reason the neighborhood DMV is not available.

txsoftwaredev

How are all these people that are unable to get an ID able to finance a car, pass an apartment background check, open a bank account, buy alcohol, obtain govt. assistance etc?

In order for me to add my family to my insurance I had to provide identification for each of them, including a marriage certificate and drivers licenses for myself and my wife. All that just to get health insurance.

In order to vote you should have to identify yourself and that you are eligible to vote in a US election. It's complete nonsense that getting an ID in the US is just too much of a burden.

luxuryballs

Can you actually name a specific town/county that has this problem or is this imaginary?

jimbokun

In public opinion polls black voters strongly favor voter ids.

learc83

You can select people to display in your man on the street interview segment to make it look like the average American doesn’t know who the President is.

Regardless of what some people in Harlem think, data shows that minorities are in fact much less likely to have government ID.

https://www.brennancenter.org/sites/default/files/legacy/d/d...

300bps

data shows that minorities are in fact much less likely to have government ID.

The study you provided was a phone survey of less than 1,000 people that occurred 15 years ago. It along with other studies showing similar results were debunked by researchers at Stanford, Yale, and the University of Pennsylvania.

http://stanford.edu/~jgrimmer/comment_final.pdf

pbhjpbhj

Hmm. I dare say you could make the same video in the UK but not about race, instead about about how "poor people can't afford ID". But, statistically it's still true, and the people who can't afford ID are working one of their two jobs (or unemployed) not walking around town during the day.

Free, state issued ID is part of the answer but the opportunity cost getting to a photo booth (!) is still a surprisingly large inhibitor given the stringent requirements on photos. (I do my own photos at home, you have to have a reasonable colour printer, I edit on the computer but you could probably do it on a smartphone nowadays).

If people of a particular background are over-represented amongst the [very] poor (such as "White Irish" in the UK) then they'll be disproportionately disenfranchised.

nopenopenopeno

The claim was always about undocumented immigrants voting and the Democratic Party gave up on that because even immigrants started hating them lol.

inter_netuser

What’s the hardest test called?

300bps

Google "hardest test in finance" and the CFA exams are the first several pages of results.

cma

You could possibly make the same video about literacy tests used in Jim Crow. The key thing is having a racist outcome and then finding metrics to achieve it with plausible deniability (I don't find it plausible that leetcode was put into place like this, but for voting it has a long history).

cageface

It’s somewhat unhelpful to lump all the questions that leetcode asks in one bucket. I’ve been coding for 25 years and have never once needed to apply any dynamic programming methods. But I did some leetcode prep recently when looking for a new job and reviewing some of the tree and graph algorithms wasn’t totally useless because those things do come up from time to time in regular dev work.

62951413

I'm with you on this.

I don't remember much of algo questions before 2010 outside of actual GOOG. If anything, OOP design like "for a game of chess" were common in LNKD-like companies. And j.u.c-like real life knowledge.

I remember being asked to implement quick sort or reverse a list in 2010 or so. Then to do DFS on a graph or detect all connected subareas of a matrix in 2015. DP questions were so new I din't know what they were back then. I had interviews last year with two out of three rounds being DP puzzles.

I don't know about junior engineers but I want to go outside at least on weekends and not think much about computers. So the hours I have for "studying" can be spent either on learning something new and useful (Flink? ML? golang generics?) or memorizing this mindless leetcoding. I've done development for too long to have any interest in algo trivia or problems not based in real life situations.

fault1

I would say going further back in time, for example, MSFT during the early 2000s, the interviews were far worse, it was "fermi" types of questions (e.g, https://www.innovativeteachingideas.com/blog/an-excellent-co...)

Often the same thing in for example, typical wall street firms before 2008.

lfowles

That's fair, but you also don't usually get the luxury of telling the interviewer that you only studied the tree and graph problems so you won't be doing any dynamic programming questions they happen to ask.

fault1

Have you ever done much optimization or worked on solvers? DP tends to come up often in that type of work.

indymike

I moved into running development at my company two years ago - and one thing I quickly learned is that I had to do some level of skill verification with job applicants. Why? Because many of the applicants I was interviewing could breeze through anything non-technical, and would do well if we stayed on the happy path (i.e. show me things you've built, tell me how this function you built works). When I asked them simple questions like, what type will this python expression return (and yes there was -> int: in the signature, they would be incorrect.

So, I gave a few interviewees a code test, and they failed miserably. Mind you, nothing hard - it was a test can I give you a simple function to write, and can you 1) declare a function or class that accepts the right inputs, 3) does what the spec asks, and 3) has the correct output format. The test took 10 minutes to an hour, and was totally open book. The result was pretty staggering. 2/3 of developers would fail the test, and not for esoteric reasons. They would fail because they used the wrong boolean operator, make simple type-casting mistakes, or fail to return data in the correct type (i.e. return a string and instead return a bool or an int). When they failed, it wouldn't be just one thing, it would be two or three mistakes.

So, now I code test everyone, and it has nothing to do with your salary. If we expect you to program in your job, we will verify that you can actually string together 10-15 lines of code. I've only had a handfull of applicants call the test leetcode (I think it's a lot simpler than that), but the reality is there are just a lot of people who can't really code out there.

Draiken

I've had similar experiences to yours, but maybe this doesn't fit the leetcode people are complaining about.

We hire with a similar setup, but we try to keep the test extremely simple and close to reality. Something they would likely encounter on their day-to-day.

The majority of the developers fail at it. Senior, mid-level, juniors, etc. It doesn't matter. Which always surprises me. People who claim to have 5-6 years of experience can't even refactor some code. Or they can refactor and can't explain why they'd do it. It's bizarre.

But I would never classify this as leetcode because these are common tasks that any developer should be able to solve and not purely algorithmic questions that will rarely (if ever) be used in real life.

avgDev

If you have 0 passion for programming and land a gig at a corp that doesn't care about code quality at all, you could do that job for few years and just coast/do bare minimum.

I'm an IC and I could deliver software with all methods in a single class, nobody would care I think, as long as it worked as intended. I happen to like programming and as I am improving my skills every time I touch an existing project I look for things I could have done better. If major changes are being made, I often upgrade frameworks or do a partial rewrite to improve things.

I know people who just do stuff without trying to understand why. If I cannot explain why I am using dependency injection and what problem it solves, I am not doing it correctly.

seanbarry

I have had the same experience. Some things I've witnessed:

- multiple "senior" data scientists who cannot write a function definition in python

- a "senior full stack engineer" with 5+ years of web dev experience who took 20 mins to change the width of a div in a web app

- many "mid/senior level" full stack engineers who don't know the difference between sync/async, or have any clue about how the JS event loop works

There are so many candidates out there who have what looks like impressive CVs, but can hardly string a program together.

vsareto

Your first two are pretty bad (possibly panic induced), but the last one might not be realistic. You can rack up multiple years of experience working on low user count apps without knowing those things. You can still write Javascript and solve business problems without knowing those things.

But also, seniority doesn't determine if someone knows those things. If I asked you for a list of things I should know by the time I get to mid/senior, someone else will have different expectations. Everyone is kind of inventing their own requirements on what someone ought to to know at junior/mid/senior levels.

seanbarry

> You can still write Javascript and solve business problems without knowing those things.

It depends what the requirements of the role are. For some frontend React work maybe, but the engineers we were trying to hire would be working on APIs and processes that handle high volumes of streaming data. In that context using sync methods over async would significantly impact throughput.

When asked "why are you using a sync method here" the answer would often be "I want the code to pause here before the next line executes". It's a fundamental misunderstanding of what's happening under the bonnet that IMO is required for this sort of task.

Also - I agree that labels like "mid" or "senior" shouldn't carry a specific list of knowledge requirements, but they are useful to set benchmarks for what a candidate should be able to roughly offer in exchange for the level of comp they are requesting.

e4e78a06

If you don't know the difference between sync and async you're not qualified to solve problems with any realistic level of scale (>10 concurrent users which is a very low bar) or complexity (have you really never had to code logic that uses 2 or more concurrent network calls?). Might be excusable for a junior engineer but definitely not someone who describes themselves as senior.

disgruntledphd2

> multiple "senior" data scientists who cannot write a function definition in python

I definitely would have failed this a few years back, because I spent most of my time in R & SQL.

throwawaygh

1: Bad.

2: Could be terrible or totally reasonable... how much of that was "fixed cost of any push to prod regardless of complexity"? I've worked at very few places where I could get a change from my editor to production in less than 10 minutes, except in emergencies. Even at my one person freelancing shop a push to prod took at least a few minutes to go through the pre-flight checklist.

3: Bad but not insanely bad, depending on what's needed for the role. Definitely something they should learn, but not catastrophic especially if they are a huge value add in other parts of the stack.

avgDev

You can be full-stack with minimal JS knowledge, if you use stuff like Blazor. Lack of knowledge about sync/async would be inexcusable for a mid/senior though.

nouveaux

Why would you quiz on language specific syntax?

seanbarry

I should have clarified in the original comment: the roles all had python experience as a specific requirement and some of the candidates apparently had multiple years of experience with Python listed on their CVs.

wffurr

Depends on whether the candidate claims to know Python on their resume. If they do so, I'd certainly expect some basic ability to read such code.

khazhoux

Almost all big companies let candidates choose their language for the interview, with assumption it'll be python/java/c++ or similar mainstream lang.

phphphphp

I don't mean this to be incendiary, but, do you think perhaps this reflects on your recruitment pipeline, the standards you hold interviewees during the discussions about their experience, and the way you review resumes?

There is of course a possibility that someone has rehearsed their interview happy path down to the word and they can easily describe complex technical concepts without understanding them because they're quoting a script, but an interview that can be gamed in such a way may highlight a problem with the interview.

If most of your interviewees are failing to write basic code, the issue probably isn't the applicants.

visch

I've had a very similar experience to this, these are literally with candidates that are extremely "over qualified" based on their resumes. We're talking masters degrees, doctorate degrees, etc. They can talk like they have years and years of experiance at this place, that place, you ask about projects they'll dive into high level details about them, everything sounds good (can still filter 80% out with these questions to be fair). Get to the code question, boom fail.

I dislike leet code, but you do need to be able to code something (Even if it's syntactically incorrect) on the fly and reason with me about what and why you're doing something.

cloverich

For starters having a masters or PhD implies _less_ programming experience, generally speaking. Its a huge plus for a variety of positions but IME PhD or masters candidates were always a little more raw engineering wise. The way you get good at coding solutions quiclky and on the spot is by writing a lot of code.

indymike

Not incendiary at all. I've been worried about that, but as we've adopted more skills assessments, the quality of hires has went way up as measured by first year retention. We're not losing people because they can't do the job.

jrochkind1

I'm surprised that someone who couldn't say what type a python expression returns could do well on "show me things you've built", "tell me how this function you built works". Do you have an expalanation/guess? Were they giving you rehearsed answers to specific code that, well, they didn't necessarily actually build themselves?

indymike

Best guess is someone else did the work and explained it to them.

Aeolun

You’d pop that bubble in a few directed questions wouldn’t you?

throwaway2037

Woah. This is a great post! Zero trolling: Can you share your interview question? We would love to have something similar!

Deeper question: Did you think about why some people are able to "show me things you've built, tell me how this function you built works", but fail miserably on a straight-forward coding test?

Sometimes, during an interview, it seems obvious the person is very intelligent, but having a bad day. Some part of interviews is pure performance to me.

neilsimp1

Not OP, but we often include these two in our interviews:

1. Write code that will find the second largest item in an array on ints.

2. Write SQL that selects the second highest number from a DB table.

I'm floored how few candidates can do these. Many end up giving up or fiddling for 10 minutes before giving something like `SELECT table WHERE 2`.

deckard1

wouldn't be surprised people miss the SQL question. Full stack devs are rather rare nowadays, and it's a bit obscure SQL trivia considering the answer is dependent on which SQL db you're using.

SpicyLemonZest

A common reason in my experience is that the things they've built were done very slowly. I've failed my share of interviews because I was having a bad day, certainly, but I have direct professional experience with many people who require hours of dedicated working time to produce even the simplest of pull requests. This isn't a complete justification (if I have professional experience with them doesn't that mean they passed our straightforward coding tests somehow?), but I do think that there's a real selection problem there people are trying to solve.

haspok

Are you US based?

Here in Europe this sometimes happens (candidates can't code at all), but _very_ rarely, maybe 1 out of 100? Especially as you move eastwards, the base coding abilities start to improve massively for the average candidate - in the UK, if you are stupid you can easily get by on the social welfare system, in Eastern Europe, if you are stupid, you starve. As simple as.

There was a time I used to ask Fizzbuzz-style warmup questions on interviews, but then I stopped because the signal it gave was pretty much useless. The only positive case I can remember was when a tester applied for a dev position.

Zvez

I worked in Russia and used to think this way too. But once we managed to hire person how couldn't code. At all. He was intelligent during the interview, talked his way through system design section. But during the probation period he basically couldn't do anything, even simple stuff. After that I started to block any candidate, who couldn't provide code solution for at least simple problem.

TameAntelope

Er, that explanation doesn’t really hold, considering if you’re stupid you starve in the US too, and we get tons of idiots applying for jobs they’re completely unqualified for.

rr808

Agreed you need some tests but what you're asking is a different order of magnitude than leetcode problems.

wnolens

Not really sure, but it sounds like some of things you are testing might be syntax - which makes sense if it's critical to your hiring need - ex. hiring senior C++ folks to start a new project - otherwise every new job I've started in this industry thrusts me into a new language and I have no problem sending CRs almost immediately (given Google and an IDE).

I'm generally more a fan of keeping skill-based examination too, but making it very easy and language agnostic. Harder than FizzBuzz of course, but nowhere close to dynamic programming.

Ideally, if a candidate has never seen it before, a basic tree traversal is enough. But since 100% of people have practiced that before interviewing, I invent a problem by ripping out a little piece from the codebase I'm working on. It usually amounts to.. Show me some clear control flow, factor that code into a subroutine, iterate over a collection and call that subroutine, contemplate the performance characteristics in a discussion (not bigO complexity, more so consider the I/O device..caching..)

evanspa

I'm in my 40s doing the leetcode grind, but weird thing is, I'm actually ENJOYING it. I get a little high when I solve a problem, and I feel good about re-learning / re-discovering data structures and algorithms that I just don't use on a day-to-day basis. I paid for the premium version and enjoy reading the solutions and maybe learning a new trick or algorithm technique or whatnot. And who knows, maybe something that I learn when grinding on some leetcode problem will actually be useful in my day job? Thinking about it, if I ever do land a MAANG job, I don't think I'll stop doing leetcode problems. Sure, I won't go crazy with it like I'm cramming for mid-terms or something, but I'll still hack on them for the pure joy of problem solving, for the sake of problem solving.

I guess where I'm going with this is, maybe change your thinking about leetcode? Don't think of it as a necessary evil in order to land a high paying job that you dread doing each night; look at it as a fun little hobby, with the nice side-effect that you're keeping your data structure knowledge, algorithms and general problem solving skills sharp.

fatnoah

I'm also in my mid-40's and did the leetcode for a MAANG interview a couple years ago. I also looked at it as a thing I'd spend some time on every now and then to shake off the rust and to practice for the hiring process itself.

Like my past studying for SAT or LSAT, it was as much about preparing myself for the test itself vs. trying to gain some specific knowledge. Time management, making sure to test, and knowing that there are almost always naive vs. optimized solutions for these types of problems and learning how to quickly identify the naive solution (i.e prove I can solve) and then figuring out the optimization.

In any case, I enjoyed the process and didn't really practice more than 10-15 hours. I literally just kicked off the rust and got used to managing time. If you get too deep in to "I've optimized systems to process millions of transactions/second, and some 25 year old is sweating me on hashtables" you're going to have a bad time.

The ironic part of the interviews at this level of experience was that the coding portions ended up feeling tough, but I was able to talk work through them. For one company, one of the two system design round was with someone who couldn't have been more than 3 years out of college (with PhD though) and had only been at that big company. That was my hardest interview because the person I was talking to had zero to little actual experience there. They knew the problem and expected answer, but didn't know the space. It was VERY HARD to talk about things that they very obviously didn't understand in terms that they did understand without sounding condescending.

ngngngng

If we're going to change Facebook to M for Meta then we should change Google to A for Alphabet. Then the acronym is MAAAN.

elwell

On LinkedIn, FB employees have Meta now; Google employees still have Google.

tasha0663

It reminds me of Pacino in Scarface. Chichi get the yayo MAANG!

AlwaysRock

Does it really matter enough to correct people? Call it fang, faang, fang+, mang, maang, maaan, top tier companies... They all mean the same thing.

vmception

NAAAM, a tour in NAAAM

mettamage

AMAAN!

I still don't know if I'm reading amen or a man.

inerte

Triple A could work as M3AN.

bradlys

So you got offers from FAANG with only 10-15 hours of actual practice? That’s an exceptionally low amount of practice.

But I hear these stories over and over - the variance is so wildly high. The people who spent the same or more hours studying and didn’t get an offer tend to not talk about it though. So, sampling bias issue.

elwell

The more studying you do, the more likely the interviewer asks a question you've seen before.

biztos

I'm a little older, and I also do leetcode for fun/practice and find I get a lot out of it.

Have not done a leetcode-style interview yet, and might never do, and might not pass if I do do, but just as a scratching post for your coding claws I think it's awesome.

lijogdfljk

On the note of leetcode, what other products solve it similarly? How does leetcode rank against, say, Exercism?

Tyr42

Do you also enjoy advent of code?

evanspa

I do! I did the 2019 AoC in Clojure and really enjoyed it. I plan on getting to the 2020 and 2021 ones at some point.

torginus

I never understood the hate Leetcode gets. Whenever you change jobs, chances are you'll encounter some new technology you do not yet know. You'll have to prepare for it. Algorithmic problem solving is like riding a bike, you only have to learn it once. While it's possible that no one will write Kotlin in a decade, it's very unlikely that knowing how to do a topological sort will go out of fashion.

The counter arguments often mentioned against Leetcode I often hear:

- You are often asked stuff that took PhDs years to figure out: This usually shows up only in Hard questions, and badly designed ones at that. In my experience, Medium ones are usually solvable with solid algorithmic knowledge. It is also usually that maximum difficulty people encounter during their work.

- It discriminates against women/minorities: I don't live in a very diverse country, so I don't know anything about the minorities part, but in my career, I've encountered plenty of women who were as good or better than men in solving algorithmic issues. It does filter people, because it's designed to filter people, but I've never found it discriminatory along gender lines.

- It discriminates against poor people: You're a programmer, you are not poor. Even if you were, the few weeks of time investment it requires is usually offset by the higher salary you can ask for. Think of it as an investment in your future. Or if you are not a programmer, the amount of skills you need to learn to get your first programming job is usually far excess of just learning leetcode.

dathinab

> topological sort will go out of fashion.

If you as a normal software engine write a topological sort algorithm you likely failed your job. Your job is to use existing topological sort algorithms designed by people specialized in that area, implemented by people which are specialized in implementing and fine tuning algorithms (it's its whole own field of expertise, and overlooked field tbh.).

Or to reformulate it the job of an software engineer is to reuse existing components and basic building blocks to create larger components or programs, but it's not your job to create new basic building blocks. The job requires you to have an understanding of such components but not to memorize them.

Sure sometimes you have to create basic building blocks, but then doing so from memory is nearly always the wrong approach.

Leet code is not at all representative for "how well someone is suited for given job" (for most companies/offers, there always are exceptions).

While wasting everyone's time.

And favoring certain skill sets/problem solving approaches (memorization) over others (adaptability, deep generic understanding), at least in the way they tend to be implemented. It also strongly discriminates again anyone with exam anxiety and similar. Be aware that the points mentioned here apply to common leet code based screening (especially automatized screening), but not necessary asking people to solve some code problem in interviews (if you handle that appropriately).

dpryden

This hints at an (IMO underrated) skill: being able to look at a problem and decomposing it into sub-problems that are solved by known algorithms. Topological sort is a pretty fundamental building block for solving many problems that involve dependencies between components, since those can be modeled as a directed graph.

Knowing how to write a topological sort isn't the key skill here (although, I would argue, it's a good skill to know, and it's probably much simpler than you're imagining). The key skill is knowing that a topological sort will solve the problem, or perhaps it's simply knowing that "finding an order of actions that satisfies these dependency constraints" is called a topological sort.

I have always been under the impression that the goal of leetcode-style interviewing was actually to measure a candidate's ability to recognize what algorithmic tool to use, rather than to measure a candidate's ability to implement an algorithm from scratch. When I've been in the position of interviewing in the past, I've always been more interested in that problem-solving approach than in the actual code.

In my experience, most software jobs are 90% figuring out the problem that needs to be solved and coming up with tactics for solving the problem, and 10% actually implementing those tactics. In that context, investigating the ability of a candidate to analyze problems seems like an excellent interview technique.

thw09j9m

Writing topological sort isn't like rolling your own cryptographic hashing... It's literally 10-20 lines of fairly trivial code.

While I get your point, you chose a horrible example.

Hermitian909

> If you as a normal software engine write a topological sort algorithm you likely failed your job.

No, because the way topological sorts show up in many systems is not amenable to a library. Sometimes you will have unusual caching strategies available to you or the topological sort needs to work with some weird asynchronicity that no library handles well.

Even if you do just need a topological sort it's often not worth bringing a library in. It's a simple algorithm implementable in a few lines of code in many languages.

moonchrome

>If you as a normal software engine write a topological sort algorithm you likely failed your job. Your job is to use existing topological sort algorithms designed by people specialized in that area, implemented by people which are specialized in implementing and fine tuning algorithms (it's its whole own field of expertise, and overlooked field tbh.).

What standard library ships with it ? I can remember multiple times I've need to implement topological sort in various languages - mostly to detect if there are cycles between dependencies or order actions, it's rather simple, introducing a third party lib for such code is in the leftpad territory and writing a generic interface to generalize graphs would be clunky in a lot of languages.

flavius29663

It's not about topological sort at all.

It might come up in unexpected ways, say cache propagation, or a cyclic dependency in your favorite IoC container. Or in many other possible scenarios that are all real and I see them almost every day

wittycardio

If you're a software engineer and you don't know what topological sort is then you don't know how any sort of dependency structure works and that's a big part of your day to day. Implementing topological sort is a few lines of code and anyone should be able to do it

canyonero

> It discriminates against poor people: You're a programmer, you are not poor. Even if you were, the few weeks of time investment it requires is usually offset by the higher salary you can ask for. Think of it as an investment in your future. Or if you are not a programmer, the amount of skills you need to learn to get your first programming job is usually far excess of just learning leetcode

This comment does not acknowledge the experience experience of many people who grew up poor or put themselves into major debt because they didn’t receive financial support or live in economically disadvantaged areas.

I grew up poor and took out massive education loans to pay for my education. I still pay off those debts today. Does that mean I consider myself poor now? No, but my economic disadvantage has made me need to work much harder in other areas and I’ve needed to prioritize many other things over leetcode. I haven’t had the luxury of spending multiple hours a week to get “good” at leetcode

So yes, I’d argue that leetcode is responsible for gatekeeping people out of jobs who don’t have time/money to grind on it.

cloverich

Leetcode prep is less time and money than getting a degree in anything. Anybody with sufficient interest can find the time to get to a basic competence level in leetcode and system design. Getting real life experience or a college degree has got to be the bigger gate.

canyonero

> Anybody with sufficient interest can find the time to get to a basic competence level in leetcode and system design.

OK. But, it has nothing to do with interest. It's time (which may already occupied with working long hours or a second job to pay off debt or looking after family). Who has extra time to perform leetcode tasks that have no alignment to day-to-day tasks and expectations. People with the luxury of free-time, thus attracting a certain type of profile.

> Getting real life experience or a college degree has got to be the bigger gate.

You don't just get a job doing leetcode. The experience and/or degree are table-stakes. The OP post is asking folks who likely already have experience or a degree related to the field of software engineering.

uberman

Knowing why one would use a "topological sort" is (might be?) important. There is almost nothing important about knowing how to do one. This is the failure of leetcode.

I would take 1 person who can understand problems at a high level and Google the minutia over 10 that try to remember how to re-balance a tree and confidently introduce off by one bugs.

bhelkey

> I would take 1 person who can understand problems at a high level and Google the minutia over 10 that try to remember how to re-balance a tree and confidently introduce off by one bugs.

How do you plan on screening for that person?

Aeolun

> it's very unlikely that knowing how to do a topological sort will go out of fashion

It is also vanishingly unlikely I’ll ever have to do a topological sort. 15 years and counting. Meanwhile, being able to read and understand a bit of kotlin has proven useful several times.

layer8

Topological sort implicitly comes up anytime you implement a depth-first search on a graph that isn’t 100% guaranteed to be cycle-free. Checking for cycles in a depth-first search is basically the same as topological sort. Having to implement something like that comes up roughly every 3 years for me.

aeroevan

But how often are you actually writing an implementation vs. calling a method from a graph library?

Knowing when you need a topological ordered list of vertices is (in my opinion) more useful than knowing how to implement tsort.

vmception

> I don't live in a very diverse country, so I don't know anything about the minorities part

I love how you lead with this and then drive a car into every single wall about this issue. Its like the most predictable meme and you are it.

You've encountered women.... proportionally? What stage of the career, entry level, lead?

The only point here is about time, and time commitment available. Forget about the supporting culture you were raised around for "grinding for the job you want", that method discriminates against competent people who have other obligations. When people are interviewing for a job, they are interviewing for many jobs at other potential places, so there is no way to determine passion or seriousness by their willingness to focus on studying for your job, it only determines who has things they can neglect. And basically that is just single men without debts or other distractions.

Many times minorities have other distractions, in your non-diverse country a minority would likely have a time limit to find a job to maintain a visa or comply with an asylum application. Women often have other distractions as well, with only some slim slivers of time being similar to the single men.

Hope that illuminates something for you, or others.

my_usernam3

Yeah I don't buy your argument. I don't think leetcode questions are perfect, I also agree that women/minorities have extra distractions and hurdles which as a society we should look to lessen and improve.

However, I find these distractions are much stronger correlated with a person's economic situation rather than race or gender. Also, I agree with the parent of your comment where the time spent with leetcode is a small fraction of the time needed to learn CS fundamentals, which are usually required for the job. Especially when you're not expected the candidate to KNOW the answer, you're observing HOW they solve the answer.

I've failed candidates that memorized solutions, but could explain how they got there. And I championed ones that didn't get the optimal solution, but had a good thinking process that they could properly communicate to me. Guess which candidate spent more time studying?

vmception

> However, I find these distractions are much stronger correlated with a person's economic situation rather than race or gender.

Which changes nothing when its a 99% correlation by race and gender.

Its not a dissertation, its acknowledging that something has the result of marginalizes groups disproportionately. Disproportionately means that it doesn't affect everyone, it doesn't 'affect all women and all minorities. It means disproportionately affects, due to their disproportionate representation in these distracting economic circumstances, so lets do something else instead since the reasons why it affects them isn't going to change in our lifetime.

> Also, I agree with the parent of your comment where the time spent with leetcode is a small fraction of the time needed to learn CS fundamentals

If people got formal education they took the risk for that allotted time. It doesn't matter if a time-discriminatory process takes less time, its an additional and unnecessary risk for the candidate.

If people didn't get formal education then they didn't take the risk for the allotted time, they just have exposure to the tasks the company needs. That alone suggests more inspiration is needed to have a different way of determining their compentency.

lentil_soup

I love algorithmic challenges and would even compete while in uni and coincidentally last year I even had to do several topological sorts at my company. But I actively hate and avoid leetcode type interviews.

For me it's the time pressure while someone is looking over your shoulder and them asking you to talk and explain your thinking.

I just panic and close up, I need mental space to come up with an algorithmic solution and can't do that if you want me to "talk through my process". Leave me some time to solve the issue and I'll come back to you with a solution, just like it is in a real job.

phphphphp

I enjoy programming challenges and do them for fun and I see their value as an exercise in thinking, but the problems I solve with them aren’t a reflection of the real world work I do or have done. I’ve never needed a topological sort in my day jobs.

If a company asks me to complete a leetcode style code challenge they are not getting a representation of the work I’ll do day to day, so I always make a point in an interview to say, “I may have passed your test but please don’t judge me on that basis, let’s discuss my work”.

They’re garbage as a hiring tool for lots of reasons, but mostly it comes down to the reality that they just aren’t representative by any stretch of the imagination.

danaris

> You're a programmer, you are not poor.

This is hugely Silicon-Valley-centric. There are millions of skilled programmers outside that culture, who have never had a six-figure salary, many who have never even worked for a tech company. Just regular (white-collar) working people with the same kinds of burdens that the average American (or European, or person from any other developed country on the planet) has to deal with.

In short, this shows how much you live in a bubble and don't understand what life is like outside of it.

Nextgrid

100k$ is an achievable target without Leetcode. Freelancing/contracting will get you there. Frankly, contracting in London nets you 120k£ pre-tax easily, and contracting via a limited company means you can significantly reduce your tax exposure.

Beyond that is a bit tricky. It's not impossible, and you can land a high-paying job at a startup or established non-tech company (established tech outside of FAANG is usually terrible pay-wise) through your network or recruiters, but the workload might be higher.

The advantage of FAANG is that beyond the initial LeetCode grind and the relative mundaneness/uselessness of the work (are you really passionate about littering the world with even more advertising?), it being such a huge company means that once past the initial grind you can lay back and still enjoy a very good paycheck for lower effort than in a smaller company which actually produces useful output beyond advertising.

mcv

I certainly recommend freelancing. It can take some time to get up to speed, but I'm currently making €95/hr on a long term project, which will probably be over €130k per year (for 32 hr per week). My rate might be the high end (I honestly don't know), but my sister who just started freelancing in test automation (which might be more in demand than developers?) is starting out at €75 or €85 per hour. €80 per hour for is not unusual at all.

Of course as a freelancer you have to arrange your own insurance and miss out on lots of benefits that employees get automatically, but personally I think the trade-off is easily worth it. Though to me the real advantage of freelancing isn't financial, but freedom; I'm less bound by all sorts of company rules and restrictions. Although on the other hand, I'm more bound by the tax service. I think it's a good trade-off.

lijogdfljk

Man, i feel like i'd be worried about droughts of jobs.Any advice on dealing with that stress? I take a lot of value out of standard jobs and stable companies.

Nextgrid

It depends on the market and your skillset. You can test the market right now by polishing up your CV & profile (LinkedIn is actually a good source of leads), getting in touch with some recruiters and seeing if you can get some offers, and adjust your rates & risk tolerance based on this.

At least in the UK, the contract market seems quite good for this early in the year, and usually peaks around summer. YMMV.

It obviously depends on your situation and whether you have any responsibilities; my opinion would probably be different if I had a family, but in my case I have little to lose even if things go sour. I won't be able to do this forever so I make the most out of it while I can still afford the risk.

mcv

It's always good to have a financial buffer, but I've never really needed it. Recruiters find me on LinkedIn and call or mail me. I generally blow them off or ignore them, unless I'm actively looking or they have something that catches my eye.

I suppose I could do my own acquisition; cutting out the middle man would probably increase my hourly rate, but that's a lot of work I don't like, and this works well enough for me.

xkgt

Does it take a certain non-technical aptitude to market oneself better? I think those who fear interviews may find this challenging as well.

hokumguru

Unsure about European prices but as a freelancer in the USA it's not unheard of to charge $120-150/hr

granshaw

Sure but even then it's low compared to being a senior at FAANG and publicly traded startups, no? (ie $300k+ annually when RSUs are factored in) Especially when you factor in the job risk and lack of PTO (even ignoring lack of health insurance cause in many cases your spouse can cover that)

I personally would like to get to $175-$200 an hour as then it would truly be competitive with the above, but not sure how to get there

vultour

Yes, 120k is easy via contracting in London, however almost none of those contracts accept EU applicants even if the role is fully remote.

Nextgrid

The main requirement is that you must have a UK-based limited company - I guess for clients this simplifies handling VAT/etc.

Beyond that, it's up to you how you want to structure it and whether you are physically based there - the client doesn't get to see it and couldn't care less as long as the work is done.

vultour

Having a UK limited company when your tax residence isn't in the UK is quite complicated. I actually had a tax advisor strongly advise against doing that when I left the UK.

fergie

Surely its more like £250k in London if you are in a full time contracting gig?

wackro

Your rate would have to be over £1000 a day. Your typical rate is half that, i.e. the person you're replying to is bang on. The only person I heard of on a rate that high was someone doing automated trading stuff for one of the Rothschilds.

fergie

Average day rate for a big consultancy is well over £1500 a day (https://www.linkedin.com/pulse/comparison-day-rates-between-...). Basically anybody you know who works for a semi-legit consultancy is being billed out at over £1000 a day.

Its super easy to get £1000-1500 as a freelancer who handles your own sales if you have the right credentials (degree, +5 years experience, do not completely suck at programming, specific domain experience, etc).

But yes, there is a whole industry of middlemen who try an convince suckers to work on a contract basis for around £500 a day.

Nextgrid

To be fair it is possible, I occasionally see 1k/day rates but they require either niche skills, a significant amount of experience or just seem like a terrible idea that's guaranteed to fail and you'll take all the blame for it.

In contrast, half that is doable for any mid-level developer and is still a major lifestyle upgrade compared to permanent employment.

Nextgrid

I'm just basing it on my own figures averaging about 9 months of work during a year around the 600/day mark which is seems to be about the max I can do with my current skillset.

me_me_mu_mu

Here's my opinion as a well paid west-coast software engineer.

Leetcode is literally gatekeeping to boost the egos of people whose entire identity is that they work at a FAANG. You have probably met such people - I remember these types from high school and college who could memorize a bunch of shit and regurgitate it. Beyond that, I've found maybe 25% of them are good team mates/leaders. They go home, update their bios to read "Stanford CS, Ex-Apple, ex-Meta, now Noogler", and hang out with other similar types.

I've been on interview panels before, and while I prefer administrating the systems design interview, I've also had to administer coding. The way it goes is like this - half have this stuff memorized because they took a FAANG interviewing bootcamp or spent 6 hours a day for 3 months grinding leetcode. The other half are split into another half - one half that struggles but manages to do decently with guidance, and another half that just fails outright due to nerves, lack of knowledge, etc.

Here's the weird, anecdotal experience though - of the people who absolutely kill the coding interviews, maybe half will do well in systems design. They struggle at explaining concepts on the fly, or cannot come up with reasonable solutions. Maybe it is a lack of imagination, because I really do think a lot of people just memorize and get ahead. Then they hit a ceiling, or fly just at the max ceiling while boasting "ex-Facebook, ex-Apple, etc."

kilroy123

Last year when I was job hunting, I did an interview for a small startup. The very first thing the interviewer told me on the call was, I'm an ex-googler.

Then proceeded to give me a crazy leetcode question with basically no guidance or help.

Now, I expect and event want _some_ kind coding test questions. But not some crazy harebrained leet question.

quanto

Leetcode is not an 'absolute necessity'. Many firms do timed homework (I have seen anywhere from 90-min to 3-day time limits). I personally have not observed any statistical correlation between salary level and leetcode requirements; or know of any data studies on this.

That said, I have seen that even those firms without rigorous leetcode rounds have mini-leetcode questions during onsite that are the easiest of the easy leetcode problems; e.g. find the sum of an array of ints, find a duplicate item in an array, etc. So, I don't think you can avoid these questions completely, but at the same time, summing up an array seems like a fair sanity check for dev applicants. I saw one programmer (PhD!) from a Top-3 school in Europe that could not find a maximum value in an array. So, yes, some sanity checks, but I don't think this is what you are concerned about.

All those examples I mentioned above pay above (some well above) 150k USD TC.

tloup

Am I the only one just googling for this stuff because it's way faster? like, "maximum value in array" gives:

var max = arr.reduce(function(a, b) { return Math.max(a, b); });

which is totally valid for javascript and also pretty neat. I would probably do some funny things with loops instead, wasting time and resources.

quanto

That particular question was not supposed to be a trick question. If the answer given in, say, Python was 'max(array),' I would have found the answer acceptable ('max' is an intrinsic function in Python); a better answer would be writing a for-loop. The person facing this question was an applied CS PhD (student at the time) at a Top-3 in Europe with prior working experience (IIRC).

lifeisstillgood

That sounds an awful lot like panic not incompetence.

nicbou

No need to waste any time: Math.max(...arr)

Even when I know how to do something, I look it up just in case. Sometimes there's a cleaner approach, or I learn that I don't fully understand the problem.

mmaurizi

In this case if you look it up on MDN you'll see that Math.max(...arr) isn't recommended for large arrays (ask me how I know)

globular-toast

You're not the only one, but it's the equivalent of walking round a foreign country with a phrasebook versus being fluent in the native language. In this case, for example, you seem unaware that reduce is just doing a funny thing with a loop and won't be faster, but you've been seduced by shorter looking code because it looks more clever. There is, in fact, value in the reduce method but it's nothing to do with speed or efficiency (it's because it's declarative). But if this were Python, and the reduce was a call to numpy, then it would be about speed and efficiency. The point of doing stuff like leetcode is (or should be) to test real understanding of the technology, not an ability to copy/paste from StackOverflow.

tloup

But if you can grind these what's the point then? All I'm doing at work is building glorified crud apps. I'm sure it's what many, many software engineers are doing. Not all, but many. My understanding of e.g. Django is much more important to my daily work than being able to come up with the fastest way to find a maximum value in an array.

sh4rks

Sure, in a real world scenario you would Google the most efficient/elegant way to get the max item in an array. However in an interview situation, the interviewer is usually expecting a language agnostic approach, i.e. using loops.

tloup

That's my point, those questions are pointless. They don't show anything meaningful besides someones ability to learn a lot by heart. I mean, just based on the fact that someone asked if it was necessary to grind leetcode questions shows that you cannot gain any meaningful insight by asking questions like that.

Nimitz14

Actually having to google something so basic makes your experience suspect. That's almost as bad as having to google for loop syntax in a language you say you know.

tloup

I have ADHD, I'm glad I can remember to not put the underwear on my head instead of where it belongs. Of course I can't remember how a for loop looks like, that's why some nice people invented code completion.

dandare

You made two mistakes: You optimise prematurely and your assumption is incorrect.

Premature optimisation:

In most cases the performance would not matter. Instead of optimising for performance you should optimise for readability. IMHO IFs and FORs are way more readable in any context than any language specific methods like REDUCE and MAX.

Incorrect optimisation:

At least in modern browsers, simple IFs and FORs are the most optimised methods of doing anything. See for instance https://leanylabs.com/blog/js-forEach-map-reduce-vs-for-for_... (Operations per second, higher is better).

jen20

Conversely if I saw someone use a for loop (especially one with mutation) where a trivial usage higher order function existed, and I was giving a “leetcode” interview (which I refuse to do), I would take it as a signal that there is an important missing concept if it were not corrected when prompted.

The idea that “reduce” is language specific is frankly mind boggling. It’s no more language specific than a loop.

tloup

I am talking about my own time and resources, not those of a computer - say, it might take ~one hour to come up with a solution for problem x. It might very well be not the best solution either, just the one that works okay (we've all been there). Or I could look up what other people have done in 2 minutes - say I'm comparing solutions too, that would make it 10 minutes. That's 50 minutes of work I can spend elsewhere. Much more efficient.

jghn

As someone who prefers constructs like map, reduce, etc to loops this is a key example of why it’s important to a) ask why the candidate went that route and have a conversation about pros and cons and b) recognize that this is one of those no right answer opinion things and not hold it against them if they think different than you

Mind you I’m talking in general and now in browser specifically

DarylZero

Explicit loops are only more readable in languages that suck.

hmsimha

I'd go with `Math.max(...arr)` personally. Math.max is a variadic function, no need to add a reduce into the mix.

roryokane

That implicitly calls Function.prototype.apply(), which will fail if given more arguments than an implementation-specific limit (https://stackoverflow.com/questions/22747068/is-there-a-max-...). Looping with reduce() avoids that restriction.

T-zex

No, you are definitely not. But some insecure interviewer might feel this is an enormous red flag to be doing so.

golondon

Speaking for London, if you would like to have £180K+ FAANG or Hedge Funds / Trading is your only option and unfortunately they ask leetcode questions. Some of them go crazy and ask hard, some like Facebook ask easy / mid but want you to be quickly come up with the answer.

There are eng offices of soon to be IPO'd startups such as Stripe or Intercom in London, those don't ask something you don't do in your day to day job, however comp at this stage would be base + maybe bonus + stock options. You can never know when that stock option will turn into something, so in a way it's even worse than lottery, at least in lottery you know the date to check if you get rich or not.

There have been few IPOs from London startups like Deliveroo, but I would say they perform pretty badly and things are not going well for people who relied on the return from there.

So, I would say Yes to this. Unfortunately.

nvarsj

I agree with you, although you can get near/past FAANG level TC by contracting/freelancing. Even just being a Java dev, you can make around 650+ a day which is about 150k/year. Plus you can expense almost anything IT related. If you branch out into doing trainings, or become a subject matter expert, you can charge 750, 850+ a day which is basically >= FAANG L5 levels. Probably a lot harder to be honest since you need proven experience and results, but it avoids the leetcode.

golondon

Yeah, I was talking for the perm roles. If you go to the contractor route, 600, 650 is quite doable. For higher as you said, it's networking, how people see you and what kind of projects you delivered. Depending on the person, it can be something even harder than the leetcode grind. But overall, I would agree.

Nihilartikel

Disclaimer, I haven't leetcoded - though I kicked around topcoder a long time ago.

Leetcode probably has value - but the real value isn't in your scores. The scores are a heuristic grade for algorithm capability maybe. And it makes sense that hiring parties would take it into consideration. The real value lies in what you learn from completing the challenges. I don't think there's much value in being able to 'invert the binary tree' or implement a hash table from scratch. Nobody should do that professionally unless they're trying to push ahead the state of the art in that field.

BUT knowing about algorithm X,Y,or Z, and its performance characteristics and having that in your toolbox to solve real world problems is the difference between an engineer that spins their wheels for a week before solving a problem badly, and one that doesn't break a sweat making a correct and performant solution. A portfolio of algorithms and their strengths in you're 'inmem cache' is crucial if you want to move to roles more advanced than hocking json blobs between the frontend and DB.

I consult and typically find myself working on problems that the in-house team hasn't been able to work out, and very often I walk in on messes of nested loops and O(n^3) functions, when all it would have taken is judicious use of a Heap here, a Dict there (it's surprising how often a linear search over a list rather than a O(1) hashtable is used in some circles), or maybe a Trie or two. These aren't esoteric academic things, they are the abstract building blocks needed to solve real problems.

So, I digress, but: use LeetCode, work on open source, build challenging things and hang with a crowd that knows more than you and watch what they do closely.

Seek to grow your power and capability, not your credentials. If you grow as a developer then the credentials will come automatically. And if a potential employer can't tell the difference between a stone-cold competent programmer and somebody who just has a lot of acronyms on their CV, then they probably don't have much to teach you anyway.

andrew_

Three years ago I started rejecting interviews that included banal code challenges unrelated to the positions, leetcode, and hackerrank stuff. Basically anything involving Coderpad et al.

The result in a 40% increase in total comp and having worked for some very high quality folks and with extremely pleasant folks. My job satisfaction has never been higher.

hkt

Seconded. I've never done leetcode but have gone through some hiring processes which set challenges that were totally irrelevant to my role. One place asked me to write a simple SPA in angular with a three day (!) time limit. I'm a DevOps guy and it was a DevOps role. I ditched and was reasonably pleased to have done so.

alecbz

FWIW I think you can absolutely ask practical, grounded coding questions in a coderpad environment (I believe $current_employer does).

andrew_

In my 21 years in the industry, I've never seen one. Schrodinger's Code Challenge.

There's also the issue of Coderpad et al being a sterile, primitive, unfriendly environment. Not the editor or IDE a candidate is comfortable with. (Additionally, I want to know about a candidate's editor and setup. It reveals a number of things I'm interested in) And I like candidates to be comfortable to be able to be their true selves. Then there's the awkward "wait while you code," folks sitting on the other side that you don't really know, waiting or trying to make some kind of polite commentary to let the candidate know they're not being ignored or forgotten. And the candidate trying to talk through code, again with people they don't really know or have any social basis with. Coderpad is a horrible environment for interviews.

That said, I have seen VSCode's Live Share used successfully, where all parties were engaged and contributing to code in the same session. That was on an actual job-applicable, practical exercise.

baggachipz

Last time I had to do one of these idiotic challenges (on Triplebyte), I had an in-browser text box for code input, and a set of tests (some hidden) as the output on the right. I had no debug capability, no log, no feedback of any kind besides clicking the "run" button and seeing if tests pass or if it doesn't compile correctly. Of course I failed the challenge, because the way I write code is to take a first try, inspect errors, step through lines, and refine to get it as it needs to be. This was all impossible in this "environment" I was forced to use. Even worse, it has a timer ticking down the entire time, taunting you as you come ever closer to "failure".

What a miserable excuse for a test of my abilities. I will refuse to complete these challenges as a matter of course, and encourage others to do so as well.

jermeh

I just wrapped up the interview process and got a job offer at >150k with 4 years of experience. I interviewed with probably 10 or so companies along the way.

I do not believe that "grinding leetcode" is at all necessary. However, familiarizing yourself with online "IDEs" and the skill of solving (relatively simple) problems quickly while communicating your thought process is necessary.

That being said, I would do a handful of Leetcode-type questions on your own time. Don't aim to solve as many as possible or even bother to hit the hardest questions. Most questions I received were actually pretty simple algorithms that any dev could handle. IMO it's more important to be comfortable in the environment, and be able to communicate well to your interviewer if it's live than to be able to come up with perfect solution instantly.

The better companies I interviewed with made the live coding portion a small component early on, basically as a screen for basic coding skill. After that, the most important parts were design, discussions on previous projects, and behavioral interviews.

dgellow

150k€? Or are you talking about USD? 150k€ for 4 years of experience is really very high in Europe.

bloat

Please define the use of the term 'grinding leetcode'.

Is it:

a) Having a good score on the actual leetcode website as a prerequisite for an offer/interview.

b) Using the actual leetcode website to practice for a technical interview?

c) Practicing some other way using leetcode style data structure and alogrithm problems. e.g. working on the Cracking The Coding Interview book.

Personally I've never seen any recruiter or interviewer mention leetcode by name. But I've certainly been asked to practice leetcode style problems.

jsiaajdsdaa

Plenty of interviewers have mentioned leetcode by name to me, and some have even said "you may recognize this problem from leetcode" and they proceed to paste in the requirements :)

yonaguska

I used to do bowling then a leetcode hard question for interviews, but I had very little interest in whether they got the right answer. I would try and ask a question that was very unlikely they'd know with the focus on how well they communicated their thought process while working through the code. I did run into a couple of Chinese grad students applying for intern level positions that actually nailed the problem in minutes, but couldn't explain at all how it worked. Really frustrating as I'm sure they were probably capable, but they didn't make it past other steps of the interview either due to inability to communicate. Then for one intern interview where I could see the kid was not even qualified as an intern- I was told during the feedback review process- "oh he's related to so and so, I know that you were a no, but we're hiring him"...I left that job not too long after.

tzs

> I would try and ask a question that was very unlikely they'd know with the focus on how well they communicated their thought process while working through the code.

I'd probably do something like that. No actual writing code, more of a discussion with them about ideas for solving it. I'd try to let them take the lead on approaches, just adding ideas to keep things moving if they were getting hung up on something.

After we've got what seems like a reasonable approach and I'm sure the candidate understands it, I'd then have us take a quick look at the official solution and see if it is along the lines of what we came up with.

Finally, I'd go to the discussion area for that problem and take a look at a few of the solutions posted there and ask the interviewee to help me do a quick code review of them.

The discussion areas for Leetcode problems are an often overlooked resource. They are full of proposed solutions with all kinds of issues. Sometimes they just won't work. Sometimes they solve the problem but don't meet the time or space constraints the problem asked for. Sometimes they work except for edge cases.

bk_geek

Nobody cares about (a). I believe OP is referring to coding interviews

Daily Digest email

Get the top HN stories in your inbox every day.