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.
> But most people just prefer spending their time on infortainment and being presumptious on Twitter, than actually learning stuff.
Or writing useful software? Open source is a thing, as are independent commercial software projects.
The tragedy of Leetcode is means the best financial ROI for programmers in aggregate is essentially play programmer Soduko instead of spending their time creating novel and useful software.
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.
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".
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.
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
> 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.
If I were given fizzbuzz as an interview question, I would say something like: "Sure, I'll do it. But I've got 40 years of experience, and I expect the rest of the interview questions to be on a bit different level."
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.
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.
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.
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.
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.
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".
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.
It's not always the official 'LeetCode', but algorithm tests like it. It's clear that these tests are to filter out older tech employees, because most never had to take these when they were in college. I've also passed every test I was given, so it's not me being bitter that I don't have the required skills.
It's a symptom of the ageism issue that is so prevalent in the software engineering world.
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.
> 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.
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.
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.
Or writing useful software? Open source is a thing, as are independent commercial software projects.
The tragedy of Leetcode is means the best financial ROI for programmers in aggregate is essentially play programmer Soduko instead of spending their time creating novel and useful software.
Deleted Comment
Just for like 15 to 30 min. per week, nothing much. My email is in my profile.
About me in short:
2 bachelors, 2 masters (bsc: psych, CS, msc: game-design, CS).
Software engineer for 4 years
Teacher (programming) for 2 years
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
My email is in my profile
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.
Deleted Comment
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.
[1] Fields medal winner James Maynard doing first year linear algebra problems on a whiteboard https://youtu.be/100Im_72xl4?si=id2Y1SwvM2ZRBCW4
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.
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
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.
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.
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.
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.
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.
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.
Experience is not equally distributed given any context. Well rounded people overall have been the best to work with.
Optimizing for a single variable is a very powerful technique of the stupid.
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.
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.
It's a symptom of the ageism issue that is so prevalent in the software engineering world.
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.
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
The point is that LeetCode does not test the actual skill set of writing useful code, it tests how much you’ve grinded LeetCode.
Deleted Comment
They would ask you to solve a problem
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.