It is humiliating to have to do LeetCode grinding for
twitter.com
twitter.com
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.
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.
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.
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.
If you can’t trust the people sitting next to you implement a simple graph traversal without bugs, then your organization has a professional standards problem.
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.
“Teaching a course where you are professor of record is certainly not grinding unless you dont know the topic at all.”
Now what may happen is forgetting what it's like to be a naive, 18 year old freshman in college, and not somebody embroiled in academia for the past few decades.
But the audacity to suggest that it's even remotely within the norm for professors to not know their own material... wow.
Originating a class can be a slog and originating two to lecture next term would be a grind. If you are not professor of record and thus likely did not originate the class then your assignments and reading, hell the entire course is likely layed out for you. Teaching a section of a course you originated or that someone else originated is likely 80% of the teaching load. Familiarizing yourself with this material so you can effectively teach it is doing your job, not grinding.
I'm not sure why you feel the need to suggest I am a crappy teacher or that I lecture from notes more than a decade old. Knowing how accreditation works, how courses are originated, and how sections of thoses courses are taught at r1 institutions, I can only conclude you are ignorant as to how these things actually work.
As a real world example, there are many great online courses from places like MIT and Stanford. Hell you can sometimes even get these online lectures for free, the same material covered by those institutions as part of their degree programs.
How much grinding does it take for a lecturer to to proctor such a class, particularly given that they also likely get FAs to do labs and grading?
If you attended or work at a college where professors grind out new classes every term then that institution is going to have an accreditation and/or tenure issue as "special topics" dont make a degree program.
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
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.
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.
This is why we have leetcode and Fizzbuzz. There are simply too many phonies applying and counting on their charm and charisma to get them the job, which sometimes works when you don't make candidates actually demonstrate their skills.
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.
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.
I mean if it works for you and you enjoy doing it, great but don't pretend it's for a higher purpose. It just sounds like Kool-Aid.
We don't demand surgeons to grind Leetcode for their interviews, nor we ask lawyers to solve trick gotcha questions.
Other industries recognize and value professional experience and are able to determine a candidate's quality with sane interview processes.
I enjoyed your comment though! It’s food for thought
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.
The coding sessions are pass/fail, you need to get to some type of solution that works. If you get most of the way there and were maybe just slow, it doesn't matter, you will not be hired.
On the other hand, companies are very flexible on system design and background sessions.
This lopsided process allows LC superstars to get through despite glaring deficiencies once they are involved in day-to-day work.
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.
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.
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.
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.
The first one if 'write detailed leetcode to solve our slightly different fizzbuzz'
The second is 'we have this specific issue, please leetcode a prototype that will solve it.do not enter in details and edgecases'
The second one is IMHO way better than any other way to find language-agnostic Devs, that's why I'm not against some kinds of leetcode.
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.
Tangentially related
But I'm looking for leetcode buddies to grind with actually. I have around 300 questions done.
I'm not in a rush, and also, I kind of like it. The more I do it, the more it's actually fun.
Anyone wants to join me? We could form a small group.
My email is in my profile.
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.
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.
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.
I don't like competitive programming but at least it is an objective measure. Most criterias in interviews are subjective.
Tired of getting rejected, because you don't have experience with their particular tech stack.
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.
Then you actually get to evaluate someone on how they’d work on your team.
- are their PRs nicely written - do they even know git properly - do they comment code - even for basic code is it structured - does it pass the linter?
Eg. Providing candidates a challenge and the actual pylint command you’ll score it with it’s really easy to see who even bothered to check it passes.
Rather than putting someone on the spot with leetcode see how they behave as a dev. On your real team you’ll have a story with acceptance criteria and a repo to PR into. Give them the same.
It can be a short tiny bit of code but you’ll learn so much about there behavior.
This is also much harder to just google the answer, because you don’t just care about the answer.
Design it so it’s just an hour or two, then offer the choice. Explain you need to evaluate their programming skills for a programming role and they have the choice of interviewer led in-person, or a take home. Both designed to be roughly 1-2 hours.
Who came up with this scam? From all I hear the quality of engineering at these FAANGs has not been increasing.
Even if we take that point as fact. The whole point of the exercise, is to check if you can write it yourself unassisted. If you cannot do it yourself, how can I trust you to judge what the assistant is writing? The assistant is only as good as the supervisor at this point.
https://www.census.gov/library/publications/2024/demo/p60-28...
Stop whining.