15 ms·
Leetcode has taught me that I'm a bad engineer
Just like https://news.ycombinator.com/item?id=26468248 https://news.ycombinator.com/item?id=26468248, I give up.
I've been at it intensively for a couple months and my mind simply refuses to cooperate. If anything, after having done 400+ problems I seem to be worse at them than when I started.
Since your time is more valuable than mine, let me summarize:
7+ YoE, MSc. in some science (like it matters)
Last 4 years been mostly ETL with Spark and some backend thrown into the mix with a "senior" title for devops and mentoring noobs.
I used to think this job was a creative one, since writing frameworks and libraries for further use, documenting code and extreme programming made me think that I was building something new and useful.
In fact, due to having extreme ADHD the only thing that kept me distracted during all my overtime was the ability to pursue fun and challenging things. MPP and all the cool stuff you can do with modern tools is fun, interesting and challenging.
Leetcode isn't about fun and challenging things, it's about thinking in one particular way, spitting out solutions using the same exact data structures and jumping through hoops on command without philosophizing or creating anything that can be reused/extended.
This is also what Software Engineering has become: you memorize, regurgitate and participate in agile the masquerade. Creativity is shunned. Tried architectures/patterns are what is expected.
I wish I had practiced law for the past 7ish years instead, because at least all of my skills would still be relevant.
- danielmarkbruce 5y agoDo you have a checklist to go through? Something like: 1 - just try to think of a solution. Sometimes you'll just see it. 2 - what if you sort something? Sort the data and see if it helps to see a solution 3 - what if you stick all the data into a dictionary? Does that help? 4 - what if you stick all the data into a tree? Does that help? Etc etc. You can make a nice long list of things to try. For 90% of the problems, doing one of the things on your list will lead you to a solution.
- jnguyen64 5y agoI think at 7 YOE, you’re at a very good spot where you have the flexibility of being picky with what types of interviews you can choose to interact with. Especially in this current market where it’s one of the rare times that candidates have some semblance of power in the hiring process. You should check out https://github.com/poteto/hiring-without-whiteboards https://github.com/poteto/hiring-without-whiteboards, which is a list of companies that don’t use LeetCode in their interview process. An issue I often ran into when using the repo myself was I’d find a company that sounded awesome, and then find that they didn’t have any open positions. I created nowhiteboard.org to act as a way to pull all the jobs from the companies listed on that repo (and other companies that I’ve manually found that don’t use LeetCode). I think there’s a matter of education and shining a light on the companies that don’t use LeetCode as I feel that the prevailing notion in online communities is that companies only use LeetCode to interview. I’m obviously biased since I’m obsessively researching this, but I’ve read a good few comments online of engineers who’ve stated that they haven’t had to use LeetCode for any of their interviews over their career, and that all of those companies aren’t listed on the repo above. If companies had a good way to source candidates that are hesitant to jump jobs specifically because of LeetCode, I could see our industry starting to make some semblance of progress towards making LeetCode less prevalent in interviews. Anyways, rant over, hope your job searching goes well!
- TurboHaskal 5y agoYMMV I guess. Based on experience, I'll take leetcode or a whiteboard interview over wasting a weekend doing another one of those take away projects. Any mention of these gets a hard NO early on during the interview process.
- civilized 5y agoI'm really pissed about take-home projects now. I put so much effort into one, I passed it, I hit the interview loop, I got very positive feedback on my tech skills ("top tier"). But they ultimately pass. Five days later I get one sentence of extremely vague, useless feedback about my soft skills. That's representative of the entire process, which had numerous long delays and cancellations of meetings. It's really insulting to put so much effort into something and then get treated this way.
- Cd00d 5y agoI too am very tired of home tests. Recently: * burned 2 days PTO putting together a comprehensive solution I was proud of. Feedback was they wanted me more proficient in their specific tech stack. I'd already said I was looking to learn their preferred language on the job and would do the test in a language I was more comfortable with, and they had been happy with that line of discussion. * was given an open ended dataset and told to spend 2 hours on it. Did all the initial analysis I do on any new dataset in my regular day to day job, spending a little more than the allotted time, and found some interesting things. Feedback was that I should have gone deeper in my analysis.
- civilized 5y ago> Recently: burned 2 days PTO putting together a comprehensive solution I was proud of. Feedback was they wanted me more proficient in their specific tech stack. I'd already said I was looking to learn their preferred language on the job and would do the test in a language I was more comfortable with, and they had been happy with that line of discussion. Ugh, gross. You dodged a bullet. Pathetic. I really despise it when compulsively agreeable people agree to something without actually meaning it, just because they're uncomfortable with saying no, and then backtrack later. If any of you out there do this, please stop now. It's a huge waste of time for the people who interact with you, and it's hurting your reputation. > was given an open ended dataset and told to spend 2 hours on it. Did all the initial analysis I do on any new dataset in my regular day to day job, spending a little more than the allotted time, and found some interesting things. Feedback was that I should have gone deeper in my analysis. Yeah, it's obvious that this "don't spend more than X hours" is just HR babble to make the process look fair. They want you to spend a week and pretend it took 2 hours.
- jimmaswell 5y agoWhy go through all this instead of just finding a more laid back place to work? Are the leetcode-gated jobs that much better? I'm at a very good place for my YOE and my interview consisted of one low-stress zoom call.
- deleted 5y ago[deleted]
- iends 5y agoMany people are of the opinion that leetcode style interview jobs, on average, pay a lot more. Is your experience different?
- dnissley 5y agoThey certainly do, but no salary is worth your mental health
- cokeandpepsi 5y agoI have to because I want to be able to retire someday, which is already looking unlikely tbh
- __turbobrew__ 5y agoThis is my motive behind grinding LC to get into a FAANG as well: inflation is out of control, housing in my locale has tripled in price in the past decade, uncertainty regarding climate change and the energy crisis, my lack of faith in social retirement programs. Many people would kill to have the opportunity to study for 100 hours in order to secure a 2-3x increase in pay. That is only 2 hours a week for a year. If a SWE is making $150k and they can spend 100 hours grinding LC to get a job which pays $400k they are going to make $250k extra in their first year of the new job or $2500/hour spent grinding LC. The present value of an extra $250k/year for the next 20 years of your career at 3% interest is roughly 3.7 million dollars. So over the period of a 20 year career you will net $37k/hour spent grinding LC. The fact is that so many SWEs — as seen in this thread — outright refuse to grind LC to get into a FAANG which is why not everyone is making boat loads of money at a FAANG. The process to get there is well known but many are not willing to put in the work to get through the process. I do believe that LC filters don’t reflect a SWEs ability to develop software, but it is a reflection of their commitment to do what it takes over long periods of time to complete an objective, regardless of whether or not that objective has merit.
- eru 5y ago> I wish I had practiced law for the past 7ish years instead, because at least all of my skills would still be relevant. The grass is always greener on the other side.
- froaway4job 5y agoJust don’t do them? I have around 10 years of experience, in a similar place as you. I refuse any leetcode or hackerrank request. I interview pretty regularly, move jobs every couple months. Probably receive 2-3 offers a month without doing any leetcode.
- deleted 5y ago[deleted]
- sharkster711 5y agoYou move jobs every couple months?
- froaway4job 5y agoJust around that time. I work 4 SWE jobs so I tend to move around quite a bit. It comes out to maybe a new job every 4-6 months.
- the_only_law 5y agoAre these full time roles are are you taking purposely short contracts? I always wondering about doing the latter. I get bored very quickly, but don’t want to risk hopping full time roles too quickly.
- froaway4job 5y ago3 full time roles and 1 part time contract. I get bored quickly as well. One of main reasons I started working multiple jobs (the money is nice as well).
- 02 5y agoYou do 3 full time jobs simultaneously?
- 5y ago
- deleted 5y ago[deleted]
- akarve 5y agoAlgorithms do not shun creativity. They are born creatively. But they do set a high bar for new contributions. You either beat the existing complexity or you don't. If you can improve upon either the space/time complexity or even the comprehensibility/maintainability of algorithms, the industry is your oyster.
- kkcorps 5y agoExactly and that is precisely why the current interview system is bad. The companies want candidates to pretend they just invented these algos on the spot and haven't solved like 50 similar questions on leetcode to remember the approach. The algorithms are supposed to be fun and deriving them a group exercise.
- slt2021 5y agoghkm, sorry to break it to you, but these data structures and algorithms are covered at freshman year in CompSci program. leetcode merely tests whether you have foundational education for a professional software engineer. like when you hire accountant you would expect them to know debit, credit and other basic stuff, right?
- plutonorm 5y agoLol. Show me someone who can solve these problems under interview conditions after taking a freshman algo course, without further practice and I will show you the greatest genius who has ever lived. Humans are not that smart. But they are tricky lying assholes who will pretend to have not practiced if it advances them.
- kodisha 5y agoOnce you accept that LC is used 80% for personality traits test, and 20% as actual knowledge test it gets easier to swallow your pride and do the grind in order to get in to the desired company. That is, if you want to be a part of such company. Because, yes, compensation is awesome, and you get the shares and what not, but there is more to life than that. Scratch the surface a bit deeper, there are many different companies out there with different core values that will attract totally different group of people - while having all of the benefits of a "well known company"
- xer0x 5y ago+1 thanks for sharing your rant. I totally agree! I'm at about 18 YoE, and these Leetcode challenges are a major hurtle to pass. I can either study Leetcode problems, or study how to be a better engineer, and the curriculum isn't the same.
- NotAnOtter 5y ago*Leetcode isn't about fun and challenging things, it's about thinking in one particular way, spitting out solutions using the same exact data structures and jumping through hoops on command without philosophizing or creating anything that can be reused/extended.* Yes
- bmitc 5y agoStop caring about and studying Leetcode, which is apparently a full on program now (yikes). It just doesn't matter. I've been a software developer and have never done well in heavy "leetcode" interviews, and it doesn't bother me at all. The reason: I don't want to work for companies that think that is a good way to hire. There are plenty of companies who don't hire or operate that way.
- uday02yadav117 5y agoand here i am, pre-final year cse undergrad who took this as a new year resolution, get good at leetcode and crack interviews,, why ? every single person in my college is doing it and every single company hiring on campus is doing. wanna try finding companies that dont go through this process ? then there payroll isn't nothing close to these leetcode-interview based companies ( factor of 2 to 3 times ) :(
- deleted 5y ago[deleted]
- thom 5y agoI don’t think the weird hiring proclivities of giant companies, nor the rote learning some put into things like Leetcode, should obscure the power and beauty of the algorithms and data structures available to you. Maybe there are other ways into this stuff, but being able to pattern match problems into known (and perhaps even near-optimal) solutions is a tool to your creativity, not a hindrance. It brings conception and execution closer. But it should feel like a series of epiphanies, not like maths homework.
- nraynaud 5y agofunny, I once did a backward scheduling for a client during a task, I had to justify 3 times why I looped backwards over an array. So if I were to create an actually clever algorithm like they ask in leetcode, I don't knwo how well that would go over.
- soneca 5y agoYou don’t need leetcode. I have 4 YOE and I was able to find a job in 3 weeks (after being fired because the company decided to not hire remote outside of US anymore) as an international remote at a US company paying low 6 figures (which is an awesome salary for me). I did not practice leetcode at all and didn’t interview anywhere that would ask it. Stop applying to those companies.
- torginus 5y agoPlease consider that software engineering is one of the highest paying jobs one can get, bar a very select few. And most of those jobs require gruelling education or can't be performed from the comfort of one's home. And also take into account that there are tons of jobs, which still require insane amount of studying and the ability to solve very difficult problems - all non-software engineering positions come to mind - while still paying less than software. The amazing thing about SW is you can get a job - and even some of the best ones - without any formal education. So even if you don't agree that the ability to solve Leetcode problems is predictive how good an engineer is - just power through it. And keep in mind that, for example, Electrical Engineers have to know tons of difficult math, physics, circuit theory, analog and digital design - and yes - even programming, where the acquisition of these skills is just as hard as getting decent at Leetcode - just to make a fraction on what you make.
- odiroot 5y ago> Please consider that software engineering is one of the highest paying jobs one can get, bar a very select few. In the US of A. In continental Europe this is just an office job. Maybe you can consider it an upper-middle class job if you're senior enough.
- mrweasel 5y agoExactly, being a developer or in IT in general pays well enough, but it doesn't compare to SV saleries. I've seen people here on HN complain about salaries we would only pay to the CTO or higher.
- vmception 5y agoPlebian logic. Pay is not related to effort, pay is related to value provided. Its not an insult, comparative effort is a way many people think at the bottom out of necessity to focus and escape, people at the top gaslight people into thinking this way to retain all the value.
- jollybean 5y ago
- lngnmn2 5y ago[dead]
- aristofun 5y agoWhere on Earth did you get an idea that creativity was needed in the first place? Creativity is not scalable, even dangerous, and big companies strive to scale => they need obidient soldiers, playing by the rules and just smart enough to not f*ck up a critical project. Hence the Leetcode. It's a perfect way to ensure obidience, just enough brains, patience and motivation to risk wasting few month of preparation to the interview for the chance to get in FAANG. If you want to be creative — "go fund yourself"! :) I mean it in a positive way, because I feel exactly like you, ready to dump my current well payed job for the risky chance to do whatever I myself feel interesting and meaningful. Wish you best of luck finding your challenges, and don't be so hard on yourself, leetcode is not a big deal anymore. Besides, there are plenty of startups these days full of creative people without leetcode mindset.
- ud_0 5y agoThis is wrong on so many levels. I've been writing code commercially for more than 30 years. > This is also what Software Engineering has become: you memorize, regurgitate and participate in agile the masquerade. Creativity is shunned. Tried architectures/patterns are what is expected. Not necessarily. If it feels like this, you may be in the wrong bubble. And that bubble is going away, too, because these tasks are the first that will be replaced by AI-assisted code generation. In the meantime, you can always Google an algorithm if you know what to look for. There is almost zero usefulness in an ability to regurgitate boilerplate patterns, but there is tremendous usefulness in executing good judgement, creative problem solving, and a solid understanding of fundamentals. Programming is about solving problems that are interesting to you personally, in a way that satisfies you (and ideally your customers). The hard part is finding that niche. > I used to think this job was a creative one, since writing frameworks and libraries for further use, documenting code and extreme programming made me think that I was building something new and useful. You had it right the first time. If you enjoyed making these tools, that means there is still an internal drive in you to solve those kinds of problems. Even if those tools happen to be terrible, apply lessons learned and repeat! Spoiler alert, everyone else's tools also make trade-offs at the wrong points, even successful ones. Don't be fooled into thinking that the big things are already solved. In the end it's about finding gainful employment doing something you enjoy. The good thing about programming is that you get to choose your environment and the nature of your work from a very broad spectrum. > I wish I had practiced law for the past 7ish years instead, because at least all of my skills would still be relevant. If you chased framework specifics and arcane patterns for the last few years, then yes, some of that work is not relevant anymore. Learn from that, stop chasing ephemera. You may be better served by doing deep work on a specific thing for a long time, as opposed to perpetually playing catch-up with JavaScript frameworks to impress the next fickle startup that thinks it'll change the world by selling ads. I would advise anyone who doesn't absolutely need it for an interview to stop spending time on LeetCode and such sites. Instead, invest that time in a project that is relevant to you, and learn everything about a specific domain as deeply as you can. Pushing up a score counter on LeetCode doesn't compare to actually making something competently in the real world. ADHD can trick you into believing that solving artificially parceled-up and pre-defined problems for points in a few minutes at a time is progress, but it's not. Work on something meaningful that doesn't leave you with an empty feeling.
- deltaonefour 5y agoLeetcode style problems do test raw IQ. Here's the thing though, you need to get really creative with EACH of your problems to dodge the people who just practice for these things as even an official IQ test is game-able with practice. If someone solves a problem that doesn't exist or isn't a permutation of an existing problem it is a sign of higher IQ. For example. Given a grid where each element is 1 or 0. Count the amount of donuts in the grid. A donut is a cluster of 1s with a cluster of 0s within it. Donuts can exist within donuts. Extend this problem to 3D to count the amount of hollow shells in a 3D grid. Given a grid where only a single cluster of 1s exist. Determine if that cluster forms a 3D donut. These problems I just created from scratch. A person who solves it in an interview, I know he is smart because I know he never looked it up. Here's the other thing. The skills involved in solving this problem is highly unrelated to the day to day tasks of a software engineer. Additionally I believe anyone can solve these problems (except for the last one) given enough time (and you certainly are given enough time on the job). The software interview is mainly testing for IQ based on how FAST you solve this problem. Either way, software engineering itself is easy, it doesn't need high IQ. But make no mistake. A person who solves these problems and does so both quickly and without pattern matching the problem to an existing one he/she practiced for is demonstrating higher intelligence which is what most interviewers at FAANG are basically trying (and arguably sort of failing) to test for.
- sabas123 5y agoI don't get why most of the critique seems to revolve around memorization. In my (small amount of) experience with LC they seem quite close to regular algorithms exercises. All of which relate to the theory that I got at my algorithms class in some way.
- qaq 5y agoYou can make up to X without jumping through hoops. You want to make Y at FAANG you need jump through hoops. If it was not leetcode type questions it will be something else that lets them filter out people.
- jollybean 5y ago'Medium' level Leetcode questions are a pretty good way to see how someone thinks and codes. 1) They are generally not that hard, there is no 'trick' to the 1st order solution, maybe optimizations, yes, but there's always a straight forward 'brute force' solution. 2) There's 'just enough code' to see how they would basically organize a function or two. 3) Plenty of opportunities to talk about second order small stuff, get the interviewee talking and opportunities to express their insight. Yes, it's hard to think when 'someone is watching you' or 'under time pressure' - I would tend to leave the room or go away and say 'don't worry about time, just ping me when you're done and ready to chat'. But I would be reluctant to hire anyone who could not consistently bang out and solve medium level leetcode problems. Experienced devs should be able to knock them out one by one without too-too much time and few hangups.
- tzs 5y agoSeveral comments have mentioned memorizing large numbers of Leetcode problems and solutions. That's one way to approach it. Another is to approach it the same way you'd approach chess puzzles. If someone told me I was going to have to pass several Lichess puzzles for some reason, I wouldn't go try to memorize a bazillion puzzles and solutions there. I have in fact recently been doing a lot of Lichess puzzles, and what happens is I start to notice patterns. For example there have been several puzzles where the other side has just attacked one of my pieces, while I have one of their pieces attacked. So I can take theirs and they take mine, or I can move mine away and they can move theirs away, or I can do something else and let them decide whether to trade or disengage or leave that situation pending. But wait! For that middle option--mutual disengagement--I see that I can move mine away to a square that gives check. They have to immediately deal with that check so they don't have time to mutually disengage. I'm winning a piece! And now I've learned a pattern--if someone is depending on some sort of symmetry in a tactical situation that gives them matching moves they must play in response to mine, a forcing move such as check can break that symmetry. For each puzzle where the answer is not an immediate application of some pattern I've already learned after solving it I step back a few moves before the puzzle position to see how it arose (Lichess puzzles are all drawn from actual games played on the site and include the score up to that point), identify why the move that set up the puzzle was bad, and see if there is some new pattern to learn from it.
- protomyth 5y agoLeetcode is being a good sprinter, but software engineering is being a good marathon runner. It's a different skill set. Don't let these coding problems drag you down as getting good software out and maintained is something you are capable of doing well.
- bigbillheck 5y agoThose of us who are on the other side of the hiring table need to push back against asking leetcode and similar kinds of things.
- cwoolfe 5y agoHow many interviews with non-FAANG companies have you done in the last year? Before dismissing the industry entirely, find some interesting companies and interview them for the culture you're looking for. Also, I've been programming for over 10 years. I personally know two ex-lawyers who switched to programming and are much happier. I've never met anybody switching from programming to law.
- cwoolfe 5y agoI also have worked with people who left FAANG seeking better work/life balance.
- milofeynman 5y agoI have 12+ years of experience. I get so much anxiety during leetcode interviews that I have trouble reading the word problem and understanding the question. My brain just goes haywire and I have to take deep breaths. Usually I get part 1 done/running and fail because I didn't make it past part 1. I can do just about any easy/medium problem on leetcode. Just can't code under pressure. I don't get anxiety in any other part of my life, ever. I think this speaks to how badly they are at sorting out the original goal of can this person write code, and do they know basic data structures. I recently interviewed somewhere where I did a leetcode interview, then a take-home and then it felt like they didn't care about the 6+ hour takehome and made me do another leetcode. Pretty frustrating! Thanks for the thread, it's nice to vent! It's also good to learn how to be a better interviewer, and write better interview problems. My favorite is a debugging interview, where there are like 4 bugs in the program and we work with the interviewee to solve the 4 issues. I'm sure there are problems with this style too, but it's far more practical...
- colinprince 5y agoA writer doesn't need to do crosswords. A mathematician can hate doing Sudoku. Proficiency at these games is not really related to these professions, clearly. Same with programming puzzles like these, until some MAMAA recruiter decides they will use Sudoku to screen candidates :(
- shahbaby 5y agoSo long as there will be leetcode, people will continue to debate about its usefulness.
- exikyut 5y agoThere's an interesting sentiment shared amongst some of the comments both here and in the linked thread that leetcode is somehow a fundamental measure of social worth or quality. Like, if you can complete leetcode, you're so in the in-group, if something happened to Earth tomorrow and humanity suddenly had to migrate to space, you'd definitely be on the shortlist of people $company would select to join the new colony, because you've been trialed by fire, the results have been locked in, and your value and worth will never be questioned again. At least that's my take on the perspective I'm seeing. Now, written out like that it almost seems like I'm belittling the view, but I'm caricaturizing it to call out an important distinction: Ability to complete leetcode puzzles to acquire a job has absolutely no bearing on your *social inclusion* as a *person*, precisely because the initiative to mandate these tasks is coming from HR departments. And what right does HR have to dictate whether you should feel socially included or not? For that matter, what right does a workplace have to tell you that you should feel small as a person? Leetcode suffers from a sort of simplicity problem. The mental model of what leetcode implies (programming challenges) is virally straightforward to reason about both for programmers (compete! be the best! go to space one day!) and hiring managers (wow this tiny picket fence is the most effective thing I've ever been recognized for, I've made it!!). I mean that it's virally straightforward because it has a simplicity that makes it "click" for everyone in 5 seconds, which makes it easy for it to scale/spread like wildfire. And in an industry where hiring is known-ungood and everyone is grasping at straws, you can kind of see why organizations everywhere (especially the well-known, large inefficient behemoths) have adopted this on a shoo-in basis: in those environments, its user experience is orders of magnitude better than what it replaced. Here's the rub though. That simplicity I mentioned? Other comments here have talked about how leetcode only challenges a specific mindset, that it's extremely narrow. And indeed it is. It's like an IQ test. But there's something about it, a... single-minded, zen-like quality to it, like dance-pad or Tetris arcade games. In a recent thread (https://news.ycombinator.com/item?id=29728892 https://news.ycombinator.com/item?id=29728892) showcasing a multiplayer online Tetris game a lot of people marveled at how fast some players can play (the author of the site linked https://www.youtube.com/watch?v=MJDz4-pr9J4 https://www.youtube.com/watch?v=MJDz4-pr9J4, and my personal favorite (definitely watch the end) is https://youtube.com/watch?v=lE_UHhqAd1c https://youtube.com/watch?v=lE_UHhqAd1c). These people get good not solely because of inherent talent, but because there is a catnip-like attraction that draws everyone in, and these people just keep coming back. I suspect the same is true for leetcode. People just do a Jon Skeet and keep coming back. Reminds me of "the unreasonable effectiveness of showing up every day" (https://news.ycombinator.com/item?id=27833064 https://news.ycombinator.com/item?id=27833064). However, I think that in that overwhelming one-dimensional simplicity of "leetcode means X", these finer points are completely lost in translation and do not scale. Instead we're left with "<blah> passed leetcode and got a job" and "wow this is really hard" and lots and lots of "wow I feel terrible as a person" - where that latter bit turns into what feels like an insurmountable Mr Everest because this is hard for a *lot* of people, including both those in your immediate social circle and the like-minded individuals who hang out on the same forums that you do. If you're pushing to complete these, IMHO the only context that makes sense is in an unexpected-interview-next-week sort of situation. Definitely immediate to short term. Generally speaking, if you're aiming to work somewhere this sort of thing will be valued... it doesn't really make sense to try and get your foot in the door of a marathon race by proving you can sprint, right? That's not to say that most large corporate environments actually give you work that requires a significant cross-section of this sort of skillset. In that regard leetcode is the grown-up version of "I learned all this stuff in school that I'll never use". In practice whatever real work you take on will generally be paced somewhat more sustainably and you'll have ample time to familiarize yourself with the approaches a particular piece of code uses - if they're not already in your mental toolbelt already. The simplicity of leetcode lends toward what might be described as a "false bigger picture" that describes some sort of idyllic scene where you're working on zen puzzles at work all day. You know that isn't going to happen, but it can be so easy to develop a mindset that looks at the world through leetcode glasses and says, well, what if everything I do all day does reduce down to zen puzzle solving? Yay, I get to do this forever! (Protip for ADHD hyperfocusers: observe red flag. Red flag bad. Red flag signal imminent core burnout. Hate job. Stressed out all day. Depression.) In reality, the competitive target that leetcode represents can be overwhelmingly easy to extrapolate into a whole occupation of its own. The fact that leetcode gets people jobs is 100% orthogonal to the fact that some people get stymyingly good at it like with competitive arcade games. There's probably a notable separation/distinction between people who do leetcode all day and people in Actually Interesting Positions. For example, you might've heard of the Oroboros Quine (https://github.com/mame/quine-relay https://github.com/mame/quine-relay), a program that emits source code in over 128 programming languages in successive steps (as you run each program, it outputs code in the next one's language) and when you finally reach the end you wind up with the original source. This person works at a Japanese company that maintains an online recipe dictionary/service. Is this a major tech company? Nope. And that's most likely the reason this person has the time to dedicate to this. They clearly have sane work-life balance. (Work isn't life, it merely sustains it.) There was a post on here recently about making a supersonic trebuchet (https://news.ycombinator.com/item?id=29408127 https://news.ycombinator.com/item?id=29408127). The author made a point that he expresssly optimized for difficulty so he would be able to control for how much time the project took. A very small pet-peeve of mine is when people say that they're passionate about working in field X or Y, as though being passionate is a critical step to solving problems. It can be, *but only if you are not emotionally investing in what you are not capable of*. The problem with passionate investment is that it can be kind of blind, like blind faith or trust - it's just, this is vaguely the right direction to go, put a moonshot amount of mental effort into it and have blind hope that something good WILL happen. (I'm reminded of a quote by a swimmer, who IIRC was asked how he won a marathon swim race. He said that he did not mentally spare any energy for the swim back.) While it is by definition pretty much impossible to have a proper cause-and-effect discussion about the efficacy of this approach, what can hold it back is being passionate about solving problems that you're fundamentally not able to just *do*. Things where you go "...wait that's actually a really interesting problem" and dwell on for hours or days or weeks because, deep down, to your brain it's not a solved problem and instead a Very Good Question. Folding back to leetcode, if you're terminally stuck, firstly you need to both identify where you're investing in what you're not capable of, and figure out what that means. While just the first half of this sentence on paper, this step may end up being a multi-month (-year?) project. It may benefit from therapy/assistance to help work through. With that done, you then need to figure out how to optimize for difficulty, possibly sourcing help to assist fighting stubbornness to solve problems the hardest possible way ("if I learn to solve this I'll be a better programmer!" - no, stop bashing your head against the wall and look at all the tomato sauce you've already gotten all over the floor; you are fallible). Finally, remember that the Zen mindset/simplicity of leetcode describes 0.01% of real work. Now have a hard think about what sorts of positions you really want. If you're saying "I don't know, something cool," then judging your abilities off of the back of leetcode is an especially significant liability, both for you (leetcode cannot provide authoritative direction about how you want to grow) and your employer (who cannot really discern any sense of what to expect from you as a person given leetcode's incredibly narrow focus as a catalyst). Seriously narrow down what you want to do - not just in terms of what sorts of programming you want to do, but what kind of environment you want. Welp, not really sure how to continue this from here so I'll stop now. I think there's a bit of projection and misinterpretation in places - I know I was envisioning a "just left school" stereotype at the end there - but hopefully parts of this are useful.
- mooreds 5y agoSorry you feel this! I agree, leetcode is no good. The nice thing is that there are lots of jobs out there that don't require leetcode skills. Sure, there are many jobs that do, too, but you can avoid them by looking at the job req. Source: I too am bad at leetcode but have had many jobs in my career, including three different employers since 2019.
- brutus1213 5y agoHow do you figure out the leetcode employers from the non-leetcode ones? I refuse to interview at a few major companies because I know that's how they roll. I actually love coding and am good at it. I just refuse to spend weeks/months studying for I consider a useless test.
- jnguyen64 5y agoIf there isn’t any info online about their interview process, you can ask the recruiter if they have any algorithm-based interviews in their process. I’ve found probably 1/3 of the recruiters that reach out to me on LinkedIn will end up telling me if they do or not without requiring me to hop on the phone with them. Alternatively check out my other post in this thread if you’re looking to target those non-LeetCode jobs specifically!
- mooreds 5y agoSometimes it is mentioned in the job description under the interview process. Other times you can ask; it's a great question for the initial call. Also, I've found that smaller companies and consulting companies tend to avoid leetcode style interviews. #anecdata
- sigstoat 5y ago> How do you figure out the leetcode employers from the non-leetcode ones? ask the first recruiter? put it in your emails? ask your friends about their employers?
- ncfausti 5y agoA spreadsheet of companies that eschew algorithm/leetcode style questions, and information on what they do use instead: https://airtable.com/shr5TdnpVYVTpeRrN/tbluCbToxQ2knSLhh https://airtable.com/shr5TdnpVYVTpeRrN/tbluCbToxQ2knSLhh Similar to the first link, as a github repo: https://github.com/poteto/hiring-without-whiteboards https://github.com/poteto/hiring-without-whiteboards Information related to companies, their culture/values, and hiring process: https://www.keyvalues.com/ https://www.keyvalues.com/
- quantified 5y agoYou may need to jump out of your current pond and make your way to a new one. Leetcode problem-solving is not highly correlated with much. Plenty of employers will spring a Leetcode problem on you to join, others won’t. It’s mostly a bubble.
- the_only_law 5y agoOne thing it does seem to be correlated with is making more money as a wage worker than most people will ever see.
- vanusa 5y agoI've been at it intensively for a couple months and my mind simply refuses to cooperate. If anything, after having done 400+ problems I seem to be worse at them than when I started. Yup -- brain fog, paralysis and negative performance are the sure-fire signs of burnout (as least as pertains to your capacity for grinding LC). Excellent preparation for the daily grind of actually working for companies that rely on these tests. Leetcode isn't about fun and challenging things, it's about thinking in one particular way, spitting out solutions using the same exact data structures and jumping through hoops on command without philosophizing or creating anything that can be reused/extended. Exactly. And these are apparently precisely the "skills" these companies are "desperately" seeking to find among the engineers they invite for an on-site interview. And don't forget the strong "culture fit" signal indicated by the sheer willingness to grind, grind, grind. You memorize, regurgitate and participate in the agile masquerade. Creativity is shunned. Tried architectures/patterns are what is expected. That's ticket. This is exactly the mindset these companies are after. That's why they swear up and down on the efficacy of these tests. On the bright side: at least you've been freed of any illusions, by this point, about the intrinsic value of your advanced hard science degree.
- drjasonharrison 5y agoWhere is this generation's "Moving Mount Fuji" that explains the history of leetcode puzzles and their ineffectiveness? https://m.slashdot.org/story/34239 https://m.slashdot.org/story/34239
- LAC-Tech 5y agoMoving Mount Fuji I see someone at microsoft was a fan of The Shamen. https://www.youtube.com/watch?v=SpjnzxtZ6Qg https://www.youtube.com/watch?v=SpjnzxtZ6Qg
- selimthegrim 5y agoThe video is unavailable.
- codeivore 5y ago>"MSc in some science (like it matters)" a formal 400-level course in algorithms will go a long way, preferably at a good university with a good professor, but if you can't get that right now: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/ https://ocw.mit.edu/courses/electrical-engineering-and-compu... computer science is a discipline where people seem to think the education doesn't matter that much, but the truth is once you start to get even a little mathy it matters big time
- usrbinbash 5y ago> computer science is a discipline where people seem to think the education doesn't matter that much I think when people say that education doesn't matter that much in our field; they are talking about formal education as offered in academia. This is not to say that university education isn't valuable. But SE is unique among engineering disciplines because a) it is possible to learn everything relevant in self study and b) a lot of formal education in the area still teaches CS, when most people who attend the courses want to be engineers, not scientists.
- Fattestmoron 5y agoThe math behind leetcode is induction and number theory, courses I took some 20 years ago along with DSA that I haven't used in productive engineering since.
- npigrounet 5y agoI agree. As soon as you start working in physics simulation, 3D rendering, signal processing (image, audio)... you realize that programming isn't just CRUD web apps.
- weatherlight 5y agoI feel like leet code problems help you get good at leet code problems. It's a bubble of a specific type of engineer. Have you tried your hand at project Euler or Advent of code? I feel like those problems are like leet code( or hacker rank) problems but with a different bent, one thats more enjoyable and allows for greater level of creativity when solving for them.
- CodeGlitch 5y agoExactly, leet code is like those brain training games that claimed to made you smarter... When the studies showed they make you really good at brain training games.
- deleted 5y ago[deleted]
- Hermitian909 5y agoI'm sorry this has been so hard for you, it sounds like you're burnt out. I also want to affirm that yes, part of the reason for these tests is definitely to check that you are able and willing to jump through the hoops that a large organization sets up as it scales; it's no fun at all. As someone who's done the grind myself, I would push back slightly and say that the skills I use to solve leetcode problems are ones I've used at my BigTech job, and that that can be fun and useful. Gaining that type of insight though, generally doesn't come from just grinding leetcodes over and over again, but also returning to study algorithms textbooks like CLRS. The insights you gain from understanding these techniques deeply can lead to some truly interesting solutions to real problems. Best of luck.
- enchiridion 5y agoAs an outsider to your situation, I thought this post was satire/criticism until the very end. Sorry you’re going though that. On the bright side, sounds like you’ve recognized the pattern to be successful at leet code. Add it to your tool belt and move on to things you find fulfilling. There is a lot of power that comes from creatively applying those algs skills.
- magicbuzz 5y agoInterviewed at a company recently, who were very keen to take on a senior dev, as they had a lot of 'juniors'. Their interview process boiled down to 'we want you to take hackerrank'. At which point I basically decided they weren't somewhere I wanted to work.
- rcoumet 5y ago
- coffeefirst 5y agoSo don't practice Leetcode. You are not an 3l337 h4x0r who p0wns puzzles for a living. You're a professional software developer who builds useful systems for people and organizations. It sounds like you know the kind of culture you've enjoyed, and you know what the red flags are. Which makes sense. I think everyone gets pickier as they gain experience.
- kirso 5y agoExactly, I saw people building useful stuff for the internet by using if this then that and arrays without even hearing about 1337... its not about that.
- jcun4128 5y agoI think I missed out on this concept, only recently on a Quora email did I come across this concept of leetspeak
- magicalhippo 5y agohttps://megatokyo.com/strip/9 https://megatokyo.com/strip/9 A classic.
- 2sk21 5y agoLoved it! I've been chuckling for a few minutes
- MarkMarine 5y agoNo kidding, that time would be far better spent contributing to open source and building a profile there, in terms of interview performance and mental health. I do a couple interviews a week as an interviewer, and probably once a month we see a talented senior eng who has been out of the interview loop for a while and just explains that, but if you can point to your open source work I'll go read your code and judge that, it's a far better marker. Even if you don't do well at the single LC style question in our interview loop, you can still pass and be hired, there are other things we ask that are specifically NOT LC type questions. Find a startup to interview at, skip the 4 LeetCode questions in 4 hours interview.
- kirso 5y agoI am not an engineer but I am always curious - this must not be the case in all companies out there? Same as for other professions, you would suffer in law for the first 5 years doing proof-reading (the grass is always greener). But if you want creativity - why not just build your own stuff? You have a super power that majority of the planet does not have. Alternatively changing jobs to a different kind of company that structures this position differently?
- usrbinbash 5y ago> this must not be the case in all companies out there? It isn't. There is a bubble where it is prevalent, and there are lots of companies where people actually talk with candidates, eg. about software they have written, why and what they were excited about it, discuss the company product and what they are looking for in terms of contribution, etc.
- slt2021 5y agoanyone can talk, the bar to "talking about software they built" is too low. leetcode is hands on demo of what you can do and how you think. since big tech pays big $$ they can afford to set the bar higher than just talking
- dnissley 5y ago"Too low" is relative -- there's only so much talent out there at any given time, and it's generally going to go to the highest bidder. There is so much demand out there that many lower tier companies can't afford to filter based on even easy level leetcode problems.
- slt2021 5y agothis is good for top tech companies, highest bidders. if mediocre companies cannot hire top engineers, they will not develop software in-house and instead will buy the SaaS software from those big tech companies that pay top dollar for leetcoders. Software scales up easily
- quocanh 5y agoHere's my minority opinion: Leetcode-style problems can be valuable for finding talent. I know this will get me a lot of hate in programming circles. Trust me that I know it feels horrible when you're bad at them. It does not mean you're a bad engineer by any means. It just means you're bad at Leetcode problems! Clearly, you still have strengths that have allowed you to accomplish what you have in your career. Those are strengths that should not be discounted by potential employers and certainly not by you. But that doesn't discount the value of those problems either. You're right that you have to memorize the basic data structures and there is a certain pattern to these problems once you're good at them. But if there wasn't any art to these problems, then after 400+ problems wouldn't you have figured out the robotic algorithm to solve them? I argue that there is more to those problems than bullshit. People who are good at these problems exist. I would not dismiss the strengths of these engineers either. These engineers may not even possess the same strengths you do! But just like you, there is a certain skill or talent that allows them to solve those problems. Those skills are valued by companies who want to run smart engineering teams. It is not the only skill out there, it's just the easiest skill to empirically measure. You cannot run a large organization without a data-driven method. If you trust the human intuition of your hiring team, you will have a lot (more) variance in your hiring quality. Not to mention that your hiring will be biased against women and anyone of a different race than of your hiring team. This is true even if everybody is aware of their own internal biases. This is why large orgs give these problems. Even if you do not share those skills, you might still be valuable as a good engineer. You just have to look for teams that are looking for asymmetric advantages: that is, those who can't afford to compete directly against the richer teams.
- usrbinbash 5y ago> But if there wasn't any art to these problems, then after 400+ problems wouldn't you have figured out the robotic algorithm to solve them? https://www.youtube.com/watch?v=FHwnrYm0mNc https://www.youtube.com/watch?v=FHwnrYm0mNc
- Fattestmoron 5y agoRekt... exactly what a lot of us have been predicting and why it's so hard to force oneself to "git gud" at solving these problems
- _skel 5y agoThere is a lot of cynicism in this thread, including this from the OP: > This is also what Software Engineering has become: you memorize, regurgitate and participate in agile the masquerade. Creativity is shunned. Tried architectures/patterns are what is expected. No, not really. Maybe some jobs are like that. Many are not. But even the jobs that are not like that will generally be gated by interviews that include Leetcode-style questions. This happened in the software industry because credentials and experience often mean nothing, resume fraud is rampant, and the cost of hiring a bad engineer is very high. How about a take-home assignment? Suggest that and many will respond, "I don't work for free" or "I don't have time to work after work, I have a family to take care of." How about just looking at prior experience, or credentials? Resume fraud prevents that, and a lot of companies prefer to hire generalists and find a team for them to work in, rather than hire specialists for a particular team. Outside of research-heavy fields like AI/ML, a university degree is no predictor of success. So, we need to find a way to evaluate a candidate, in a short period of time, that gives a reasonable estimation of how they will do in the job. If there was a better way, and it was proved to be better, the industry would adopt it very quickly, and it would be a competitive advantage for the companies that realized it first. But that has not happened. If you put aside the cheap cynicism that permeates threads about programming interviews, you'll realize it hasn't happened because none of the people who are hiring have figured out a more reliable way to hire, even though there are very smart people doing it and they have an enormous financial incentive to figure out how to do it better. A company that could find all the good programmers who can't Leetcode, and weed out the bad programmers who can't Leetcode, would get an enormous amount of talent that others overlooked. This is just a hoop to jump through, and it's not nearly as difficult as getting a college degree or learning how to code in the first place. I'm not saying it's easy, I'm saying it's doable with time and practice. Most of your colleagues have done it at your current job and also at your future job. I can't do it at the drop of a hat either; I would need to practice like almost everyone else. You can do it too, if you approach it with the right mindset: you aren't supposed to enjoy it or find it intellectually interesting; it's just an obstacle to overcome and it's smaller than many other obstacles you've dealt with before.
- Kaze404 5y agoYour comment starts from the assumption that LeetCode-style interviews are common because they work or are, at least, the best we can come up with at the moment. There are many reasons why this could be the case, and it being the current best alternative is only one of them. Another that immediately comes to mind is survivorship bias.
- bastardoperator 5y agoGo work on something you enjoy, these tests are meaningless.
- the_only_law 5y agoYeah but significantly less useful when it comes to finding a job.
- throwJan22 5y agoI spent a year on LC to get a fang job, I actually felt it helped me improve my short-game programming skills. The problem was I then started applying for regular jobs who didn't care about LC so much and I was failing on system design, experience with frameworks etc. I spent so much time on LC I was neglecting to keep up on cool tech. So now I'm doing that. Its kinda weird being programmer for 20 years in a market where everyone is "desperate" to find programmers yet I'm struggling to get a 200k+ job. Yeah I haven't gone for regular corporate jobs yet but looks like I'll end up in that end of the pool.
- froaway4job 5y agoAsk for more money. Companies are throwing money at candidates these days. I’ve worked through 10 ish offers the past quarter and about half were 200-225k+ base comp. They all started at the 150-175k range. Non “corporate” jobs.
- dnissley 5y agoWait, why are you applying for "regular" jobs if you are decent at lc? Those jobs simply don't pay 200k+. There is only a small percentage of companies that do (maybe a pool of less than 1000?), and they mostly don't care of you have experience with xyz framework.
- isubasinghe 5y agoI am only at 4ish yoe (keep in mind I work casual since I am still studying full time so this isn't the same as full time experience) but I refuse to do leetcode style questions. If companies pass me up because of that, I am okay with that at this stage.
- eru 5y ago> Leetcode isn't about fun and challenging things, it's about thinking in one particular way, spitting out solutions using the same exact data structures and jumping through hoops on command without philosophizing or creating anything that can be reused/extended. > This is also what Software Engineering has become: you memorize, regurgitate and participate in agile the masquerade. Creativity is shunned. Tried architectures/patterns are what is expected. Compare https://sockpuppet.org/blog/2015/03/06/the-hiring-post/ https://sockpuppet.org/blog/2015/03/06/the-hiring-post/
- usrbinbash 5y agoYou have 7y of experience. You can afford to be picky when it comes to interviews. And yes, LC problems do not deal with the day-to-day work of a software engineer. They are fun puzzles to do sometimes, if that's your thing. As a "hiring tool" I think they are abysmal. Fortunately, many companies don't use them. There is a bubble where it is prevalent, but again, people with experience can chose where they interview. If you want Programming puzzles that are actually fun and correlate to problems an engineer actually encounters, I can strongly recommend https://www.codeabbey.com/ https://www.codeabbey.com/
- sanderjd 5y agoLeetcode has exactly nothing to do with software engineering.
- barbacoa 5y agoAs a non-software engineer who codes as a hobby but has no real software career experience I find leet coding challenges to not be particularly difficult or frustrating. Can someone with better understanding explain the negative sentiment around leet coding. Are most SWE just mediocre at coding or is there just some fundamental difference between leet coding and the skills needed to be a SWE?
- deleted 5y ago[deleted]
- jjav 5y agoThe leetcode puzzles have no correlation with day to day software engineering. But yes, that kind of puzzles can be fun sometimes! (Back when I had no family and free time for such things). But worst part is that the interview experience is entirely different from doing puzzles for fun at home. In an interview you need to present a carefully choreographed act where you: - pretend to be quickly discovering the solution out of the blue (even though the original algorithm took some PhD multiple years to figure out) - never solving any part too quickly, or they'll fail you for having seen it before (of course you've seen it before if you've done the requisite months of practice) - never solving any part too slowly, or you'll be labeled "yet another who can't even write an if statement" (comment seen often on HN) - maintain a running commentary to "show how you think", make it credible - while doing all this, be writing syntax perfect code on a whiteboard - while the interviewer makes derogatory comments about how much help you appear to need, alternates between browsing social media on their phone
- VirusNewbie 5y agoYou don't think using maps, trees, recurison, bounds checking, conditionals has ANY correlation with day to day programming?
- Fattestmoron 5y agoDude, that will not carry you through a hard problem. You need the pocket Dijkstra, Kruskals, Union-find, Bellman-Ford, KMP, Kadanes (sliding window), LCS, DP (1-n dimensional), Topological Sorting, NP-hard heuristics (usually DP), BFS, DFS, Backtracking, Memoization (basically DP, but usually used in DFS), Prefix sums (DP as well), that weird palindrome-specific algorithm I can't remember, binary search, bisection (numerical anaylsis ftw!) You also need tries, heaps, red-black trees, B-trees, DAGs, priority queues (heaps) But wait.. there's more! Euclidean algorithm, Josephus Problem, Sieve of Erastosthenes and all the number theory bullshit I can't remember and refuse to, because it has fuck all to do with daily engineering.
- msteffen 5y agoLet me try a contrarian suggestion on the peanut gallery (and maybe the OP will buy too): LeetCode is bad pedagogy precisely because it's repetitive. Consider this problem: https://codingcompetitions.withgoogle.com/codejam/round/000000000043580a/00000000006d1155 https://codingcompetitions.withgoogle.com/codejam/round/0000... Several articles have been written about it, and the winning submissions all implement generic numerical integration in like 10 lines of code (a few even implement Simpson's rule), which is sort of neat it its own right. From reading solutions to other CodeJam/TC/SPOJ problems I've also come across similarly compact implementations of matrix inversion, linear optimization, etc. It sounds like your math chops are more than good enough, and these companies just want to test if you understand 80's computer science anyway. If you study interesting solutions to hard problems, you might stay interested and you might even improve more at boring LeetCode problems than you did after grinding. Chess puzzles help up to a point, but eventually to get better you have to start reading books, and that point comes before all chess puzzles are easy. Pushups help up to a point, but eventually to get stronger you have to switch to a barbell, and that point comes before you can do a million pushups. Finally, I've given this advice in other comments, but if you're just posting this because you want to get hired, my experience is that it's better to focus on interviewing more than on LeetCode. Specifically: think of getting hired as a numbers game, and think of applying for a job as a sales process. That means having a funnel for companies, e.g. "discovered -> openings available -> resume drop -> recruiter screen -> interview round 1,2,3 -> offer". Make a spreadsheet and start filling it; don't just list companies you know about, start googling tech you're interested in to find more companies you can add. If certain types of interviews seem to go better, look for similar companies you can add, and wait to optimize your performance (e.g. with LeetCode) until you do notice a big drop-off in your funnel (e.g. recruiter screen, first round interview).
- taf2 5y agoI wish I could give you some purpose... because you're right software engineering (or software) is just a tool to solve a problem. problems are best solved with purpose... I know I'm lost like you when I don't know my purpose or problem to solve... Perhaps saying this will help you see software is a tool... sometimes we obsess over the tools (interesting problems) but usually we just use them to get to our goals. Not sure what kind of problems you like solving or if problem solving is what gets you excited... but for me there is a little bit of a hit every time... A new tool just equals a new potential solution to a future problem... It is hard to learn new tools, don't be fooled...
- mrkentutbabi 5y agoI am a bad engineer too. But I do Leetcode because it gives me money. Sure I could instead spend time to be a better engineer but why? That doesn’t pay. Leetcode pays. I have to optimize there.
- ironman1478 5y agoSWE doesn't have to be boring and repetitive. There are lots of interesting problems in embedded and HW system design/scoping (software engineers can be really useful for providing requirements to these systems). I work on cameras, specifically on dynamic controls (designing the algorithms + implementing in firmware) and it's so much more fun for me than writing web services, regardless of the scale. There are lots of jobs like this that make programming by, it's just that getting your foot in the door is hard because you have to have the experience. But what you don't have to do is grind Leetcode to get those jobs. You might just have to be willing to take a more junior position, since embedded is different. It took me 3 years to get here from a regular backend c++ job where I wrote the network backend for a database. The only downside to these jobs is that they tend to pay less, despite them being very challenging.
- the_only_law 5y ago> There are lots of interesting problems in embedded and HW system design/scoping Every job I see in these sort of areas are very senior level of staff/principal and want significant domain experience in whatever the hell it is they’re doing. The exception being the lowest rung which always seem to exclusively target university pipelines.
- ironman1478 5y agoYou're right, but the jobs do exist. I'd look for jobs that are embedded linux based. If that's what they want, then they need somebody who knows how to write user space applications and are willing to learn a bit about HW registers. It's a way to get a foot in the door.
- ram_rar 5y agoAs much as I love to blame LC for all the interviewing issues for software engineers, I think the bigger issue is lack of training for interviewers themselves. Very few companies actually train candidates before they take interviews and train them to look for the right "signals". Lack of signal (unable to fully solve the problem) doesn't mean negative signal. It takes some experience and healthy amount of interviews to train oneself in knowing whether the candidate is worth hiring or not. I have failed candidates in the past, who have solved the LC problem, but could not reason tradeoffs and runtime complexities of the code. It was very apparent that, the solutions have been memorized from LC.
- actually_a_dog 5y agoI'll go farther than that and say that the primary fault lies with not having a structured process to interview candidates. If you don't have a structured process, providing training is a lot harder, and calibrating individual interviewers so their ratings are all relative to the same bar becomes near impossible.
- ummonk 5y agoThere's also a wide variety of Leetcode problems, with some (data transformation and validation problems in particular) being more resembling of real life coding than others (e.g. dynamic programming problems). There seem to still be interviewers out there who focus on puzzle-like problems.
- gorgoiler 5y agoI can sympathise with this. Engineering isn’t a linear track. Being able to consistently smash leetcode puzzles out the park will land you a $250k total comp FAANG graduate job, but the more experienced you are the less crucial the puzzle stuff becomes. For a punk grad, being good at bubble sort is all they have. They have no engineering taste, no immune system trained to respond to dodgy design, and no discipline to evaluate when it would be effective to push back on something versus avoiding unnecessary drama. I recently went through several rounds of interviews where the only code I wrote was on my own time, after I had outlined a solution to a practical problem in each of the interviews. I have landed my dream job at a business that’s just closed a series B. I was delighted to be treated like an adult whose technical ability wasn’t fundamentally questioned as part of the application process, but whose organisational maturity and approach to working with a team was. The truth is out there.
- omginternets 5y agoWhy do people grind on leetcode instead of reading papers, watching lectures, reading books, implementing hard-CS things from scratch, and … you know … enjoying the endless joys of a fascinating field? It’ll land you a nice salary, to boot.
- BossingAround 5y agoYou'll find me strange, but I find more enjoyment in a leetcode than in implementing a "hard-CS thing". Probably because it's easier and you're a better engineer than I am. Note that I would never require leetcode during a job interview. However, a single LC question is a small-sized puzzle I can solve in a day (or a weekend). If I want to write a ray tracer, well... Good bye life for a week or two. In other words, I have difficulties finding 50+ hours of large chunks of time to be unavailable to my family in my supposed off time. Leetcode I can do on a couch while my SO watches Games of Thrones.
- omginternets 5y ago>Probably because it's easier and you're a better engineer than I am. Not necessarily! Maybe you just like puzzles? I don't. >In other words, I have difficulties finding 50+ hours of large chunks of time to be unavailable to my family in my supposed off time. If that's all that's stopping you from working on a ray-tracer, I think it's "just" a time-management problem. I work in increments ranging from 30 minutes to 2h. The trick is to schedule them, or at the very least, to have some kind of issue tracking system for yourself so that you can find an appropriately-sized chunk of work for those serendipitous 20 mins.
- sunnyps 5y ago> If I want to write a ray tracer, well... Good bye life for a week or two. Lookup this book: Ray tracing in one weekend by Peter Shirley. You're in for a treat :-)
- tester34 5y agoI share this sentiment, I do find Leetcode and stuff incredibly boring Meanwhile writing your own libraries, parsers, compilers, oh boi. Additionally it gave me waaay more than LC stuff, especially when it comes to learning system modeling / proper OOP
- anshumankmr 5y agoLeetCode is one of the biggest reasons I have anxiety over jumping to a new job. I was never great at it. I somehow managed to get through a good company as an intern without hardcore LeetCode practice that many of my friends did. Didn't get a full time there, spent several months in the pandemic hunting jobs, and I have one now but it isn't something that I am really enjoying but since they have given me WFH, I feel partially inclined to continue the status quo.
- BossingAround 5y agoThere are many companies that don't require leetcode. I forbid it in my hiring interviews.
- anshumankmr 5y agoI don't know what is the situation in the US but I interviewed for a job where I was given an offer of 4.5 lakh rupees plus a bonus of 50K(equaling 6,726.67 USD) and the guy asked me quite a bit of questions from LeetCode amongst other stuff. That was quite terribly low for me personally (and had I known the salary before hand, I would have never interviewed for it). So at least in India, from what I have encountered so far and I am yet to encounter a company that hasn't asked me those questions yet.
- BossingAround 5y agoAh yes, I have forgot to account for local bubble. My apologies. I am in Europe and I've seen LC only in FAANG. If you can, try to apply to companies in cities like Berlin, Vienna or Paris, but of course not everyone has that opportunity.
- Dirak 5y agoI find competitive programming to be creative and expressive. For most problems, there actually can be multiple ways to solve the same problem, with each approach having both hard (perf, memory) and soft (simplicity) trade offs. Leetcode problems remind me a lot of Celeste levels or rock climbing, where even though there might be an optimal solution, everyone solves the problem in their own unique way. No two solutions look the same. Even if everyone is solving the problem with the exact same algorithm, every submission has its own code style, and that's really cool. I also find that Leetcode translates really well into the code I write in my freetime (a roguelike. Real work is boring fullstack crud). I personally hate reaching for libraries in my side projects, so being able to have these data structures and algos at my fingertips and being able to implement say A* or a weighted rng function or something else on the fly has been super handy. I honestly don't think I would be able to implement a vertex fragment shader w/ lighting without the skills I've picked up from Leetcode grind.
- the_only_law 5y ago> For the most problems, there actually can be multiple ways to solve the same problem, with each approach having both hard (perf, memory) and soft (simplicity) trade offs. True, but my understanding is in interviews, which is the context most people are interacting with leetcode, the interviewer is looking for only one of those answers, and you have to regurgitate the right one fast.
- deleted 5y ago[deleted]
- boopboopbadoop 5y agoAs someone that does interviewing, I am not looking for one specific “right” answer. Acknowledging the time constraint and pressure of an interview, I find it acceptable to get non-optimal solutions. As long as they’re able to come up with a reasonable solution and can recognize it as being non-optimal, and offer ideas for how to optimize it outside of an interview setting. I’m not sure how common this way of thinking is, but I wanted to point it out since many of the comments here make it sound like only the best answer will do.
- random_kris 5y agoJump into crypto related stuff. Everything is so new and open to expirimentation Check web3, Bitcoin lightning
- DevKoala 5y agoI’ve never signed up for Leetcode and think algorithm board questions are a bad joke. However, I am very proud of my accomplishments, and I am a highly sough after professional in my network. I would advise you focus on building products and ignore prepping for interviews. Building a product successfully will do much more for your career than numb interview prepping. Find joy in building something. Ignore the external pressure, slack at work if necessary, and use your free time to solve a problem you really care about.
- the_only_law 5y agoThe issue is that all the problems I really care about solving are not “products” in the sense that they’re not commercializable and no one cares about them but me.
- DevKoala 5y agoDude just go for it. Even if it isn’t a product and cannot be sold, having a project that demonstrates your skill is worth more to the right recruiting staff. Also, in trying to solve a problem you care about, you will find challenges and the right motivation to learn the tools to overcome them.
- jl2718 5y agoPersonally I want this kind of attitude on my team. We should not be cargo-culting stupid stuff. We should be clear about the problem and the solutions should be simple and direct.
- theshrike79 5y ago20 years in the business, if someone asks me to do fizzbuzz or leetcode at an inteview, I'll just walk out and won't look back. I've been doing this crap way too long to do brain teasers at an interview. I suck at them, I always have. Advent of Code makes my brain hurt. That doesn't mean I can't design, implement and lead a team to create a service that can handle insane amounts of load with minimal cost. Can't even think of a similarly stupid thing to ask for a different field. Are doctors quizzed on House[0] -style patient cases to see if they can tell the actual cause from the top of their head? [0] https://www.imdb.com/title/tt0412142/ https://www.imdb.com/title/tt0412142/
- DougBTX 5y agoMaybe not exactly House style, but yes. Think one or two paragraph questions, multiple choice answers, a minute or two per question, for multi-hour exams. At least the certifications are recognised, so you can pass once and apply in multiple places.
- theshrike79 5y agoDoctors take multi-hour exams in job interviews? Or is it a certification exam comparable to an AWS/Cisco/MS cert?
- qayxc 5y ago> you can pass once and apply in multiple places You just answered a different question. OP was referring to job interviews, not certifications (most certifications in S/W development work the same way). The analogy would only hold if medical doctors would have to do these multi-hour exams each time apply for a position. So do they?
- YeGoblynQueenne 5y ago>> Are doctors quizzed on House[0] -style patient cases to see if they can tell the actual cause from the top of their head? I don't know about doctors but police inspectors are definitely trained on Cluedo. /s
- ellen364 5y ago
- megamix 5y ago"I wish I had practiced law for the past 7ish years instead, because at least all of my skills would still be relevant" This.
- megamix 5y agoI think that the SWE will converge towards more memorization - which is fine as it's a craft. Our craft will be like plumbers, carpenters etc.
- jameson 5y agoMy coding style completely changed after solving about 400 mostly medium level LC problems LC was obviously to prep for interviews which are time boxed. This means for each problem I had to: - plan, come up with a pesudo-code and verify the correctness *before* implementing it - write concise and readable code - make practical tradeoffs LC isn't fun. Maybe it is for some folks but it was discouraging for me to some extent since it made me compare with folks who can solve these problems when I'm clueless But this was the eye-opener at the same time. It was shocking to see someone can solve the same problem with less than 10 lines of code when my code is 100+. It taught me what parts of my code was unnecessary and also some neat tricks certain languages provide This isn't to say I'm LC God. I still suck at LC but what I appreciate is I get better little by little. I tried a medium level question last night after more than a year of break and couldn't solve it haha I see your point about creativity. I think algorithms are mostly memorization. I'll never be able to come up with KMP algorithm or gift wrapping algorithm from scratch. However, how to apply these algos on a problem or transforming a problem into another problem that can be solved easily is creativity IMO I do have ADHD as well and my advice is this is something you have to solve with pychaistrists with different meds and therapies. LC is not fun but necessary to be a good engineer IMO
- agumonkey 5y agoThe 100s vs 10s loc is something very interesting. I witnessed that when doing DP or highly recursive problems (outside of LC bit still). It did alter my coding too.
- pasabagi 5y agoI'm also ADHD, and I'm completely on the same page as you regarding stuff like leetcode. How do you feel about puzzles in general? I have a really strong antipathy towards 'solving' anything that I know is (a) already solved and (b) where the solution process is not interesting in and of itself. So I hate, hate, hate puzzles. Your post made me wonder if there's a link between ADHD and finding explicitly pointless challenges unbearable. It feels kind of intuitively true that ADHD predisposes one to cut a lot of mental chaff in order to focus on stuff that's engaging and interesting; a puzzle is kind of explicitly chaff, it's something you have to manipulate in some way to get some predefined result. The normal trick if you're up against this kind of intense, adhd-driven disinterest in something is to see if you can twist it in some way until it's interesting for you again. So instead of seeing the puzzle itself as the challenge, turn it into a training process for something for something you consider worthwhile.
- josephg 5y agoWeird. I'm (probably) ADHD spectrum. (I've never been properly diagnosed, but its all very familiar). I love puzzles though. They're short, they have a right and wrong answer. Optimization problems are especially satisfying because you can get a score, and improve on it over time when you come up with clever ideas. I've never done any problems on leetcode, but thats absolutely my wheelhouse and I love that stuff. A few weeks ago I invented a new String (Rope[1]) class by combining skip lists and gap buffers. I don't know if anyone else has ever done that before. Its 3x faster than the next fastest library I could find. There's probably an academic paper in that, but that sounds really boring. Maybe its useful for other people, but I think if you said "leetcode is a training process" to me, that'd make it more boring. For me the fun part is finding those puzzles in regular code. ("Sure this algorithm is simple but its n^2. I wonder if there's an O(n log n) approach out there somewhere..?") [1] A rope is a "fat string" for text editors and things, where you want to insert / delete characters at arbitrary positions. My library is here - https://crates.io/crates/jumprope https://crates.io/crates/jumprope
- pasabagi 5y agoPerhaps it's more attitude, then? What you said does sound interesting - I just never think like that when I'm solving puzzles. When I think puzzle, my mind goes to something like a rubics cube - an object where there's some trick that once you've learned, the object becomes 'solved'. That abrogates any need for creativity, since the solution is already preordained in the design of the puzzle itself, so I just get irritated and (usually) find some way to cheat it.
- SpacePortKnight 5y agoI am genuinely curious as to what makes leetcode harder than MSc? I am not sure if the hate received towards LC style interviews is justified. It levels the playing field and most companies ( except MAMAA ) picks a question from Blind 75 anyways. On a personal note, I do believe LC has made me a better programmer. In my 3rd year of BTech, I was given a task to figure out splitwise (a bill splitting app) algorithm. I was quite proud to have written a modified version of Kruskal's which solved the problem. Last year, I saw the same problem on LC and it had a much cleaner and nicer solution to it. The solution opened up ways for me to think in different terms all together. Similarly when I was in my 1st year, we used to play `Chain Reaction` a lot and I wanted to write a brute force A.I. for it. I had not been introduced to graphs, DFS or BFS algorithms. Hence, I had basically produced a recursion hell but working solution. Later when I had discovered DFS/BFS, I was ecstatic to say the least. Thus, I believe LC helps/prepares/arms you with various techniques which you could leverage to solve certain problems in a more efficient (and also as a result, cleaner code) fashion.
- eldelshell 5y agoIMO, LC (and similar) aren't a bad choice for the interview process. The problem comes when it's used as a silver bullet solution. Most seniors that'll show up to an interview are probably working and simply don't have the time or will to grind LC. Also, SWE is a highly movable profession, where being more than 5 years on the same place is unusual. So every ~5 years you have to polish your CV, grind LC and basically restart learning all computer science concepts you haven't used in those ~5 years, without feeling burnout or dismay.
- cloverich 5y agoI think a lot of the hate comes from a perception that its all about memorization, and that in turn comes from lack of experience with DS&A. There's absolutely a lot of BS, but I think in general as one currently grinding through it, its better than I first thought. Most of the common problem lists cover data structures and algorithms covered prominently in the algorithms book I read (Segewick). Moreover, I find that leetcode, despite its sometimes lowish quality, still provides the best platform to efficiently practice implementing basic algorithms. The Segewick book for instance provides numerous exercises in each chatper. But setting them up, running through them, getting feedback, seeing other implementations -- that would require tremendous amounts of time. Pairing it with leet code, you can quickly jump to exactly the thing you want to work on, get a variety of similar questions, and see competing solutions.
- focus2020 5y agoI am quite puzzled how are you not good after solving 400 problems. I thought if you can solve about about 50 problems you can clear any faang interview.
- evercast 5y agoI don't see this mentioned by other commenters so let me provide another perspective. Namely, I think OP is doing it wrong. OP claims to have done 400+ LC problems over a couple of months. Let me say it out loud here: this is simply crazy. It strikes me as an attempt to not learn how to tackle these challenges, but to actually brute-force through them. To anyone preparing for an interview: don't do this! Grab a book like Elements of Programming Interviews (EPI), maybe follow some online courses on programming puzzle patterns, and then start grinding LC. Maybe interleave grinding with learning? Your end goal should be to develop deep understanding of what you are doing, not memorise the solutions. Also, while going through LeetCode, it is very important to realise that the problem classification there is a bit wild at times. Don't stress that you cannot solve a medium sometimes as they are mislabeled. I did mediums that could be hards, hards that could be mediums, and hards that were just impossibly hard. Typically a very hard problem is not something you should expect in an interview setting as most interviers* don't expect you to implement KMP on the spot. Doesn't hurt to know it and impress the interviewer with knowledge, but if you think memorising KMP is the way, you're mistaken. * - there is still luck involved and you can have a crazy interviewer. It can happen, so just accept it and move on. Don't treat it as a personal defeat. Source: I grinded and I had offers from most of FAANG letters.
- vsareto 5y agoThis still seems off. If you wanted a deep understanding, you'd go for academic books about algorithms and data structures, then go try the leetcode problems without the coaching advice. Otherwise we're just coaching towards the particular interview format, which is only proving you can learn to game that particular format. Coaching for an interview format doesn't solve real world problems which is why people are annoyed about these interviews.
- cloverich 5y agoIf its helpful, I did read one of those academic books (Segewick) thoroughly. But personally I found the practice questions laborious. You have to do the setup, you don't get the feedback. You don't know if its going to be easy or hard. And it takes some effort to see similar solutions. Conversely, once I paired with it with leetcode, I could e.g. finish reading about topological sort and then go look up common problems. I found alternative solutions, comparisons, got instant feedback, etc. To me, the combination of a quality DS&A book with leetcode for the raw (targeted) practice is a really great combination.
- checkyoursudo 5y ago> I wish I had practiced law for the past 7ish years instead, because at least all of my skills would still be relevant. I get the sentiment. I really do. I have been both a programmer and a lawyer. I was a programmer for about 5 years in the late 90s/early 00s. Then I was a lawyer for more than 10 years. Being a lawyer is not better than being a programmer. For the overwhelming vast majority of lawyers, you either make a lot of money killing yourself with lack of sleep and high stress and wasting your life doing the same shit over and over again, or you make a loooooooooot of money doing that same thing but making a bunch of assholes even more money in the process, or you make very little money but not proportionally less hassle/stress/life-wastage. Yes, your skills do retain relevancy for quite a long time though. There is that. But so what? Still gotta do shit-tons of CLEs every year. Still gotta keep up with the laws and chase clients (unless you're the super rare rainmaker or are okay stagnating). After I got tired of being a lawyer, I went to be an experimental scientist. This has been nice, but it's not for everyone, of course. I was going to continue on to a PhD, though my circumstances have changed enough that I am no longer sure if I can do that, as much as I want to do that. I have been thinking long and hard about what to do lately. Having had experience as both a lawyer and a programmer, I tend to lean towards going back to being a programmer. My only real point though, is, the grass is always greener. :) In the end, I really do sympathize. I'm not trying to be critical at all.
- wayoutthere 5y agoI have a friend who is a lawyer. 10+ Years experience in corporate litigation, works long hours, and pulls down less than half of a software dev salary of equivalent experience. And most of the job is rote memorization plus dealing with clients. And every minute of her day must be accounted for. It sounds like hell compared to a software job.
- 3pt14159 5y agoI don't know many lawyers making anywhere close to what I make as a software engineer. Software development isn't perfect, but the compensation, hours, freedom, time off, potential upside, even stupid stuff like being able to wear normal clothes or get flights paid for if you want to go to a conference. It's a pretty sweet gig.
- kkjjkgjjgg 5y agoSolving problems like LeetCode is actually more fun than the average programming job. At least you get to think about algorithms and solve puzzles. In the average programming job, most of the time is spent digging through documentation, trying to find the one method or configuration parameter you need among hundreds and hundreds of pages.
- ummonk 5y agoSeriously, this. LeetCode involves far more creativity than the day to day of a programming job.
- cryptica 5y agoCoding is about creativity and architecture, just not if you work for big tech. Big tech is not interested in quality architecture which minimizes the amount of maintenance work. They will use any opportunity they can get to boost headcount - Poor quality code and complexity bloat is a great way to achieve this. That way there is a constantly increasing need to hire new employees to manage the increasing complexity. These new employees can be placed at the bottom of the org pyramid for old employees to start bossing around and 'move up' the crony career ladder... All while the systems become increasingly more complex and brittle and internal processes become bureaucratic to a kafkaesque degree. I agree, if you love coding, law would have made a better career; that's an industry where logic and reason still matter. It seems like medicine is not good either nowadays for rational thinkers. There's never been a better time to be an idiot. Idiots shall inherit the earth.
- deleted 5y ago[deleted]
- sharas- 5y agoIt is a Human->Resource game, as many other commenters pointed out. It has little to do with being a good dev. Play them! there's a support site for this: dev-assist.com
- globular-toast 5y agoSometimes giving up is the right thing to do. Don't fall for the sunken cost fallacy. If this isn't what you are good at then you should definitely look for something else that is. Lots of people choose a career because of the image or for other reasons and find out they aren't actually good at it. It's normal. Just keep trying. I chose to pursue mathematics after school. I was into computers but for various reasons I didn't think I wanted to do programming as a career. I was good at maths in school and assumed I would make a good mathematician. Well, I was wrong. I didn't get on well with maths at all at university. I went from being top of the class to bottom and I didn't like it. I decided to switch to computer science despite a significant cost and was top of the class again. Later I decided I wanted to stay in academia. Again, I was wrong and didn't get on well. So I switched to industry and I've never looked back. Sometimes you just have to accept that you chose the wrong path. It's no big deal. That's life. You won't choose the right path every time. > This is also what Software Engineering has become: you memorize, regurgitate and participate in agile the masquerade. Creativity is shunned. Tried architectures/patterns are what is expected. Nah, that's not true. Even the leetcode problems can be solved in infinitely many ways. They don't require a particular data structure, they only require a particular time and/or memory complexity. But just like any field, there is an enormous amount that you won't be an expert in. When you encounter those parts, you use someone else's solution. That's part of the job. Nobody solves a problem from scratch in any field, ever. We stand on the shoulders of giants.
- OliverJones 5y ago> I wish I had practiced law for the past 7ish years instead, because at least all of my skills would still be relevant. Hah! Not so. I've been a dev for a long time, and my spouse a lawyer. Back when we were both fresh out of school I remember running her through quiz questions to help her prepare for her bar exam. We devs HAVE NO IDEA how much arcane archaic stuff lawyers have to pretend to know to get certified to do their jobs. For example: "mortmain" (French for "dead hand"). What happens when property is bequeathed to a defunct institution? It's on the test. It's easy to come up with a logical answer. But to pass the bar exam would-be lawyers have to know the right answer, cold without looking it up, and why it's the right answer. Hint: it's not at all logical. And, will a working lawyer deal with that question? Maybe three times in her career if she's an estates-and-trusts specialist. There are thousands of these things for lawyers. Bar exams are hard because of protectionism -- low supply means high pay. The same is true of doctors and developers. Developer pay is high BECAUSE the exams are hard. The exams are hard BECAUSE developers want high pay.
- JaggerJo 5y agoI'm at the point where I refuse to continue the interviewing process if something like this is required. I have plenty of open source stuff the interviewer can peek at. I'm also happy to discuss any technical question to whatever depth the interviewer wants. If a take-home assignment is wished, I'm billing for it. There are plenty of good jobs/projects - be pickier.
- kaetemi 5y agoTry game development. No worrying about imaginary best practices. No know-it-alls who pretend their way is the only way. The ugliest and most novel hacks are the best hacks. Very healthy for the creative mind.
- EMM_386 5y agoI'm a 20+ year Senior Software Architect, Team Lead, Senior Developer and a PM (all at the same time at the moment!). I've done everything from C++ to 20 years of .Net to now TypeScript and Angular 13 with .Net Core REST APIs against an Oracle SQL database. I am self-taught and I can't do these leetcode problems if my life depended on it. I still deliver high quality software on time, and on budget, and have a solid grasp on my career. I wouldn't worry about this too much. It depends on what you are going for. Sure, if you want to pass a FAANG interview where you are going to get these types of questions, go for it. To solve day to day business problems, you rarely need this stuff. You just need to learn how to write quality, performant, correct code that results in solutions. The best way to do this is develop experience in the industry over the years. My 2 cents.
- polyterative 5y agoSimilar experience. 4/5 years in mobile/web, android and angular in Italy. No degree but still now on a solid job. I fully agree.
- nojito 5y ago>I am self-taught and I can't do these leetcode problems if my life depended on it. >I still deliver high quality software on time, and on budget, and have a solid grasp on my career. There's simply no way of proving that to recruiters without Leetcode.
- tharne 5y ago> There's simply no way of proving that to recruiters without Leetcode. If a recruiter can't assess engineers without something like Leetcode, they need to find a another job. Assessing talent is the job of a recruiter, and if the only way they can do that is with Leetcode, that's just pathetic.
- scaryclam 5y agoExcept, recruiters were able to do just that for a really long time before leetcode came along. If a recruiter today can't assess a candidate without toy questions, they should probably reconsider doing technical recruitement.
- giantg2 5y agoI'm not sure that being involved in law would be any better. Most of that is standard, boring, frustrating stuff. Plus, you get to witness the injustices that are performed against people. I wish I could have a fulfilling job. I don't know what that would look like anymore.
- Storm-Bringer 5y agoYeah it's a pain. Here in the UK it's not just FAANG and start ups. Most hedge funds and asset managers are following that interview style. Even old school investment banks are joining the trend, which I find baffling because the comp package is nowhere near the above.
- Cthulhu_ 5y agoI've had a bout of impostor syndrome yesterday as I felt like I was getting stuck. I was trying to use sqlite as a back-end for a document store and thinking about things like constraints. (the problem itself isn't actually relevant here). I was like, how can I not figure this out? Am I overthinking it? Why is this so difficult? Why is there not a Solution out there I can use? So that's the one end. But on the other, this software I've built is already the biggest I've ever made. It combines SQL, the Go programming language, hexagonal architecture, REST, JSON, XML, some custom format like INI files, business logic, hundreds of different validation formats, models, fields, all in a very specialized three-letter-acronym-rich domain, and application that is / will be used by a small community that will end up serving millions if not billions of people (mobile networking technology) So yeah, on the one side I'm a fucking idiot that can't get past day 3 of Advent of Code due to losing interest, on the other I am and have written applications for the masses. I mean there was a time I worked on some iOS app, not on my own but a very small team. It had over two million installations some years down the line. And yet I didn't feel like this was my achievement, because others were involved and they all seemed to have more dedication, more 'talent', more intuition, more passion, and of course, more money.
- floor_ 5y agoCoding in C style C++ taught me that I'm always in the 99th percentile for speed, memory usage and runtime speed. lmao
- brak2718 5y agoIntelligence is many, many dimensional. Leetcode isn't capturing it.
- bootcat 5y agoI am pretty sure Leetcode would not produce engineers like Fabrice bellard - https://bellard.org https://bellard.org Pros - I believe memorizing does help - If you do understand how things work - memorizing does make you fast - Leetcode did help me understand and appreciate pithy code - when I browse other's solutions - Leetcode did help me get inspired to learn new coding techniques - Leetcode did make me a better engineer who is quick to implement solutions which are already implemented - Leetcode did help me to learn libraries, functions, apis which i previously did not learn - Leetcode does bring needed positive peer pressure - sometimes helpful to get up and running and keep running Cons - I believe it makes you run the rat race, you end up in another mill - running for someone else. - It doesn't foster creativity for the joy of programming - but rather it is motivated to clear interviews ( I wouldn't judge my skills based on leetcode alone | the gym is useful but it doesn't define me ) - I always adore super programmers like Fabrice Bellard - In programming, If I would want my skills to parallel someone, if not go beyond - it would be him. I am sure Leetcode wouldn't produce people like him. ( where would you have the time to dream and create if you use all the free time you have to leetcode ? )
- 988747 5y agoLeetcode is basically an IQ test in disguise (since the actual IQ tests are illegal in the US). And yes, it helps to hire people with high IQ, although you still need to evaluate their real-life knowledge and experience.
- oreally 5y agoEvery time I see one of the 'leetcode=IQ' test comments I wonder if the poster has any semblance of what an IQ test is. For what it's worth IQ tests test for pattern recognition skills and learning ability, usually within a short timespan with little to no prior knowledge. A memorized pattern of answers to programming questions therefore does not constitute a IQ test. Anyone who says that is really just wanking off to how smart they think they are.
- zamalek 5y agoI've been a coder since I was 8. I'm one of those obnoxious gifted coders. I have used some of the algorithms that leetcode tests in the real world, but I had to Google them every single time. Leetcode is a race to the bottom. Be the change that you want to see: walk away from this nonsense. You should be keeping your blade sharp, but leetcode really isn't the way to do that. I enjoy programming talks on YouTube, maybe you might: cppcon, fosdem, linuxconf, rustconf, strange loop. You might find another way (OSS contribution is also great!).
- bena 5y agoLeetcode is just a single signal interviewers should use. It's useful, but it's not the entire story. Someone who has strong signals in every other area should be able to have a weak leetcode signal. And I find a bit of contradiction in your post. You both claim that you feel the problems are harder now and that they're all simple regurgitation. These both can't be true. If you recognize they're just simple recitation, then recite. You should be able to crush it with no problem. I don't know if you've done any interviewing yet (it sounds like you're going in that direction), but one of the favorite follow up questions in FAANG interviews is: "and at scale?". And there you have to know how to go massively parallel. Also, what's to prevent you from hanging your shingle and doing those creative/fun/whatever things? It sounds like you've been on a job hunt for a few months and are getting frustrated and taking it out on the one thing you've done the most. Consider you're taking this attitude into everything you're doing. It will come through in your speech, your writing, everything. And as to leetcode itself: What else is there? Hiring isn't broken per se, it's just really fucking hard. I've seen others mention a desire for a test they could give that could test for what employers want. That's what leetcode/whiteboarding is supposed to be. It's a skills assessment. Then you have the people who claim that what they're doing at FAANG isn't that far off what others are doing on average. Let's say that is true. Let's say that 90% of software developers out there could do it. They still pay the most. Most people would still want to work there. So they'd have to filter somehow. This is just a filter that excluded you.
- game_the0ry 5y agoSWE with 6-ish yrs of exp. I get good annual reviews, have been promoted consistently, good feedback overall from not only peers but from higher-level managers, business folks, designers, legal, content /copywriters. But according to leetcode and the FAANG interview process, I am not worthy of employment at any of big tech companies, and I failed a lot of those interviews. I love coding and tech, but leetcode makes me hate it. If I lacked self-esteem, I would not be in a good emotional state, which is something that does concern me - being rejected by many companies can take an emotional toll on a person's emotional health. The good news for folks like me is that there are enough companies that will interview me on relevant skills and $200K-ish TC is enough to live well, especially with good work / life balance. FAANGs and start-ups are shooting themselves in the foot with the interview process - they are effectively: 1. limiting their new-hire pool by having too high of a hiring bar, and 2. hiring candidates that may not have the expertise that they need bc they are not interviewing for that expertise (you might be desperate for AWS / cloud skills, but testing for dynamic programming will not help you find that candidate). Big surprise - there is a hiring problem. This is a big enough problem that the tech companies are doing unusual things: 1. Amazon has been reaching out candidates that were given offers within the last year, and trying to entice them with higher offers, and 2. Apple (and Amazon will in April too, according to Blind) has been giving big pay increases (40% ish IIRC) to keep top performers from testing the market. ^^ There will be more anomalies bc the skills gap will get worse. Good news, folks - likely we will all get paid more, leetcode or not.
- maerF0x0 5y agoLeetcode taught me that the vast majority of engineering problems are rote, and to think of the algorithms and data structures as the primary "Legos" (building blocks) of each task. Besides understanding the algorithms that best represent the problem, the only hard task really is understanding what the customer is trying to accomplish via the proxy of a Product person. To me the really interesting part of engineering is educating Product people and customers about what computers are best suited to do and to rethink problems in systems of cheap tasks less than trying to fit arbitrary human centric processes (ie, a process that works for humans, but maybe isn't the best fit for a computer). Once we have a really clear agreement of the goal, it then fun to find a way to optimize a computer doing it. A really simple analogy might be long division[1] -- if you implemented the long division algorithm on a computer you'd waste a ton of LoC, when you (usually, w/ certain caveats) can usually just use a division instruction. Sounds trite, but you'd be surprised how often I see product people, and even "Senior" engineers, just blindly copying a 10 to 100 step algorithm because that's how the humans do it, missing that the problem can be decomposed to a few general patterns and then iterated, recursed, map/reduced, faster when batched etc. Often times these simpler computer centric algorithms also lead to much simpler code (for each do something simple), vs human centric algorithms often lead to big if/ifelse/else trees or code that does all of the tasks iteratively instead all of _one_ task for all items. [1]: https://en.wikipedia.org/wiki/Long_division https://en.wikipedia.org/wiki/Long_division
- fefe23 5y agoI think the creativity thing is a fundamental misunderstanding. Software engineering is an engineering discipline, not an art. Engineering is about applying the best known methodology to solve problems. That does not mean there is no room for artistry and creativity. But most jobs are looking for software engineers, not artists. To them it's more important to have a reliable ETA and get a robust product than for you to find new and creative ways to solve their problem. Live out your need for creativity in your open source side projects. Generally speaking: Be creating in WHAT your are doing, not HOW you are doing it. The more creative your methods are, the higher the likelihood of failure. Which is good if your goal was to learn something, but not so good if someone is paying you to solve their problem. Also note that most software engineering is grunt work. That does not mean it can't be fulfilling, but it does mean you don't have to be a 10x engineer to do it. View software engineering as a great way to make money. Then tend to your needs in your side projects.
- lewisjoe 5y agoCan confirm. This is my thumbrule as well. At any point of time, have two buckets of projects to work on. #1 projects that lets you apply what you already know and ship fast while being useful in real world (typically dayjob takes this slot) #2 projects that lets you learn new stuff and think creatively, while affordable to fail or ship slowly (usually side projects) Following this gives you a balance and avoids burnouts.
- Kranar 5y agoI feel like this is the issue with calling most software development a form of engineering. That term has been mostly adopted for prestige or to make it seem much more established than it really is. Certainly in some limited domains, yes, it is engineering and what you said applies to it, for example if you're developing software that controls systems whose failure could result in loss of life then you must be accredited as a Professional Engineer to do that work. But the vast majority of software development does not adhere to engineering principles in the way that civil, mechanical, electrical or chemical engineering does. For most software projects including web development or CRUD applications, there is no known best methodology to solve problems. Despite how passionate some people are about extreme programming vs. pair programming vs. TDD vs. this vs. that, there is surprisingly little empirical evidence that one methodology is actually better than another. We do what we do out of imitation rather than out of solid and well researched engineering principles.
- mym1990 5y agoYou memorize, regurgitate and participate in the agile masquerade. Creativity is shunned. Tried architectures/patterns are what is expected. I feel like there is plenty of room for creativity in the high level solution and working with the customer/user. But it makes sense that when you get down to the nitty gritty, established patterns should be used. Without a doubt other engineers will come after you to work on the code, and the last thing they want to see is a super creative implementation that only you understand. You might see a similar thing in architecture. A bridge architect might draw up a beautiful, flowing bridge...but at the end of the day the engineers will use the same techniques to make it structurally sound. So...maybe you might like software architecture more?
- mrintellectual 5y agoIf you've ever done math competitions at the middle/high school level, you'll know that they are fairly poor at preparing you for more applied math. Same goes for Leetcode: it's great for competitions and recreational coding, but "real" software engineering is very different and is much more on the applied side. Software engineering also requires fairly strong communication skills - something Leetcode doesn't help with at all.
- biznickman 5y agoDon't quit! I SUCK at those algorithm tests but frankly the best engineers that I've hired have not done a great job at them. Instead communication skills and a willingness to learn have been much bigger indicators. There are plenty of startups that will LOVE to have you. Focus on getting a job at earlier stage startups. Create your own projects as well. People like seeing those projects to show that you're passionate about coding.
- da39a3ee 5y agoleetcode is testing a broad range of algorithm design concepts. It's an intellectually rich area, not boring or "thinking in one particular way". And it's an area of computer science that indeed does involve creativity. To get started, first understand that leetcode problems fall into different categories: graph problems, "dynamic programming", double-pointer techniques, etc. And within those broad categories, there are families of problems. So first, stop trying to solve random leetcode and pick one family. How about "Best time to buy and sells stock"? Start with the easiest one. It won't be that easy! Don't worry if you can't solve it. Turn to the discussion where people post solutions, or the official solutions page, pick one solution in a language familiar to you that looks understandable, and study it. It might take an hour or more to understand what it's doing, but stick with it! Make notes, whatever helps you. But get to the point where you absolutely understand how that solution works. Now, try to write it out from scratch without looking at the solution. And then, try to do the next one in the family. Keep notes for yourself on what your learning. And eventually you'll have learned how to do some graph algorithms, some "dynamic programming" (it's a silly name and a bit hard to define but it's a category) etc. This will all take weeks / months. But that's fine -- your learning the material of a couple of semesters in an undergrad CS course. It's fun if you enjoy programming and algorithms, in my opinion. If you cannot sit down and learn like that then it is possible that you don't have the sort of mindset that the companies who are employing these tests are looking for.
- jerf 5y agoBeen programming professionally for about 23 years now. I've done Leetcode-like code for my job I think maybe once? A modestly clever bitpacking scheme for a particular problem in a confined space that used algorithms one step beyond what you get in an undergrad education. But I mean, only one step... I didn't have to whip out the Knuth or anything. Sometimes the court jester speaks profound truth under an appealing layer of humor... in that spirit, if Leetcode is bothering you I very seriously propose that your best solution may be: https://www.youtube.com/watch?v=SlKao_Pox5A https://www.youtube.com/watch?v=SlKao_Pox5A
- johncessna 5y agoI'm also anti-leeting for interviews. The one argument for them that I struggle with is when the candidate is told they'll be asked about data structures and algorithms. The reason for the struggle is that, framed properly it tests a real world situation. Given this problem I've told you about in advance, how well did you prepare yourself to answer it? I don't think it's fair to tell the candidate they could be asked about sorting, trees, lists, graphs, dp, lp so try and cram a 4/6 year CS degree(s) into the next two weeks. That said, telling the candidate, that they will potentially be asked to whiteboard a solution involving binary trees, sorting, or a linked list seems fair to me.
- svaha1728 5y agoIt is a bar they use to hire. The barrier to entry. They figure they can't go too wrong if you get over the bar. In the beginning, they just took grads from Stanford / MIT. Then, someone did a study and figured out that was a bad idea, so now they are doing this. Is it a good idea? For a small startup, absolutely not. But they are at a size and scale where that doesn't really matter.
- mizzao 5y agoOn the bright side, this gives startups and other new businesses a chance to hire great talent that is highly resistant to getting poached by FAANG!
- pictur 5y agoIn what sense do you think someone with a high score from such applications is better? In a technical sense or in a problem solving sense? I think the two are quite different things.
- panzagl 5y agoSounds like your job is the software engineering equivalent of fighting parking tickets. ETL is basically the type of problem you get in CS 101, transform a set of inputs into an output. There's obviously a lot of value in that, but it's hardly the sum of all SE/CS. You've done that for 4 years, have no formal background, and now you expect, what exactly? To get a half million a year offer from a FAANG based on your algorithmic excellence? You may have valuable skills and experience, but they are not in type of things leetcode tests- your next step should be further up the chain in architecture and management, not chasing some dream dev job.
- machiaweliczny 5y agoIf you can't solve them after half year of training then you probably aren't in >99% in raw intelligence but that's still fine. Myself I think people might have most problems with dynamic programming as this type of optimization solutions aren't popular in normal programming. Also geometry or number theory puzzles can also be weird. Also tons of these problems are underspecified or just plain wrong, which made me sad sometimes. Algo solving comes down to knowing certain tricks or math properties. On competitive level it seems to be all about memorising solution classes and fitting problem to pattern, which I found boring. I have 15 years of programming and I was better at algos as a kid as it was kinda fun to solve these back then. There's not much fun anymore, so I don't do it but programming I still enjoy somewhat but more inspired by RL/NLP progress but DeepMind won't hire me :/ > ETL with Spark Lol, you do ETL with Spark and talk about creativity in the same sentence. How about designing new platform, startup, game, NLP/vision application, solver, trading bot, search engine, programming language, operating system etc? > This is also what Software Engineering has become: you memorize, regurgitate and participate in agile the masquerade. Creativity is shunned. Tried architectures/patterns are what is expected. I mean that's kinda true in BigCo and many people are fine with that. They want low buss factor and good profit margin and not programming stars. The bright side is you work 9-5 for good salary. Just need correct attitude (I am so inclined to quote hustlers here ;). Express your creativity by paiting, dancing or writing poem and you will be better off and happier.
- taylodl 5y agoDon't despair. I have decades worth of experiencing in a variety of operational environments and when I interview I don't ask any LeetCode questions. Why? Because those aren't the problems I have that I need you to solve. Honestly, what I'm looking for are what a lot of developers brush off: 1. Team player. Modern development is a team sport. Bonus points if you've actually played a team sport so that you have an understanding of team dynamics and how to work with a team to achieve goals. A lot of people still think software development is a career for loners. 2. Good communicator. Developers interact with multiple business groups, multiple technical groups within the organization and multiple technical groups outside of the organization. You have to know how to communicate effectively with each of those groups - who all have varying technical backgrounds and understanding of what you're trying to accomplish. I'm not saying you have to be extroverted to be a modern software developer, but you can't be so introverted that interacting and engaging with others is difficult for you. 3. Big picture understanding (abstract thinking). A successful developer needs to be able to traverse several layers of abstraction. The people who can't do that well can't see the forest through the trees. They get lost in code and can't think about the abstract things the code is implementing and how those things interact with one another. They get lost. You know what I don't care about? How well you do LeetCode exercises. I have some great people I've hired onto my team and I have no idea how well they can do LeetCode exercises because those aren't the problems we have to solve.
- michael-ax 5y agoSounds to me like you're obsoleting your self for the first time. It does not get easier the 2nd, 3rd, 4th or 5th time, but you'll perhaps see it getting easier. As for your perceived lack of something, consider that some part of you is smarter than you know and gives you cognitive issues just so you don't go down a path meant for people that are somewhat less well rounded, less integrated, have narrower talents or whatever. I mean, your judgements on the industry are spot on. Since people will generally only call you a genius while profiting from your work, think of these tests as selecting the most exploitable.
- titanomachy 5y agoWhy do you care if you're good at leetcode? Are you finding that it correlates with bad performance on real interviews? Last time I interviewed (at ~5 YoE) I found that while Facebook and Google still have several "leetcode" style interviews, many other high-tier companies only do one interview of that type (e.g. Stripe, Dropbox). The rest are some combination of practical coding, discussing your experience, and working through design problems. And even the FB/Google interviews aren't as bad as they sound, because you often have an intelligent and engaged person on the other end who is trying to help you demonstrate your skill, unlike the relative vacuum of working through Leetcode problems by yourself. You should be able to get really detailed information on the interview process up-front, either on Glassdoor or by talking to recruiters. Pick companies whose interview process emphasizes your strengths.
- valeri-program 5y agoMost of the jobs out there are slowly evolving into small FAANGS. I started in a rather small, startup-type of company, but with time it became a big buirocratic machine. And I had a lot of collegues I wish know how to evaluate time and space complexity.