If by most people you mean non-programmers, then maybe. Otherwise it sounds like a whining of a B-player who just realized they've never had skills sufficient for NFL.
The fact of the matter is the better you're in understanding CS and the underlying mathematical domains, the easier the leetcode questions get, it always has been and always will be. And contrary to most beliefs, you don't have to memorize individual problems. You learn the domains of problems and solve them with the same repeating methods. But most people just prefer spending their time on infortainment and being presumptious on Twitter, than actually learning stuff.
300 leetcode questions done (not sure if I'm doing it for interview prep or fun or both, don't need to go the leetcode route anymore but I find it a rewarding endeavor)
I sometimes expand my math capabilities for funzies
> But most people just prefer spending their time on infortainment and being presumptious on Twitter, than actually learning stuff.
Yeah that or wasting their time working on open-source or side projects, which typically has a poor return on investment. One of the biggest things I learned after years of trying to work in open-source is that it is not worth it (financially). The employers who pay the best salaries do not care unless the project you work on is very closely related. Even then, you are way, way better off grinding Leetcode instead.
People really hate coding interviews but they now exist as a "stupid test."
Academia has a problem with possibly fraudulent papers and grade inflation. It is inevitable that companies won't trust the papers and grades/degrees like they did in the past.
I trust a Harvard undergrad more than I trust a second or third tier grad student. It's so easy to shit out mediocre work and build accolades without actually being able to do anything these days.
I just finished several months of preparing for and doing (and failing) interviews, it was only adter i spent a month of Leetcode 8+ hrs a day that I started doing well and getting good offers. I also hated the game, I’ve been in software engineering over 20 years and was very resistant to this treatment but in the end I realized I’m not going to change the system but I am entirely capable of jumping through these hoops if I just try way too hard. My hack/advice for this is if you want to avoid it as much as possible look into mobile development, most mobile loops have little or no leetcode (except Meta and Google of course).
For one, the proposed alternative seems to boil down to "give me special treatment" which is not a great look. For another, there is no perfect screening process, only tradeoffs between throughput, accuracy, and cost. Finally, if you think this very common interviewing process is "humiliating" then you're going to absolutely hate the hour to hour of most jobs...
Just to give some balance here, I'll state a seemingly unpopular opinion.
Personally, I have not had issues doing complex coding questions in interviews, or at work. And it becomes clear pretty quickly on the job, when your co-worker has weak computer science fundamentals. Reasoning from first principles is a very powerful technique.
The issue for me is that even if you have strong computer science fundamentals and lots of experience most of the time you won't be able to come up with an advanced optimized algorithm (that took years of research) on the spot, which is what is often required in these kind of interviews. Even if you manage the average kid that grinded leetcode for years will appear a better candidate than you, maybe he really is, but that's unlikely on the day-to-day job. In the end it's just about who grinds more, obviously if somebody is really weak on the basics it shows immediately without having to go through the hops, fizzbuzz is enough.
People complain about having to reinvent major discoveries in interviews, but in my experience this is very rare. The overwhelming majority of coding questions are more advanced versions of fizzbuzz, which merely require reapplication of common techniques. It is very frustrating as an interviewer if nobody can solve your questions, so the questions used will evolve to things that the typical competent applicant usually solves.
To be fair, while grinding shows opportunity of having enough time. It also shows determination and grit. I have determination and grit in other areas of life, but when it comes to leetcoding, I find it hard to have it.
I find it much more easily to have grit when it comes to dating/romance. I already feel it, it's a few orders of magnitude higher, at least on an emotional level that is. The strong motivator there is the rebellious belief/thought of "I won't be ignored! I deserve love too!" (I think everyone does). It's a trauma (little t) response. I'm married nowadays because of that drive, I'm currently reading the 7 Principles To Make Marriage Work.
But leetcode? In a good week, I do like 5 problems.
It's a bit of a strawman argument - I'm not aware of any company that hires purely based on leetcode results; they typically also include interviews focused on product/design skills and "culture fit".
If you think something you have to do in an interview is “humiliating” when all they’re asking you to do is demonstrate some skill on a whiteboard you have some self-reflection to do. I don’t personally think leetcode is that great for interviews but candidates who act like it’s above them to figure out problems etc have a serious problem. In other fields this is not only completely normal but absolutely something people embrace. I have been in music masterclasses and heard absolutely world famous musicians playing basic scales to demonstrate something, in maths solving basic problems is absolutely something people will do all the time[1]. My dad was a chemical engineer and he was always happy to get a pen and pad out and solve some problem
It’s completely ridiculous to think you’re being humiliated by being asked to solve some algorithm question or other on a whiteboard and if you think that, I implore you to change your perspective. You want a job - you should be prepared to demonstrate that you’re prepared to do things that people ask you to do.
There's possibly some worldview mismatch on your comment, because leetcode isn't "basic scales" programming for any specialty.
It's much closer to expect your world famous violin player to sing on the stage than it is to expect them to play scales on the violin.
But then, maybe not. Some people call all kinds of random exercises by "leetcode". The author may be one of those, I don't know if anybody can know this.
Basic data structures and algorithms knowledge is a base skill that will translate to better success in any software job. Yes you may not be coding graphs in your day job (although you might - I have personally done it before), but someone who can grasp stuff like BFS vs DFS and Dijkstra's algorithm will absolutely be better at the job than someone who comes in and says "idk who cares, I'll just use a library".
Yet, on the real world the answer is always one of "either" or "neither".
Anyway, most leetcode aren't of the type of "a widely applicable algorithm solves this". People only know the algorithms that apply to them because they studied those problems specifically.
And notice that one of the algorithms on your post is named after a researcher from the 80s. That's some 40 years after computer science became a thing. That's how long it took the entire humanity for learning it without anybody specifically telling it to them.
BFS? Really, there are libraries for that and I would hire a kid who timidly used one as they could not remember how to implement it over someone who confidently introduced and off by one bug because they thought they knew how to implement it without references.
Not to mention that the interview process in a lot of fields without any objective hiring criteria consists of the hiring manager being friends with your uncle or your grandparents going to the same country club as the CEO. I'll take what we have, thanks.
Author's point is not that it's too simple but that it is not relevant. It's not similar to asking a mathematician to do first year math problems, it's asking them to, dunno, remember obscure regulations on accounting.
Grind? Really? I work in higher ed and I teach. Prepping even a new course is not grinding. Teaching a course where you are professor of record is certainly not grinding unless you dont know the topic at all. If that is the case though you should not be lecturing for this class.
The only legit excuse for grinding here is if you did not do any prep.
Doing your job even with a 4/4 load is not grinding.
Research proposals and research projects might require grinding. Prepping lectures no way.
All other serious endeavors require endless “grinding”. Imagine a hockey player being annoyed about being asked to tryout. Imagine whining about having to practice their skating or shooting.
Compared to many other things, software engineering requires astonishingly low prep. Your average high school baseball player has spent more time in the batting cage to earn a varsity letter than the median SF SWE has spent on leetcode
Batting in the batting cage is much closer to skills required to perform as a batter than Leetcode problems are to perform at most jobs as a software engineer.
Is there some overlap of Leetcode problems and real world problem solving? Yeah, a little but most of my time is not solving yet another algorithmic problem but thinking about the problem from a business/product perspective, decomposing it, uncovering and understanding requirements, designing code that will be easily read and modifiable by people in the future, etc. 95+% of my time on the job is not trying to figure out what's the best way to find the number of inversions of a red-black tree.
There are jobs that hard and deep knowledge of algorithms is important, for those please go ahead and keep testing people on it. The vast majority of the jobs requiring people to jump through Leetcode hoops is not that, and a lot of those interviews are not testing for what is actually needed to perform the job well.
> If you think something you have to do in an interview is “humiliating” when all they’re asking you to do is demonstrate some skill on a whiteboard you have some self-reflection to do.
I don't know about the author, but some places are asking for a coding exam that takes hours or days. The process of application itself can be a long and complex ordeal where they suddenly stop responding, only to find out weeks later only after you chase them that they already had somebody for the part but wasted your time to make it seem like they went through a proper process. Then if you get the job, you move to the area and sign up to a 6-12 month rent agreement when the probation period is 3 months or less where they can dismiss for any reason.
I think more can be done to even up the relationship. The more the employer demands as part of their process for hiring, the more they should provide the person going through these hoops. The risk is really quite unbalanced.
I know excellent engineers essentially stuck where they work because they cannot afford to miss the mortgage payments. Yes they can get interviews all day long, but the risk of jumping to a different ship is immense.
I like leetcode, and I think the practice is defensible. To be fair, I've made a lot of mental loops to get there.
However, I'm also sympathetic to the "leetcode is useless because you don't do it in your day to day" camp.
I used to lean more towards my mental loop side. But nowadays there has been a big question due to a recent job interview I did.
I recently applied to become a data analyst at a F500 company. It seemed fun and the pay was marginally better than what my software engineering career has been (as I'm not from the US).
I remember that when I applied, I didn't even know what a data analyst was. However, they gave me a technical assessment and I aced it.
Zero prep
Completely aced it
They told me that their work sample round was indicative of the job, so if I could do that, then according to them: I could do the job. It took me 4 hours in total.
Of course, there are tech companies that do this. However, I was a bit stunned that this was so easy. To be fair, getting in wasn't easy as I applied to some data analyst positions for fun to other companies and they all mentioned "you have 0 years of experience in this role". So I was lucky in that sense, and I was also lucky that they were willing to look at the person as opposed to treating me as a number.
There have been 2 tech interviews so far that went the same way. With that I mean: 0 prep, just using your skills and you got in based on those skills.
Look, I like leetcode, but after my recent experience I'm just not sure if it's the best way to assess talent. One could make the argument that it's an easier role? But I don't think it is, I find CRUD relatively easy too which has been most of my job. Though, there was this one week where my leetcode skills really helped as the company had a genuine novel leetcode hard style type of question.
True although I get the feeling from James Maynard that he’s the sort of person you would almost have to physically restrain if he was in a room with a whiteboard in it and you didn’t want him to solve some problem on it.
I completely disagree with you seanhunter ( and everyone else mostly) so please dont take offence I could be wrong but the following is my opinion.
I am thankful most companies are gatekept by people who think like you as I feel it gives me and my company an advantage. In the UK over the course of nearly 20 years I was asked by random interviews to do "fizzbuzz" which I always refused to do out of principle.
The problem being anyone who doesn't know how to code could just memorize it.
My problem was it wasn't a "starter" question it was the equivalent of asking me if I wear shoes on a daily basis and if so, to demonstrate it in an extremely concise way.
I felt it was offensive regarding my ability, indicative of narrow minded testing protocols for candidates, and a lack of respect for why they had chosen to interview me as it meant they probably were unaware of my portfolio, which many companies were.
I am not saying this to convince anyone on HN they are a bad idea as most of them rely on codemonkey exercises like these to prove their worth straight out of college, I am just saying I think they are idiotic.
I’m not taking offense but don’t think for a moment that you know me. I don’t “gatekeep” and don’t in fact ask leetcode questions when I interview. But I have been a software engineer for 20+ years in every possible role from a basic IC up to CTO, been part of small teams, run huge teams been a cog in a massive machine to being “the guy who has to do everything” and I am perfectly happy to do leetcode in an interview and wouldn’t consider it “humiliating” and what I’m saying here is if you think it’s offensive you should adjust your perspective. I personally don’t think it’s great signal in an interview for some of the reasons you say which is why I don’t ask these questions myself.
Many people fail fizzbuzz. Most interview questions at big tech are not much harder than fizzbuzz. You are not qualified to be a software engineer if you can't write fizzbuzz after seeing it for the first time in your life.
"Many people" is an understatement. In my experience 70%+ of applicants fail basic fizzbuzz or reverse a string level questions. If you think these questions are beneath you, good, you've just made my job easier as an interviewer.
If you are applying for a job in the front office of an NBA franchise, and I ask you "which team did Michael Jordan play for?", answering with "this is a useless trivia question, it is beneath me, I can easily google it, how does it matter?" will mean you are not going any further in the interview. You can then complain about it online all you want, but that's how it is.
Similarly, if I ask you "write a program in your language of choice that prints all even numbers from 1 to 100", you can either cry about it or take the 3 minutes and actually do it. If you can't, it's a pretty clear signal that you don't actually write code in your day job and aren't suited for this one.
FizzBuzz trips people up for all kinds of reasons: fear of ‘gotcha’ questions, nerves, overthinking, or even feeling insulted by how basic it is. Sure, some fail because they can’t program—but passing doesn’t mean much either. It just means they’re good at FizzBuzz, not necessarily at solving real problems.
Sure, some qualified people fail simple problems. More likely the applicant failed because they didn't pay attention in school and made a career of copy-pasting stuff from stackoverflow(or AI these days).
Honestly, if you are Google, Meta, Netflix, etc, and/or pay largely above the market rate, fine, go for it. What I don't get is when start-up, who struggle to recruit, do the same.
I have been on both side of the recruitment process. I wrote some technical tests. The thing is, it is very hard to evaluate someone level with synthetic test, and leetcode, a.k.a hope-you-know-the-right-algo-for-this-question, type of test are, in my experience, amongst the worse (especially if live-coded or timed).
This type of test will filter out a lot of competent dev, because let's be honest, most dev don't need to be able to come up on the spot with a dynamic programming solution to a completely synthetic problem.
And I also find that algorithmic / programming skill are often way less important for a SWE than good communication, transparency, the ability to learn, ...
Unless you working on a product where performance is absolutely critical, I find that having a difficult technical test that is a go/no go, yield worst result.
What do you mean by good communication? I feel different fields mean different things with it. E.g. in the consulting world you need to be able to deal with people their emotions. In software engineering, I don't think I ever really experienced this. However, I did experience it as a teacher [1, 2].
With software engineering I feel it's related to HN culture. Of course not everything, but a lot of it. Some things I can think of that software engineers would consider good communication is: (1) steelmanning arguments, (2) clear/logical communication and (3) concise, not long-winded. But often times, I don't hear/see anything about: (1) dealing with emotions or (2) the ability to reduce tension by being playful for example.
How do you see this?
[1] e.g. a student picking the wrong course and being utterly dejected and making the class toxic but it's not really her fault because the way this course was promoted was a bit too optimistic in its marketing.
[2] A student thinking that they're not good enough and they start crying on the spot.
The poster sees it like Hans Zimmer (https://www.imdb.com/list/ls066405124/) being asked to play scales on a piano as an audition for writing a movie score, and then being rejected for some mistake. Indeed, that would be humiliating.
In reality, it is more like a football penalty shootout after a match has ended in a draw. There are too many (over?) qualified candidates, and coding interviews are more fair than choosing randomly.
Thirding this (sandeep1998 and sidpatil were before me)
I became a data analyst recently by the way. They say the field is oversaturated, but I don't think this is true if you're coming from a solid software engineering background.
Grinding leetcode is kind of the same as grinding college classes, where you memorize material, get a passing grade, then forget as much as possible.
Doing leetcode type problems, reflecting on what else can be learned, trying to draw general conclusions about programming techniques and what an interviewer might be getting at with a problem can have some benefits.
Interviews are posturing, not work. The tweet explains all of the work that the candidate is proud to have done, and the disappointment at being judged in a posturing pageant instead.
If you're not already rich, my suggestion is to get used to the idea of passing purely formal tests. It's a really common part of life for everyone else. Sorry.
Yes. You might think it's humiliating, but sometimes showing some humility (rather than tweeting something along the lines of "They want me to do the same type of interview like the peons? Pah, I'm too good for that!") might be in order...
When I went to interview for my first dev job (C++) all I had to say was; I know what a vtable is, I can use a profiler, debugger and I know assembly language. I was hired without having to write a single line of code.
Heh, that's how the interview at my first job went at a small Ruby on Rails company.
The lead developer asked me intermediate to advanced questions about Rails that you'd only know if you knew Rails. He asked me about impl details of a Rails projects on my Github. And I got the job.
I never had an interview as pleasant as that since.
You missed the third type, "write detailed leetcode regurgitating an obscure algorithm for this problem set up to have a very specific answer".
IMO, most complaints about leetcode are about that type. Nobody should need to "grind" to pass the "can you program at all"-type fizzbuzz problems. They're annoying, and indicative of a remarkable failure in our hiring system, but they're a minor nuisance.
Your second type, in my experience, is not typically referred to as leetcode at all, and is effectively impossible to "grind" for.
Unfortunately, my third type is extremely "grindable", as memorizing all the common algorithmic puzzles is a thing you can just do if you spend enough time on it.
> I have written more code than most people and I still will be judged for not being able to solve a coding question
Why would you fail it though if you have written more code than most people (assuming most people means most people in tech and not most people worldwide in general since most people are not software developers), and published in A* venues
I publish and maintain dozens of open source packages that are downloaded millions of times per year and I couldn’t off the top of my head implement a bubble sort. Because why the heck would I ever do that?
The point is that LeetCode does not test the actual skill set of writing useful code, it tests how much you’ve grinded LeetCode.
I might be out of the loop how it's done in tech interviews now, at least where I work I have the impression the questions are not a direct trivia like 'bubble sort', but a problem that can be solved with a few possible algorithms (where e.g. discussion about how to solve it, tradeoffs, ... is also part of it)
Because these kinds of questions are coding trivia and your ability to do them is a function of having seen them before. Having to study for an interview kinda defeats the point, no?
I'm so glad I'm on the ops side where these kinds of games aren't common. At best you'll get some light Linux userspace trivia.
I agree 100%. If a company wants me to do a standardized take home test, I would consider it. If they asked me to balance tree on the spot I would tell them there is almost certainly a well maintained open source library for that or there is google. If they want me to do what amounted to a sprint in thier domain, I would tell them my consulting rate.
This is a mix of laziness and convenience. Hiring often boils down to what’s easiest, not what’s best. Leetcode is a proxy: it quickly filters candidates and spares everyone from more effort. But if you hire based on Leetcode, you’ll get Leetcode engineers. If you hire based on track record, impact, and real-world projects, you’ll likely get someone who’s better—and actually fits the role.
If you want to do your part and can afford it, turn down any Leetcode based interviews and let them know why if they ask.
Yes, always keep basic statistics in mind. Every single proxy you apply that isn't correlated to what you really want will filter-out the outliers towards the median.
And remember what the median job candidate that applies to your place looks like. Do you want to remove the people that don't look like them? If yes, you are on the clear.
That’s fair, but most software jobs aren’t at top-tier companies. HR often stays out of the process due to technical barriers, leaving engineers to handle interviews. Leetcode becomes the easiest way to offload the hassle—ironically, a self-inflicted wound on fellow engineers.
When I worked at a small startup, I proposed and implemented an idea where instead of doing our take-home screening, applicants could instead produce a 1-pager of publicly visible representations of the achievement. Like, if someone has open-source contributions, why should they have to do a canned take-home project?
The idea was that they could select three examples to link to, and then write ~5 sentences on each for why they selected the example and what it shows about them.
The goal of the format was to cap the amount of effort on both sides, while getting valuable signal.
No one actually took us up on this during the time I was there, but I am still proud we offered the option.
I honestly don’t understand what it gets companies. It amounts to eliminating surgical candidates with 30 years experience because they can’t do organic chemistry on the spot.
Who came up with this scam? From all I hear the quality of engineering at these FAANGs has not been increasing.
"I'm so smart that you should just hire me without any interview but also I have to practice for weeks before I can implement a topological sort or longest common subsequence algorithm."
It's a very practicable metric that enables you to show that you're worth getting a top job in interviews. It's very merit based even if that merit is less being a good SWE and more being good at problem solving + self discipline.
It's actually not. It has been shown that you can get extremely good Leetcode ratings by systematically learning their 15-20 most used patterns. This can be done easily in a sort time span. Guides how to achieve this can be found on Reddit.
Same happens to students if they start to memorize old training exams systematically. They exploit that professors and their assistants will recycle/adapt a decent amount of old questions. Doing this is cheap in terms of effort compared trying to understanding everything.
Of course people that succeed in LC tests will defend it. Gatekeeping is a natural response.
That's reason why we stopped using it and spent much effort in eliminating any possible preparability. You get highly qualified pattern matching monkeys if you offer them the stuff they are trained for.
SWEs will happily tell you that their profession is such a highly demanded activity and they don't need a union because the pay/benefits are so excellent.
However, I think this comment highlights the fact that swes are not some privileged elite above at least some of the benefits of organized labour.
the leetcode will continue until union perception improves.
A lot of developers that aren't purely obsessed with frontend or AI-like niches find Leetcoding rote. Ultimately it's just about facing a question you are unfamiliar with and whiteboarding it with a potential employer - it's only humiliating if you've got an ego to swallow.
I think that might be a bit narrow. It's humiliating not because you need to bear your ignorance in front of a judgemental audience. (although that part certainly is not comfortable) It's humiliating because the leetcode is not actually representative of anything you'll need to know to do the job. It's an exercise which selections for who can jump through the most hoops, and doesn't really select for the actual job skills.
That depends entirely on the problem they ask you to solve. All the technical interviews I've done have been completely reasonable basic programming tasks. Yet I always get really good feedback, did one a few weeks ago where the interviewer said it was the best technical interview he'd had in years. I felt like it could have gone better, and like I could have done just as well years ago when I was fresh out of university.
So that tells me that a lot of devs really suck at basic programming, I assume they're the ones joking that their job is just copying code from SO. And probably also the ones who complain about having to show that they can write code before being hired to write code.
Personally I think it's great. Easy way to show that I know my shit and separate myself from all my peers who somehow graduated with the same degree as me despite not being able to write a correct fizzbuzz after 3 years. I'll take a live coding interview any time. I know I'm good at this, don't mind proving it.
I agree with a lot of what you're saying, but I think we probably disagree when it comes to leetcode. One thing I'll note is that in my experience, companies implicitly do not _want_ you to work at too high of a level; they fill up your hours until there is no free time, prevent you from returning to older tasks or projects to improve them, and more or less require "good enough" solutions at best.
This isn't necessarily meant as a complaint, but this is yet another way in which leet code may not really fit the job that's being performed; the company is attempting to get as much work done as possible and for whatever reason is not very incentivized to ensure that the work is done to a high standard. In other words, the super complex leet code sorts of techniques will just never in practice be utilized.
Now to your point, whether or not you find yourself in this situation is going to depend on your job and your company.
If by most people you mean non-programmers, then maybe. Otherwise it sounds like a whining of a B-player who just realized they've never had skills sufficient for NFL.
The fact of the matter is the better you're in understanding CS and the underlying mathematical domains, the easier the leetcode questions get, it always has been and always will be. And contrary to most beliefs, you don't have to memorize individual problems. You learn the domains of problems and solve them with the same repeating methods. But most people just prefer spending their time on infortainment and being presumptious on Twitter, than actually learning stuff.
reply