16 ms·
5 years of leetcode with no progress. I'm giving up
First some background, I have an undergraduate degree in computer science and one and a half years of professional coding experience which ended when I got fired for performance issues. I have worked diligently at Leetcode for those 5 years (exceptions occurred when I got ill). I have been personally coached by a google software engineer for months. I have done and given 100s of mock interviews and paid for some to be done by professionals. I have spent 100s if not thousands of hours on Leetcoding and algorithms trying to improve in any way I can imagine. I'm still not good enough.
This all came to a head yesterday when someone on Leetcode made a post about being able to solve every single Leetcode problem in a year within a year while managing a post doc degree and having almost no programming background (link at bottom of post). It made it clear that Leetcode is a game of talent not hard work. The difference between someone like her and someone like me must be noted by the programming community. The majority of people would not ever be able to accomplish that. I dedicated myself for 5 years to Leetcoding almost exclusively and still am no where near what that person has accomplished. I have put in much more work than that person and have gotten much less from it.
I believe the programming community can learn from this contrast. The culture of always trying harder and thinking success stories apply to everyone that is pervasive in programming circles is toxic. The is reality not everyone is lucky enough to be intellectually gifted to succeed and not all hard work pays off. I am proof of that and this is the type of story that needs to be shared and heard too.
I am quitting programming out of humility and recognition of my limitations. It’s ok to give up and wise to do so when you aren't good enough for something.
https://leetcode.com/discuss/general-discussion/1108530/leetcode-journey-how-to-solve-1600-leetcode-questions-in-one-year https://leetcode.com/discuss/general-discussion/1108530/leet...
- tubularhells 6y agoBuild something instead of doing what is the equivalent of CrossFit but for programmers.
- wealthyyy 6y agoThe C++ example on leetcode front page is dead wrong. It use that "using namespace std" thingie.
- juancn 6y agoWho cares about leetcode? That's not engineering. It's a bunch of puzzles. Software is a team sport, you need a few people that are really good at this crap in a company, but the majority of the work has nothing to do with it. You need the creative types, the methodical, the workhorses, the leaders and the followers, and maybe, a couple of the puzzle solvers. I've seen bright people fail miserably on a real project and the not so bright take it to the finish line. Don't measure your value by a bunch of puzzles.
- amznthrowaway5 6y agoYeah talent matters a lot and only a small percentage of the population is cut out for intellectually demanding activities like leetcode or any type of programming. People on forums like these are usually living in a bubble, you shouldn't take advice from them. Try to find something else you are good at.
- QuitProgramming 6y agoThank you for a comment. It's relief to find someone who has a perspective that lines up with modern research on intelligence. There is so much denial as so many of these people seem to think everyone is more or less like the people they work with and don't understand how even the dumbest person at the office is probably 2 standard deviations above the norm of intelligence. Even higher probably if they work at a really desirable company. I've scored as low as 112 and as high as 127 on officially given IQ tests with the average being around 118. I'd be interested to know if you have any advice for someone with that level of ability.
- mstipetic 6y agoFrom your whining I'd have assumed you've scored in the 90s. So you're talking in such a deprecating manner about being in the top 15 percentile? You need therapy, not leetcode
- gigatexal 6y agoI don’t follow your conclusion. Where did you fail? “I’m still not good enough” means after 100s of interviews you didn’t get an offer? I don’t think you should quit — perhaps there’s just a better way to go about getting a job: how are you at networking
- deleted 6y ago[deleted]
- QuitProgramming 6y agoI am not good enough to pass FAANG interviews. I am very bad at networking.
- gigatexal 6y agoThere are other companies other than the FAANG ones. :shrug: I hope you find something that works for you.
- viklove 6y agoI'll post the cliche quote so no one else has to: > “Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.” It's important to be able to recognize that some skill or profession just isn't for you. It doesn't mean you're a failure, it just means you haven't found your true calling yet. Wishing you the best OP!
- coldtea 6y agoWell, some people are not "geniuses" in any field, and "true calling" is just a mystical new age thing. Being good enough, enjoying what you do, getting better if/when you can are more important. And of course, making money and creating things while doing it. And some of those "genius" stories are just BS leadership cult. Zuckerberg, for example, was just a mediocre programmer compared to tons of regular 100K/year or less working programmers and insignificant compared to famous devs from Brian Kerningham all the way to Jamie Zawinsky, he just had the right timing, the right connections, and the ability to build a rudimentary service all the way through, which is basically what it took.
- gargarplex 6y agoZuckerberg wasn't a mediocre programmer. He was an accomplished programmer who had shipped industry-level code by the time he was in high school. Adam D'Angelo was a USACO gold medalist. https://xkcd.com/386/ https://xkcd.com/386/
- wealthyyy 6y agoThat's why he shipped all code inside one controller.
- florinutz 6y agodid you also try writing code as solution to practical rather than just theoretical problems?
- nicoburns 6y ago> The culture of always trying harder and thinking success stories apply to everyone that is pervasive in programming circles Is this culture pervasive in programming circles? I thought that (for better or worse) programming circles typically had a culture that hailed being "lazy" as virtue (the idea being it leads people to automate things, which is often what they should be doing).
- kuratkull 6y agoYou need to understand something before you can automate it successfully. So you "try hard", improve yourself, and then automate the things that you do not care to think about any more. Being lazy should be in triple quotes with /s added in bold. Engineers being lazy just means they know how to delegate menial work to computers and keep the interesting aspect for themselves. It takes a lot of effort to get to that level.
- Apocryphon 6y agoHacker/programming/startup culture can have seemingly conflicting values. On one hand, there's a belief in autodidacticism, the ability that anyone can teach themselves anything, through cleverly-applied effort and sheer will. Learn to code without a degree, teach yourself a coding (or verbal!) language in 24 hours, continuous self-improvement. Being able to become a great programmer, or at least a great whiteboarder who can pass any FAANG interview through sheer will and personal development, is part of this ethos. It's what the Leetcode/Cracking the Coding Interview grind promises. Universal self-actualization. On the other hand, there's the belief in innate talent or genius, the 10x engineer, unicorn rockstar ninjas. The existence of people more talented than others doesn't contradict the previous point, but it could potentially lead to contradictory behavior- companies that pay lip service to the idea of anyone can code, yet seek only to exclusively hire the very few who are naturally great coders. Laziness as a virtue can fall into the domain of either. You can make yourself smart enough to see everyday situations as systems to be automated and reduce effort. Or you might be inherently skilled enough to do it naturally.
- maaaarkONE 6y agoWhat is your definition of progress? What specifically are you giving up on? What are you not good enough at? I see your frustration, but it's hard to understand what you believe your failure is.
- QuitProgramming 6y agoNot being good enough after 5 years to pass a FAANG interview.
- hvocode 6y agoThis has to be a joke mocking the obsession some parts of HN have with LeetCode and interviews.
- sgeorge96 6y agoMost definitely.
- QuitProgramming 6y agoNot a joke at all. This is my life story.
- Enumerating123 6y agoyour ability to solve leetcode problems has absolutely nothing to do with your ability as a computer scientist or software engineer; most of my friends haven't ever used leetcode (or even heard of it?) and have become CS PhD students, CS professsors, technical founders, open source maintainers reaching millions of people, and software engineers at assort big tech cos. The culture surrounding leetcode and gaming tech jobs is really toxic and you shouldn't let yourself get sucked into it.
- murph-almighty 6y agoIt's toxic, yes, but recruiters seem convinced this is how you get quality software hires, and so we get stuck playing the game.
- donovanian 6y agoAgreed! It's no way to live drilling dumb little puzzles; there's this prevailing attitude that we should be grateful or it's not a big deal. But for me, it's been nothing be joyless, and I've found a lot of satisfaction working at companies that don't require these charades.
- coldtea 6y ago>The culture of always trying harder and thinking success stories apply to everyone that is pervasive in programming circles is toxic. That's true. >not everyone is lucky enough to be intellectually gifted to succeed and not all hard work pays off That's also true. The part about quiting programming though is a non sequitur. You don't need to have innate talent to do something, or even to do it well, you just need to get good at it. And you can get good enough to do things without getting genius level great, or even good at the level (or with the ease) of the person with the innate talent. Know the old adage "good enough to do some real damage" (damage meant complimentary, as in "to do stuff")? That's the spirit. The industry needs tens of millions of programmers, for all kinds of levels, not only innate-talent-software-gurus. I don't even know what leetcode is (I assume from this post it's some kind of education site, or a website with problems to solve to get better, like Project Euler or something).
- murph-almighty 6y agoBroadly speaking, leetcode is a broad set of challenging coding problems that usually have to do with data structures/algorithms and O(n) optimization, that are often presented without much real-world context that relates to the job you interview for. Leetcode.com is a site that preps you for interviews like that and claims to have the interview question sets for FAANG and FAANG-like companies.
- QuitProgramming 6y ago>And you can get good enough to do things without getting genius level great, or even good at the level (or with the ease) of the person with the innate talent Maybe. It depends on how much innate talent you do have. Talent isn't an on off switch. It's a spectrum. It's possible to have enough talent to be a genius, to be just below a genius, to be good enough, but also to not even be good enough to reach a minimal employable threshold. It depends on the person. >The industry needs tens of millions of programmers, for all kinds of levels, not only innate-talent-software-gurus. But who gets the best rewards?
- coldtea 6y ago>But who gets the best rewards? Somebody else. Which is the case for 99.999% of the population, so?
- sgeorge96 6y agoDeffo a troll post lol. Also if not, the fact that you went through all that effort and time is definitely worth something. You can probably smoke most non-tryhard company interviews.
- QuitProgramming 6y agoI want a FAANG level job though.
- JabavuAdams 6y agoWhat are you trying to do, and why do you think leetcode is a way to get there? Do you come from a credentialist culture/upbringing? There are many programming jobs out there where people don't care about your school, your GPA, etc. Also, don't believe some random person's post about what they do or don't do. People often lie or exaggerate. E.g. "oh man, I barely studied but I still got an A". You seem to be suffering, so I don't want to pile on, but it seems kind of crazy to me to spend 5 years on a particular approach to getting a job. Is there something else that's limiting you? Hard-to-understand accent? Language Skills? Social skills? Resume typos/grammar? Contact list? Trying for jobs that are out of reach, when other satisfactory jobs could be in reach?
- JabavuAdams 6y agoEDIT> I've never done leetcode. I've looked at Project Euler, but I have my own interesting side-projects to do instead of jumping through hoops for someone else. Why do you want to program? What do you want to program? Programming is a tool and a craft, like literacy and creative writing. But it is in service of some goal or just the pleasure of doing it. lol, EDITFAIL
- QuitProgramming 6y agoI want to make money to pursue other pursuits with financial security. I also like it decently and thought it was my best shot I had to make money.
- Balgair 6y agoWhy not just go pursue those other pursuits then? I'm not connecting the dots here on how working at bigco helps the long term goals instead of just delaying them.
- QuitProgramming 6y agoThey cost money rather than generate money.
- jay4343 6y agoThere is tons of work out there for programming, you don’t have to do doctorate level algorithm innovations to be a productive programmer. I understand your frustration but maybe you are setting the bar too high for yourself?
- devmunchies 6y agoyeah surely. just having good knowledge of django/rails + react can get you a $80k-$140k salary. or if you're good with people a solutions engineer is a good options, because you are mostly the "nerd in the room" during the sales process: leveraging technical acumen to demo, build hacky prototypes, and solve the potential customer's problems.
- QuitProgramming 6y agoDo you have specific examples of jobs like that that pay on the latter end of that spectrum? Solutions engineer also sounds interesting. Thank you for mentioning it.
- devmunchies 6y agomost tech companies with at least $500 million market cap will pay that (california, seattle, or NY) if you have at least 2-3 years experience. here's a unicorn list (all private companies with at least $1 bil market cap) https://www.cbinsights.com/research-unicorn-companies https://www.cbinsights.com/research-unicorn-companies Pick one and look at engineering roles. For example, I would assume this role at Brex (no affiliation, chose from list) pays at least 180-200k. https://www.brex.com/careers/engineering/4946341002/ https://www.brex.com/careers/engineering/4946341002/ of course, public tech companies (e.g. FAANG, Twilio, etc) will also pay that.
- QuitProgramming 6y agoI want a FAANG level job so, yea, I might be. Don't want to do programming otherwise though.
- asdf3331 6y agoThis must be some new kind of marketing from big-leetcode.
- concreteblock 6y agoA bit depressing to be an advertising, I think.
- hellisothers 6y agoThe cynic in me also wonders if this is propaganda I just don’t k is from where. Who would benefit from “Leetcode tests intelligence, only inherently intelligent people can program, therefore nobody should even try to be a software engineer unless they can leetcode” all of which is false.
- junippor 6y agoVery nice to see this here, as I recently signed-up to leetcode (and bought premium). I just went and check, and in the past 2 weeks I've solved 4.2% of the problems in leetcode, which means it would take me about a year to solve all problems, just like the post you linked. Let me tell you something: hard work DEFINITELY plays a big role. I'm not saying "talent" isn't a factor too, of course. Other than sharing this, I'm not sure what kind of advice I could have. At least on paper you've done as much as you can. If you allow me to guess something about your person with no basis at all: is it possible you just don't enjoy it? I know that for myself if I enjoy something I spent a lot of time thinking about it, even "down time" when your mind just wanders. I've always enjoyed little problems, and I can get lost in them for hours. If you do that a lot it's impossible not to get better at solving little problems. I think this possibly one overlooked aspect of "do something you enjoy". It's not _just_ that you'll get more enjoyment, it's also that you'll be better at it. Good luck.
- QuitProgramming 6y ago>If you allow me to guess something about your person with no basis at all: is it possible you just don't enjoy it? I know that for myself if I enjoy something I spent a lot of time thinking about it, even "down time" when your mind just wanders. I've always enjoyed little problems, and I can get lost in them for hours. If you do that a lot it's impossible not to get better at solving little problems. I think this possibly one overlooked aspect of "do something you enjoy". It's not _just_ that you'll get more enjoyment, it's also that you'll be better at it. I do enjoy it. I just am bad at it and constantly get stuck and go blank. It's not fun if you're not competent enough to engage with the material. When I do easier problems that flow, I enjoy it just fine.
- asidiali 6y ago> It's not fun if you're not competent enough to engage with the material. Switch to less challenging content and master it before moving on again.
- mfer 6y agoThere are numerous schools of thought on programming. For example, I've seen those who are interested in leetcode, algos, and the like. I remember this one time where management wanted to have JS/front-end devs answer questions about C and b-trees. They couldn't find anyone to make it through the whole interview process. The problem was that people who could handle the C and b-trees couldn't cut it at the JS questions that came later. The JS devs never got passed the C/b-tree questions. There is a culture of elite knowledge and a club around that. Some are into the school people have degrees from and that kind of thing. There is another side of it that's about the ability to use code to problem solve. I remember meeting this senior engineer that customers used to constantly request by name. He was one of the most senior levels at the company. I later learned that he had no degree. He had a ton of hands on knowledge and understood the technology from years of working. He learned it like a skilled trade and he was valuable to everyone involved. There are places where both types of folks can thrive. I personally go after the problem solving type situations because I don't like forms of elitism and I really like solving problems. Don't look at the leetcode space and Google mentorship as the whole realm of software jobs. There is a lot more out there and many very successful people doing other types of stuff in software.
- sandrom927 6y agoagree on the whole elitism notion. it is about time we abolish that :)
- the_only_law 6y ago> I personally go after the problem solving type situations because I don't like forms of elitism and I really like solving problems. I used to be like this as well, till I noticed the people solving the types of problems I wanted to work on we’re either guarded behind these leetcode type interviews or something much more difficult to “fake until you make it”.
- mfer 6y ago> “fake until you make it” I don't like this idea. I prefer the idea of mentoring and people constantly learning. Faking it is kind of like deceiving until you figure it out. People should be mentoring and teaching each other. This levels up the people around us. > I noticed the people solving the types of problems I wanted to work on we’re either guarded behind these leetcode type interviews or something much more difficult This is a real thing. Sometimes you need a foundation in a hard problem that is often taught in some university courses. There are some hard problems here and people look for that. Sometimes it's math skills or specific algorithms. Sometimes the people working the hard problems artificially add levels to their processes to keep clubs exclusive. Most software isn't these hard problems. 99.9% of software is not these hard problems.
- dilippkumar 6y agoPersonal anecdote: The best coder I’ve come across in my career once told me he attempted to solve some leetcode and was stuck fairly early and gave up. I was surprised to hear that he even cared to try. What made him a fantastic engineer was his meticulous work ethic, his track record of never having missed a deadline, him spending 40% of his time designing before he even wrote a single line of code, writing extremely human readable code, his obsession with unambiguous and simple APIs and his extensive unit testing. He was humble, loved to crack jokes and was always fun to solve hard problems with. None of that is captured by leetcode. This is probably my personal bias - but the only people who work hard at leetcode are people who want to prove something to the world. I’d rather work with people who like the profession and don’t feel compelled to prove anything.
- jacques_chester 6y ago> but the only people who work hard at leetcode are people who want to prove something to the world. Not the world. Hiring committees.
- QuitProgramming 6y agoThe ability to do Leetcode well when a reasonable amount of time is applied to it and doing all the things you mentioned are correlated. The only issue here is the guy, in your words "was stuck fairly early and gave up." He didn't see it worth his time. Many people share that attitude about Leetcode, but it doesn't mean it's not tapping into something that's important for the job (intelligence). What you are saying would be kind of like someone saying "I knew an athlete who could do a mile in under 4 minutes, but one time he got on a bike, fell and then never cared to try biking again. Therefore, the ability to ride a bike has nothing to do with athleticism." Which is technically true, but misleading. It misses the key idea that the main factor is the person not taking the bike seriously as if he actually decided to take the time to learn how to ride a bike, it's virtually certain he would be better at it than 90% of people because the underlying traits that make one exceptional at running would also make one good at biking. It also sounds this person had a good temperament and personality which worked in his favor. That wouldn't matter though if he didn't have the cognitive ability to never miss deadlines and correctly design out code in his head and on paper before writing it as you say.
- Bjartr 6y ago> I'm still not good enough. Good enough for what, exactly? A person's value as a dev has little to do with how good they are at leetcode problems. What matters is whether or not you can deliver working software and communicate effectively with your team. Sure, there are some positions where having a truly exceptional ability with algorithms is a significant benefit. Things like graphics and simulation, HFT and squeezing every last drop of performance out of hardware. But, be aware, that's a relatively small subset of work that developers do. I'm sorry to hear you've burned yourself out on programming as a whole by tunnel-visioning on leetcode problems. Whatever you pursue next, I encourage you to try approaching it from a more holistic direction.
- Domenic_S 6y ago> Good enough for what, exactly? A FAANG-type eng job. IMO you're right that LC is not a predictor of success as a SWE, but it is for better or worse (I think worse) a gating factor for landing the job. We could talk for hours about how lazy it is to use LC-style problems as the gatekeeper, but the reality is that's what it is (ref: the guy who wrote Homebrew failing Google's interview loop). OP seems to be conflating LC success with SWE success. LC is not what you need to be a successful and productive engineer, rather it's the prep you have to do if you want to play the FAANG interview game. What OP might be missing is that FAANG isn't the only show out there, and plenty of great non-FAANG companies don't interview this way.
- WhompingWindows 6y agoSadly, many careers now have such gate-keeping tasks, or "hoop jumping": Medicine/MCAT, Law/LSAT, PhD/GREs, Undergrad/SAT, and for all of the above you need a high GPA, which is not a good measure because it's localized to the school and is not weighted for class difficulty. My own story: I was pre-med at a deflationary school, I did very well on the MCAT, but my GPA was below average, so I got 0 interviews on 11 apps (thousands down the drain and years of effort too), and decided research was a better field for me than medicine.
- godot 6y agoThis leetcode interview stuff is not healthy for the industry and not healthy for engineers personally. What I am reading here is that you have had one job that didn't work out. Leetcode honestly means nothing to me. Here's an anecdote from myself. I have been a software engineer for 15+ years. I was a computer science major like you in college. My first job out of college was at Intel where I also only lasted less than 2 years. While I didn't get fired for performance issues, my first annual performance review was also a performance improvement plan and I was the bottom of the pack (i.e. did not get a raise). I had issues coming from years of education-focused mindsets that I thought passing exams was all it's about, and I often did not "get" what it means to be productive in a company as an employee. It took me time over the years to "get it". After Intel I worked for a friend's web dev shop for a year. Then I finally landed at a startup (which became a unicorn later), which was 2008, and the rest was history -- I was promoted several levels in said startup, and later cofounded my own funded startup (which didn't work out at the end), and I went on to work as a staff engineer at my next two companies. And finally, I probably wouldn't be able to solve any leetcode problems (maybe above the easy ones). It's your personal decision to stay or quit programming, but if you had any willingness to stay at all, I would encourage you to simply ignore this leetcode stuff and interview at companies that don't do leetcode whiteboard interviews and try to work as a software engineer at a new company, so you have a sample size of more than 1 company in your work experience. And when you do so, try at it from a standpoint of understanding the business, understanding what makes an impact and drives the business forward, and do those things. At the core level, that's the most important thing about working as a software engineer.
- ryandrake 6y agoLeetcode and the “grind fake problems as interview prep” mentality is the absolute worst thing that has happened to the software industry in the 30 years I’ve been in it. If it disappeared suddenly, we’d all be better off.
- fatnoah 6y agoI agree that we need a better way to evaluate people that meets the purported goals of being fair and eliminating the chance for bias. I joined a FAANG at 44 and had to do the Leetcode evaluation. TBH, it wasn't so much a grind as a bit of re-learning how to ride a bicycle. I have the "benefit" of being old enough that solving those kinds of low-level problems was work I actually did in my younger days before all of these fancy libraries existed. I spent about 10 hours over the course of a couple weeks just "refreshing" myself on ways to identify the brute force vs. clever solutions to some basic CS problems of array manipulation and graph traversal. It was pretty low effort, but it was the side show to my decades of experience. For younger folks with only a couple years experience, I can see how it becomes the "everything" because it's the majority of their evaluation.
- peter-m80 6y agoYou don't need to be an expert in data structures and algorithms to have a successful programming career. Unless you work in some cutting edge project, optimization or framework development, most of your work will consist in performing api calls, copy pasting and glueing boring pieces of code together. So, my recommendation is, instead of becoming an expert in solving code challenges, be an expert in implementing real world solutions. Learn some useful framework and try to build something useful with it.
- QuitProgramming 6y agoThe talent that makes one good at coding challenges also makes one good at implementing real world solutions. That's why the biggest companies use Leetcode to test interviewees despite having huge resources to pick any other method that promises better predictability.
- AnimalMuppet 6y agoSeveral people have tried to tell you this, but I'm going to try again: Your statement here is false. 99% of programming is using skills that are rather unlike the talent you need for leetcode. Can you follow a recipe? If you're missing an ingredient, can you employ a substitution? That's what an awful lot of programming is like, except using keyboards instead of stoves. Now, it still takes some talent - a talent for computer "recipes" rather than literal cooking recipes - but it's not as out of reach as leetcode leads you to believe.
- QuitProgramming 6y ago>Your statement here is false. 99% of programming is using skills that are rather unlike the talent you need for leetcode. Do you have evidence for this claim? Specifically, that the skills and talents that make one good at Leetcode are not correlated and predictive for being a good programmer.
- sneusse 6y ago> The talent that makes one good at coding challenges also makes one good at implementing real world solutions. I actually never heard of Leetcode before this thread but I highly doubt that. This seems to be a puzzle site like Codewars or Codingame. While puzzles like that are fun, they are only one small part of being a developer. Design, architecture, UI/UX and communication are a lot more valuable than being able to write your own Sudoku Solver.
- corytheboyd 6y agoI never graduated with a CS degree, have never done leetcode exercises, yet I found a career in tech. I’m not trying to be toxic as you say, in fact we probably agree about elitism in the community more than you think. What worked for me was taking on an internship way back when as a web developer, which I turned into a part time and then full time job, which ended up getting my foot in many doors, and I credit it to bootstrapping my career in tech. The landscape is different now though, this was just before coding boot camps were a thing. Most people here will probably disagree with internships on principle, but I think they’re saying that from a position of entitlement given that they already made it. Your outlook sounds bleak, and you said you gave up already, but if/when you decide to pick it up again, you need to focus on getting in with actual people as well as just having raw technical concepts under your belt. Maybe. It’s all a crapshoot too, so don’t weigh any one bit of advice too heavily.
- anakaine 6y agoI'm inclined to agree with your sentiment here. My degrees are in earth sciences and engineering. What I do day to day is apply the principles of these things, are they are relevant to my field, to the role that I'm in at a technical level. In fact, many of my peers and colleagues are in a similar situation. Some of the top software in the couple of industries I either am / have been across is not written purely by those with CS degrees and are full of raw talent. 50-80% of the workforce are those that have other skills first, and can also do a good job with code - and the CS guys make it elegant and work. A geologist / environmental engineer / geotechnical engineer / fire scientist / ecologist will guide and help write PoC, others make sure the PoC fits, and the CS guys make sure it performs. Not everything is a Silicon Valley darling that fits the echo chamber template we constantly see on HN (This is an incubator / startup funds news feed after all!!). To OP: You got in to this for a reason, and are likely good at it. If you need perspective, now might be a good time to check out what other options you have, gain some perspective, spot some holes in whatever fields those options might exist, then start filling those holes in with your coding ability. Now you're working for you (at least partially), might be able to turn that into income (if it's novel enough), and still get to indulge your passion of writing code.
- villgax 6y agoLOL
- JabavuAdams 6y agoNever heard of leetcode before now and it wouldn't really factor into my hiring decision.
- Apocryphon 6y agoAs ubiquitous as Leetcode/whiteboarding might be, especially as a filter for FAANG, anecdotally it feels like Silicon Valley startups are starting to catch on to how much applicants are disgruntled towards it and starting to invest more in interview processes that are more like pair programming, so more domain-specific.
- machiaweliczny 6y agoAbility to do leetcode =! job perf. I think Google even proved this to themselves although they still hire based on it...
- QuitProgramming 6y agoWhen did Google prove that?
- Barrin92 6y agoif this is a serious post, I'll add my two cents. I have a experience as a dev but maybe more importantly here as a chess player and coach at a reasonably high level and the discussion of talent and work comes up a lot. My two cents are, unless we're talking about very high aptitude in a domain (say the top ~0.1-1%), most is reachable through deliberate effort for most people. The important thing is that time spent and effort are not the same thing. To get better at anything, you need structured, high quality, deliberate practice. Just doing leetcode for five hours a day is not automatically going to improve your coding. What stands out from the example of the postdoc is that the first thing she did was and took online Berkeley courses on data structures and fundamentals. If you learn fundamentals before you hack away you can safe yourself a lot of time, because a lot of leetcode problems is just identifying and applying CS theory. To get better being frustrated and sinking hours per day into something is not a healthy or good thing. Focusing on weaknesses, having a plan on how to improve, studying fundamentals even if it isn't fun or rewarding and keeping schedule is how people get better.
- QuitProgramming 6y ago>if this is a serious post, Why would this be a joke? >My two cents are, unless we're talking about very high aptitude in a domain (say the top ~0.1-1%), most is reachable through deliberate effort for most people. Yes, that amount of aptitude is where I want to be. Who wouldn't? Furthermore, do you have evidence for the claim that anything below top 1% is achievable by anyone? >What stands out from the example of the postdoc is that the first thing she did was and took online Berkeley courses on data structures and fundamentals. If you learn fundamentals before you hack away you can safe yourself a lot of time, because a lot of leetcode problems is just identifying and applying CS theory. I had a degree in computer science. I had more of an education than she did. I also looked at lectures of similar kinds myself. >To get better being frustrated and sinking hours per day into something is not a healthy or good thing. Focusing on weaknesses, having a plan on how to improve, studying fundamentals even if it isn't fun or rewarding and keeping schedule is how people get better. Why do you assume I didn't do any of this during my 5 years?
- Barrin92 6y ago
- bloody-crow 6y agoI'm a successful senior software engineer with a salary around the upper bracket across the industry. I've never done Leetcode in my life. I don't even know what the site looks like. I don't have a CS degree and I've also never taken an interview where I had to write code on a whiteboard. Leetcode is not necessary.
- t0mbstone 6y agoSame here.
- onepointsixC 6y agoHow, if you don't mind me asking? What did your path look like? How did you go from job to job?
- QuitProgramming 6y agoI would also like to know how.
- bloody-crow 6y agoI got a degree of electrical engineering in one of the eastern european countries while learning some scripting languages as a hobby, since I was a nerd since high school and wanted to know how to build websites. At some point I learned enough Ruby on Rails to be hired as a junior dev in a sketchy startup in my home-country. I kept learning new stuff and improving doing the work and at some point became a confident Mid level dev. I interviewed with a RoR consultancy in US and they offered me a job and an H1-B visa. I started maintaining open source libraries that I needed for work and got some recognition from it. I went to some conferences with my coworkers in US and networked. After a year and a half in the consultancy, I interviewed with a successful YC startup and got an offer and moved to SF. After another two years in SF in this company I moved to Seattle and continued working for them remotely. I now work for a different YC company with an office in Seattle (although it's been fully remote for the last year for obvious reasons) and most of my coworkers are ex-FAANG employees. The compensation is quite generous (around FAANG-levels) and I feel like I've learned enough stuff throughout my career to compensate for my lack of formal CS education.
- capableweb 6y ago> undergraduate degree in computer science > half years of professional coding experience > worked diligently at Leetcode for those 5 years > personally coached by a google software engineer for months > done and given 100s of mock interviews > paid for some to be done by professionals > 100s if not thousands of hours on Leetcoding and algorithms trying to improve Neither of these are relevant if you want to work as a programmer. I say this because probably millions of programmer never done any of those things before they get a job as a programmer. Getting a job is more about how good you are at working with others, more than anything. When they are interviewing you (or even more important, working with you) they want to see that you're collaborative and can contribute. Sometimes that's surely knowing the best algorithm and knowing how to implement it without searching for a solution, but most of the time it's not. It could be that you already are very good at programming, but it doesn't matter because you're a shit person. Meaning that maybe your soft skills are very lacking compared to your technical skills. You don't have to be the best programmer in order to have a successful career (sadly?) and you can definitely be comfortable just being a average developer. You certainly have other skills, or can acquire, that compliment your programming skills. You'll get more attractive as a programming if you're not just someone who can program blindly, companies want someone who can solve problems + program. Or know how to create products + program, or manage financial + programming, so on. Knowing something other programmers don't, that is useful will make you a lot stronger candidate. And stop focusing on immediate "point"/"chapter" exercises like Leetcode. They are inconsequential when it comes to actually working as a programmer. Question: what have you been doing for 5 years exactly if only 1.5 years of those was at a workplace?
- QuitProgramming 6y ago>Neither of these are relevant if you want to work as a programmer. I say this because probably millions of programmer never done any of those things before they get a job as a programmer. Yes, underlying talent and intelligence is what matters. Leetcode is just the way companies filter for that today. >It could be that you already are very good at programming, but it doesn't matter because you're a shit person. Meaning that maybe your soft skills are very lacking compared to your technical skills. I have both bad soft skills and tech skills. >Question: what have you been doing for 5 years exactly if only 1.5 years of those was at a workplace? I did Leetcode almost since the beginning of my 4 years of university. 4 years in school + 1.5 years on the job = 5.5 years. I rounded down.
- WhompingWindows 6y agoHonestly, it sounds like you bought into the 1337code culture too fully. It's a practice website for certain types of questions, it's not teaching you how to provide business value to companies. You can practice your technical skills and do mock interviews, but if that's all your doing, it won't make your resume look better and it won't make your soft-skills and industry-knowledge better. Future employers want to see evidence you did the job before, which means it's tough to bust into the career path, but also means if you CAN bust in and hang in there, you'll have a good career path in future. Consider the following alternative scenario: instead of leetcode, what if you focused all of your efforts on finding ANY programming job? You've obviously been practicing coding for a long time, even if you're not a 10X hardcore engineer, you can still find orgs who need help with their code. So, IMO, you may as well keep sending out coding job apps. You may not score a FAANG position, but you may make a decent living in your chosen profession. Sure, you may not get to use cutting edge methods or innovative libraries, but you'll help others with your coding ability, for instance, consider all the mom and pop websites out there that look terrible and perform terribly. Those sites are an opportunity for you or for me, less talented and gifted people, to provide value where the rock stars wouldn't deign to work.
- QuitProgramming 6y ago>Consider the following alternative scenario: instead of leetcode, what if you focused all of your efforts on finding ANY programming job? Because I don't just want ANY programming job. In fact, that is the approach I took with my first job and hated it. >You may not score a FAANG position, but you may make a decent living in your chosen profession. Sure, you may not get to use cutting edge methods or innovative libraries, but you'll help others with your coding ability, for instance, consider all the mom and pop websites out there that look terrible and perform terribly. Those sites are an opportunity for you or for me, less talented and gifted people, to provide value where the rock stars wouldn't deign to work. I'm not interested in those opportunities. That's why I've been studying Leetcode as hard as I can, to get something better than my intellect deserves.
- tubularhells 6y ago
- booleandilemma 6y agoAfter that first paragraph I was on the floor laughing. If programming doesn’t work out you could always do stand-up comedy!
- robjan 6y agoLeetcode is an example of a company who sells to both sides: the candidate and employers. This results in an arms race which is great for them because it results in more revenue. You don't have to participate and there are plenty of companies who don't optimise for people who spend their time cramming for the test.
- QuitProgramming 6y agoDo they all pay well, have high prestige and amazing benefits?
- capiki 6y agoYes
- QuitProgramming 6y agoPlease share some specific examples.
- giantg2 6y agoThis is probably going to come off harsh, but I think it needs to be said. "Do they all pay well, have high prestige and amazing benefits?" Any job, even the entry level positions at some unknown company, will give you more of these things than you have right now. It's called the corporate ladder because you don't start at the top - you must work your way up from the bottom.
- fredliu 6y agoNot sure what's your criteria for "good enough" or "progress"? Finishing a certain percentage of leetcode questions? <-- this says nothing but just that, how many leetcode questions you finished, i doubt any serious company would just use that to gauge their potential hires' ability. If it's about finding a real programming job? or find a job in FANGs, there are way more other factors than just leetcoding (saving the effect of leetcoding on hiring for another day). It's a fact that not everyone hired at FANGs aced those 1600 leetcode questions. It's cool that if you decide programming is not for you. But you are giving leetcode too much power if that's the sole reason you want to leave the field.
- QuitProgramming 6y agoI mean Leetcode type interviews are the primary filter these companies use. Sure, I don't need to literally solve every question, but I need to be able to do it well enough to pass the interview. Not being good enough means I can't meet that threshold for FAANG like companies.
- QuitProgramming 6y agoI would like to add something I couldn't fit into the original post. A big part of why I think I got stuck trying so hard is because of the anecdotes programmers like to throw around. They'll tell a story about one guy they knew or a time in their life when they struggled. They do not take a quantifiable approach this. IQ is not talked about. The amount of time studying is not talked about. Whether they have won competitions in any intellectual field is not talked about. How quickly they are able to understand concepts and implement them of increasing complexity is not talked about. If it was did, I think people would be much more able to realize when someone is truly not talented and should quit and when someone still under the normal curve of struggling and it may pay off to persist.
- bradlys 6y agoRegardless of all that, there’s a lot of luck involved. I’ve soared through technical rounds because I got lucky with interviewers who asked me questions I could solve in the time given. In many others, I received questions I was likely never going to solve because I had never seen them and it was required in order to pass from this interviewers mind. People spend a lot of time on LC. It should be obvious from all those self-promotional LC posts. (Don’t trust everything on there btw - those stories are there to sell the platform and keep people paying.) IQ is mostly irrelevant. You should really only be worried about IQ when someone is a true outlier. (Savant or handicapped) Either way, you’re acting defeatist if you think that not getting into FAANG the first few times is proof that you’re garbage or something. Many people get rejected and get rejected after they’ve gotten an offer from them before. It’s not a good system. Also, how do you not have every problem solved if you’ve truly been working at it for 5 years? 1 problem a day would have you solve every single one.
- _fat_santa 6y agoThis might be an unpopular opinion around here but I believe Leetcode is a terrible metric for assessing developer performance. Think of it like this. Say you're a construction worker but you suck at LeetCement, a bunch of cement mixing exercises. You think you're an absolute failure because you can't do the most basic thing in construction: mixing cement. Guess what? No one really cares that you can't mix cement. Customers aren't going to walk through your building commenting on "well this cement wasn't mixed right". Sure if you really screw it up the building will be in danger but in the grand scheme of the entire construction site, cement mixing, like leetcode, is a super small portion of the big picture and something you can hand off to a company that specializes in mixing cement. As a programmer, your performance is based upon what you can build. You're never going to have a manager or customer go "well this looks good, but I noticed that your link list function is 3 lines vs 1 line". Leetcode at the end of the day is semantics of programming, no one besides the most hardcore programmers give a damn about it. Sure you can reverse a linked list in a one line of code, but can you build a piece of working functioning software? I can't tell you how many of these "Rockstar Developers" I've interviewed that while they can solve every leetcode problem in their sleep, can't figure out how to construct functional software to deliver to a customer. I've been programming professionally for 5 years now and I never got past leetcode easies.
- QuitProgramming 6y agoYour reasoning for why Leetcode is bad is a bit flawed. The reason why it works is because it's correlated with other performance. The fact that a customer don't ask for it before they give you a job doesn't disprove the correlative factor. The fact that people snub it by thinking it's too far removed from reality doesn't make it so either. The fact is that someone who is clever enough to consistently do things like reverse a linked list in one line quickly and correctly will also be able to quickly do less clever things correctly. Your idea is that only doing the exact thing shows if you are good at it. You are almost implying there are no correlations between skills. If that's what you believe then looking at the research on IQ should clear up that empirically that is not the case. And note I said the research. Not news articles or editorials or blogs or podcasts. The actual scientific literature.
- khaledh 6y agoI've never done any "leetcoding" (whatever that means). Programming for me was love at the first sight when I was a teenager, and still a big lover story for me to this day. I got good at it by writing hobby code, university projects code, research code, and professional code. The one thing that is clear as the sun to me is that to get better at programming you first write shitty code, then less shitty code, until you know what good code looks like. But don't do it in a vacuum like "leetcode", do it as part of an actual project or an actual job (start with internships). Shipping code feels good and gives you motivation to keep going and learn from the feedback you get. The only warning I'd give is that if you're doing it to get a decent job, and not because you like doing it, then it will be a really hard hill to climb.
- throwaway4233 6y ago> To succeed in an interview, you do not need to finish all LeetCode questions. But solving all of them could be fun and satisfying. That is the first line in the article that you have shared. Try finding any aspect of programming that brings out the same satisfaction in you and you will succeed. Because then you will be the one defining what success means to you and not basing it one another individual(s) who have their own strength and weaknesses.
- QuitProgramming 6y ago>That is the first line in the article that you have shared. So what? >Try finding any aspect of programming that brings out the same satisfaction in you and you will succeed. This is wishful thinking. Plenty of people love things they are bad at. Look at more creative fields and how many schools prop up to make money off of people's dreams. How many of those people do anything of worth?
- throwaway4233 6y ago> So what? I was pointing towards why the author was motivated to attempt all those problems in the first place. > How many of those people do anything of worth? People find what they are good at or makes them content at different stages in life. Until then they will try out paths that others have taken like those creative schools you have mentioned. I was a below average student at school and then went for engineering because that was what most of my peers did. However once I started programming(not leetcode but just different CRUD apps with variations), I realized that I could never go do advanced degrees like MSc or MBA like most of peers did. Because I cannot perform well in a competitive environment where I would have limited time and flexibility to comprehend what's in front of me. Now regarding job opportunities at FAANG or in general, getting a job involves luck as well. You might forget a specific dynamic solution for a leetcode problem, or the interviewer might take out his frustration at work on you or despite you doing well, the company might be looking into other factors when hiring. Do not just associate a rejection to your skill at solving leetcode. Keep doing leetcode and interviewing at FAANG, but also spend time finding something that satisfies you so that you can always lean on it on a bad day.
- rubyn00bie 6y agoIt's not just leetcode it's that most people in this industry are hiding the most simple truth: they cannot judge what you know or don't. Full-stop. I find most technical interviews comical, it's pretty cute watching some nerds try to front on you with horribly worded questions. FWIW-- Leetcode is a fucking game at best, if anyone is judging people's qualification for employment by "leetcode" they may as well be yelling from mountaintops "I do not know shit! I have no meaningful way to judge or ascertain talent, nor do I find it even worthwhile to try to... so here I stand before you to stroke my ego!" Go read code, make things that are fun for you to do or build. That's what will you get you hired... The reason leetcode isn't helping you is because they're acts of pedantry, they aren't there to teach you anything useful. When some shit website like that drops a problem akin to: "a deadline was dropped on your desk of yesterday, you have 18gbs of CSVs to go through (w/ half of the file encoded as TSVs), github is down, and if you don't get this data parsed by the end of the day the firms biggest client is going to leave... You can't deploy because there's no trust in your organization and the "principals" are out... Your project manager is "out sick" for the fourth time this month. What do you do?" [x] Totally un-fun. [x] Realistic. [x] Boring (see realistic). [x] Involves zero squares or square roots (wtf, fellow nerds, why is everything a stupid[1] math problem). [1] Mathematics is fucking sweet, taking the square of fucking[2] numbers or the norm of a vector is so boring I'd rather gouge out my god damn eyes than ever even read a fucking sentence of it... [2] Lol, "fucking numbers" would that be numbers that fuck?
- derekp7 6y agoIf doing 100% programing isn't working out in the real world for you, then you may want to look into a "super sysadmin / devops" role in which your main job is one thing, but gets greatly enhanced if you can program. These aren't positions that are actually advertised for, but happens to be the role that I've always fell into. That is, on paper I'm a Unix/Linux systems engineer, but I put my C programming (and other languages) to use in areas that cause me to get ahead of my peers. Typically this involves creating ad-hoc monitoring scripts, doing devops type of work, or backporting security patches to unsupported OS versions (that we are required to keep around for various reasons). Or coming up with tooling (full-stack web apps) that enhance my department's efficiency. Things like that. So people think I'm a super coder, but I probably wouldn't be successful doing it full time.
- nbzso 6y agoWork smart, not hard. Understanding of this principle can change your life for good. The rat race is for racers. The journey of life is for explorers.
- QuitProgramming 6y agoOk can you give anything concrete?
- nbzso 6y agoEvery skill has benefits. Just find a place for useful implementation. Thats all.
- deleted 6y ago[deleted]
- taylodl 6y agoI would wager that 95% or more of people actively developing software for a living couldn't make it through Leetcode - meanwhile they're providing value to their employers and putting food on the table for their families. Speaking of families - what's your plan? You say you have an undergraduate CS degree. Even a middling programmer is going to make a lot more than most other professions. What else are you going to do to keep a roof over your head and put food on the table? Most of all do you enjoy programming? I've known programmers who are very mediocre but love their job. No, they don't make as much as the "superstars" but they're able to raise families, have a life, and enjoy their work. Don't take this the wrong way but maybe you'd benefit from therapy? A therapist can really help you with perspective. You're definitely not suffering from an overinflated ego, but an underinflated ego is also a problem. At the very least see a career coach to better understand what other options you have and what else you can do to provide for yourself and feel good about yourself. Take care and good luck. I sincerely hope you get through this and come through to a better place. When you do will you remember us here on HN and tell us how it turned out?
- giantg2 6y ago"... putting food on the table for their families" I think this is the most important comment in this thread and that most of us are so far removed from this concern that we forget it.
- sneusse 6y agoRealizing this thread is very very weird I'll recommend codingames clash of code for those who don't know. https://www.codingame.com/multiplayer/clashofcode https://www.codingame.com/multiplayer/clashofcode It's code golf/some puzzles on a 15 minute timer in versus mode. Extra fun with twitch streamers or with coworkers because you can discuss the mess after you made it.
- pcstl 6y agoI don't see what your point is here. You haven't met some arbitrary short-term goal as fast as some other person, therefore you should give up on all your long-term goals and other people should too? Seems like a non sequitur to me.
- ulisesrmzroche 6y agoComputer science and software development are very different fields. Leetcode asks more CS type questions, but that doesn’t meant you’ll be a good software dev. In fact, the same qualities that make for a great computer scientist are also the ones that make for a terrible engineer. So you’re not bad, don’t let it get you down. You’re probably a decent developer actually.
- ams92 6y agoLeetcode is only worthwhile if you want to break into the FANG/unicorn type companies. These jobs often pay the most but: A) They are not the only companies that good software engineers work at. B) One's happiness is not predicated on getting a job at FANG and getting paid a boatload of RSUs. People that work there aren't as happy as you would like to think. See here: https://en.wikipedia.org/wiki/Hedonic_treadmill https://en.wikipedia.org/wiki/Hedonic_treadmill Also I call bullshit on anyone that claims they did all 1600 leetcode questions in a year while also managing a full time job AND maintaining any actual quality of life. The solutions to all of the problems are available in the comments and mastering 200-300 problems is enough to get a job at Google. There are many poorly worded questions that honestly aren't worth doing either so I wouldn't be concerning myself with someone who has done all of them because I don't even believe that they did them all without looking at some of the solutions first. Lastly, if I were interviewing you and got even a whiff of the terrible attitude that you portrayed in the OP I would not hire you - and this is coming from somebody that has had a depression diagnosis and takes anti depressants. You need to get help if this is how you usually feel.
- avenger123 6y agoCall it intelligence, smarts, IQ, talent or whatever you want. We are all born with a certain level of it. The sooner you realize your limits the better. The issue with most of us is that we don't push hard enough to understand what those limits are. As you've seen, you've worked hard and now know your limit. But frankly, what's the issue? You're not good enough to pass a leetcode interview? Guess out, most people writing software aren't able to either. If all you do is compare yourself to the Wayne Gretzky's and LeBron James you're always going to feel inadequate. Ask them why they are so good and they will tell you that it's hard work and dedication. Because it's more fulfilling to say that than to say "yes, it is those things but heck, I'm just naturally good also". Read "Flowers for Algernon" for some perspective. Personally, I always remind myself that the intelligence I do have is a gift because there are those with no fault of their own that are far worse. If you don't enjoy programming or just want to do something different, be honest with yourself. Your conclusion is right - The is reality not everyone is lucky enough to be intellectually gifted to succeed and not all hard work pays off. But the issue is you've boxed what success means you to so much that it's suffocating you. Most of us writing software are failures if we use passing a Google interview as a metric.
- giantg2 6y ago"Read Flowers for Algernon" For some reason that I can't really articulate, I never liked that story. I agree that it can add some perspective. Maybe it has to do with seeing a somewhat similar struggle with my grandfather going blind later in life. That many things he used to do easily became arduous or impossible, and the ways that affected him and those around him. I feel the story doesn't do that sort of situation justice (maybe too simplistic?).
- phendrenad2 6y agoWhy quit programming? Why not just quit leetcode? Leetcode has very little to do with how well you code in a real-world application.
- snicky 6y agoThis thread looks too much like some ads on Facebook where a brand's PR person replies to every single comment to keep the post busy.
- wealthyyy 6y agoYeah, Corporate bots at HN is insane. @dang, Please do IP Lookup on this guy and check the ASN.
- usgroup 6y agoI think IQ or some variant of it - which is what leetcode sounds like to me - has an intuitive appeal because it offers a way of objectifying hiring and stack ranking people. All other things being equal, the higher ranked leetcoders are bound to be better programmers: but good luck with the "all other things being equal" part. I'd separate the merits of abstract tests, innate ability and so on, from spending 5 years on leetcode. It's worth really digging into the meta questions here. Why? I think trying harder and improving is par for just about any course so I wouldn't surrender to Gods of talent or you'll find yourself at a disadvantage to the less talented as well. Did you know that Roger Penrose - Mathematical physicist with a Nobel prize in Physics - was held back a year in school because his arithmetic was so bad? I reckon he would have sucked at leetcode. Turns out his arithmetic is still so bad 60 years later but he discovered that he had a razor sharp geometric intuition and put his chips there instead. Worked out quite well for him I'd say.
- Thristle 6y ago1. Leetcode is not software engineering, its software interviewing. You can be exceptional in one and not the other 2. It is possible that there are people who "simply can't code". I don't personally think that's correct but it might be 3.You should never compare yourself to everyone (especially post doc unicorns who leet for fun). I don't think I'm an "exceptional" coder and I'm completely fine with it. I might get better in the future but where I am today already allows me to do my work competently and above although there are many many people above me 4. If something gives you grief and stress even after committing to it and trying to "break the barrier", you shouldn't do it. Mental health is more important then doing something specific as coding for a living 5. I couldn't understand if you did LT for 5 years and couldn't get a job or just couldn't finish LT. If you are working now and the only problem is getting stuck on some LT problems, I don't think LT should be a goal, only a tool.
- giantg2 6y agoI've met a few people who meet #2. They just have a different type of mind/thought process/aptitude.
- beforeolives 6y ago> one and a half years of professional coding experience which ended when I got fired for performance issues So what happened there? What did you learn from the experience? How did you work to improve? Being fired for performance reasons would be much more concerning to me than the fact that someone online is better at leetcode problems. And it should also be a sign that maybe you aren't ready for a job at some of the most competitive companies yet.
- panda88888 6y agoThere are already lots of good advices and recommendations, but I still would like to add my own experience. I have an non-CS engineering degree, so before I did any interview prep, I bought the CLRS algorithm textbook and self-studied everything up to and including graphs/dynamic programming, which are the topics a typical whiteboard interview covers. This includes not just reading, but actually implementations and test harnesses for each of the data structures. I used Python. Next, with the basics covered, I worked through both Cracking the Coding Interview and Elements of Programming Interview in Python. I worked out each problem in a paper notebook with pencil, talked to myself explaining my approaches, and checked my handwritten code with a computer after I am done. This further cemented my sense of how to approach problems. Last, I worked through leetcode problems. This step is identical to another fellow HNer’s comment on chess and deliberate practice. I worked on a few (3, at most 4) problems a day. For each problem, I treat it as a real interview and talked to myself out loud. 1) I repeat the problem and stated assumptions 2) I explained my approach and reasonings on selecting any particular algorithm/data structure 3) I outlined with pseudo code and identified any edge cases 4) I walked through my algorithm using simple example as a a quick check 5) Only then did I start to write code, on paper with a pencil. 6) After I’ve written the code, I walk through the code again with a simple example as well as the edge cases identified in step 3 to verify I handled them. 7) Finally, this is where I actually use the leetcode website. I type my code exactly as written and submit it to make sure it passes. The goal I set for myself is that for Easy questions, I should be able to do this in under 15-20 minutes (exclude typing code into leetcode) and pass in a single attempt. For Medium questions, I gave myself 35-40 minutes and maybe 2 attempts. For Hard questions, it’s up to 55 minutes and not necessarily pass (basically I am ok with failing hard questions). I was able to pass the tech interview at Google. The CLR portion took a few months (I don’t remember exactly how long). The Cracking the Coding Interview/Elements of Programming Interview in Python is maybe 1 month. Leetcode portion is maybe 2 months, give or take a few weeks. I hope this helps you.
- auganov 6y agoI've read some of your replies and it sounds like you're determined to set your goals so narrowly that you cannot win. You may accept there are still other opportunities in tech, but you only specifically want jobs that will recruit you for what you're (reportedly) bad at. If you have something else lined up and just want everyone to wave you goodbye then so be it. But people obviously want to help you and it sounds like you're looking for some. I'll just say it's better to be mediocre at something than to do nothing. A non-FAANG job/tech endeavor will still expose you to a lot of opportunities. You may not immediately be making what you want to make, but over 10 years there's a non-zero chance you'll luck into something bigger. A 20% chance of getting what you want is still better than a 0% chance. In the process you may find something you are actually exceptionally good at. It's much harder to find these things if you're not actively working on something.
- QuitProgramming 6y ago>I'll just say it's better to be mediocre at something than to do nothing. A non-FAANG job/tech endeavor will still expose you to a lot of opportunities. You may not immediately be making what you want to make, but over 10 years there's a non-zero chance you'll luck into something bigger. A 20% chance of getting what you want is still better than a 0% chance. In the process you may find something you are actually exceptionally good at. It's much harder to find these things if you're not actively working on something. This is the sort of thinking that keeps people in their place continuously participating in the rat race hoping that one day they'll make their break. For most people, it's much closer to delusional hope than a real path to success.
- UncleMeat 6y agoYeah and then he blames the community for being toxic. This is 100% self inflicted. Incredibly narrow focus at the most competitive companies to the point of spending inordinate time on leetcode and letting their actual work slip.
- jfengel 6y agoIt does sound like he absorbed some of his toxicity from the community. It's definitely a self-inflicted wound, but it does sound as if he was handed a gun and had it pointed directly at his foot. That won't be solved by fixing the community, which is an enormous boat that won't turn around any time soon. But it's hopefully a lesson to other people putting themselves in a similar position. The community also contains a lot of people pointing out the footgun.
- kitty_bot 6y agoi'm pretty sure if one wants a job he should go to the actual interviews instead of the mock ones... i mean what's even the point of leetcoding hard for years, it would be much better to refresh your tech stack, to apply to multiple actual positions and only then maybe solve some easy to medium leetcode
- deleted 6y ago[deleted]
- anonbc395 6y agoI found LeetCode difficult too. Some things that I found helpful: 1) The book How to Design Programs. Its main point: the shape of data determines the shape of functions. Northeastern University has a good course on this principle. There are several types of data, such as atomic values, constrained values, lists, and the functions for dealing with them follow the "shape" of how the data were defined. Recursion can also follow this pattern because data can be defined recursively, such as with binary trees and linked lists. Obviously, recursion is not limited to recursively defined data, but it helps to see the relationship between functions/methods and the data they operate on. The book and the course also discuss how to abstract general patterns from concrete instances, such as "filter", "map" and "fold". 2) Once I saw that function "structure" can follow the structure of data, I looked at the structure of functions that operate on graphs, trees, arrays, greedy problems, dynamic programming problems. There is usually a structure involved. To get at the structure, I abstracted the details to get at the "elements" of the function and the data it operates on. Here's one pattern: for each element of data input do something with that element Basically all algorithms follow this pattern. Replace "do something" with a transformation, a summation, a "map", filter, fold, etc. Replace data input with tree, graph, array, etc. 3) For dynamic programming, I studied the approach used in "Optimization" courses, often taught in the context of business. In that context, DP is not taught as "finding the subproblem", but as a multistage decision process. I found this very helpful. Lastly, even though receiving material rewards is nice, re-framing motivation towards contribution rather than receiving can mitigate disappointment in any endeavor in life.
- QuitProgramming 6y ago>The book How to Design Programs... I will check this book out. >Lastly, even though receiving material rewards is nice, re-framing motivation towards contribution rather than receiving can mitigate disappointment in any endeavor in life. This has always sounded to me like the consolation for those who are not good enough to get what they really want.
- mstipetic 6y agoMate leetcode has nothing to do with the work of a software engineer. I do fairly well on algo tasks, but yesterday i spent the whole day figuring out how to do async requests in python Fast api unittests. It's not working out of the box and is very poorly documented. Most of the work, especially in larger organisations is like that. Most companies don't even want elit coders, they want people who will push out reasonable code at a predictable pace and work well with others.
- happy_path 6y ago> one and a half years of professional coding experience which ended when I got fired for performance issues I'm not American nor I work for a FAANMG, but I think that less than two years is not enough time to have that defeatist thinking. I'm sure you're a good Software Engineer (at least you've got the foundations as you studied CS). Why don't you apply to startups and give some years to get some extra experience and get a network of peers? Have some patience and perseverance. Getting a job in a big company is not always easy and each person needs a different time.
- giantg2 6y agoI think the LeetCode is not the issue. You have a black mark on your resume from being fired. And I assume a gap from these years of only LeetCode. You basically have to take any programming job you can find and stick with it for at least 3 years. This will show future employers that you can perform - something that LeetCode will not.
- gt565k 6y agoYou've stated: "I'm only interested in FAANG money and retiring early" You literally have no intrinsic motivation to solve hard problems other than getting paid more. Focus on learning and acquiring skills and solving problems, not trying to get "FAANG money". Leetcode has nothing to do with FAANG money, sure, knowing algorithms and how to optimize code helps, and that's the only commonality between FAANG interviews and leetcode, but those things can be learned outside of leetcode. Simply taking a few CS algorithms courses will make it apparent that 90% of leetcode problems are found in some variations inside your undergrad CS algorithms course. Sounds like you need to reset your values and re-align your priorities. You got fired for performance reasons as you mentioned. "Had" all these resources and time spent on trying to improve yourself, but you just want a "FAANG salary". This is not the way. Either you love CS as a field and you love solving hard problems, or it's not for you.
- QuitProgramming 6y agoI think the "you need to love what you do to be successful" is just a fallacy that became a meme. If it were true a much higher percentage of people would be well respected and successful artists, for example. In our field, more coders would be in FAANG or the next John Carmack. This meme needs to die, honestly. Furthermore, it's easy to be passionate about things that you are good at. Being good at something means constantly getting positive feedback. So then the question becomes- Are people who are passionate the ones who become good at things or are people who are good at things become passionate them? The reality is you can find cases where people hate the things they are good at and like the things they are bad at. Just proves this idea of yours is false.
- bigbizisverywyz 6y agoI think you really hit the nail on the head. Software engineering is quite hard, it's also a very broad field now, and you have to love it to do well. When I'm interviewing it's one of the things I strongly look for. Even if the interviewee has some other weaknesses or lack of experience, passion for what you're doing can make up for it.
- foobarbaz33 6y agoThe vast majority of work in the programming market is low-scale CRUD websites. Occasionally some data structure/algo knoweldge helps here. Maybe recursing over a tree once in a blue moon. You can make it in this field without being gifted. Much of it paid well, just not FAANG 400k+/yr. Of course, there's work where being intellectually gifted and a deep knowledge of CS are very relevant. Ability to effortlessly solve a tricky math problem might be relevant for someone working on the next encryption algo. But not for you, and not for the guy working on an inventory system or point of sale system. On the internet it's easy to see everyone in the world. The best in the world are filtered right to you. So don't feel down comparing yourself.
- the_only_law 6y agoso what will you do instead?
- m_j_g 6y agoBecause of the structure of labor market, for highly competitive jobs luck is also very important: https://www.youtube.com/watch?v=3LopI4YeC4I https://www.youtube.com/watch?v=3LopI4YeC4I It does not meant that merit do not play role, simply there is so many highly skilled, and good candidates, that only small percent of them will get the dream job.
- QuitProgramming 6y agoThank you for sharing this video. I think it really gets at the heart of something a lot of people don't want to hear or are ignorant on. As you say, it's hard enough being actually skilled and deserving so imagine being neither of those and trying to make it.
- chalcolithic 6y agoIf you did that for money - that's OK. However if you love programming but aren't good at it - quitting is not the right move. I'm constant under-performer who failed to get a degree and failed many projects after that. I wouldn't even try visiting sites like Leetcode because I need no confirmation for my miserable level of proficiency. Still there's a tech boom worldwide and there are so many jobs that even under-performers have plenty of chances. You just need to be in one of (many) places that has lot's of jobs. Right now the system is rigged in your favor. Interviewing is an art and not a science - you just need resilience to get through. Every article out there seems to be about solving some hard problems, but the bulk of the industry is glorified CRUD (web)apps - you can do it. Instead of doing something that you love and learning to live with a failure you're setting yourself up for a job you'll likely hate for the rest of your life.
- superflit 6y ago"I am quitting programming out of humility and recognition of my limitations. It’s ok to give up and wise to do so when you aren't good enough for something. " I do agree and I think you are wise recognising this.
- tkiolp4 6y ago> I'm still not good enough. How do you know this? I’ve never done leetcode, but if you have an degree in Computer Science chances are you’re as good as the average software engineer out there. Btw, the Googler coach sounds like a scam. Don’t do that, coaches are usually worthless. Try applying to decent companies that do not require leetcode or similars.
- markus_zhang 6y agoI wonder what's behind that performance issue that led you being fired.
- nexus2045 6y agoPost title resonated with me because I've been failing to Leetcode my way to a decent level for the past 5 years, but I know the reason why is because I simply haven't put in enough time and effort. I find that as long as I keep grinding, I can eventually sniff out the patterns, instead of treating each problem as some sort of one-off. How you got let go might not be your programming skills, it could just be something political, your personality not being received well, or the business not doing well. I've been through this as well - I was obviously not very focused on my job, and was frequently distracted, and didn't fit in with the team. The problem is you equate Leetcoding well == programming, and you used one outlier post on the internet to confirm your suspicion that you suck. Even if you do quit, you're going to have trouble finding a job that pays as much as a non-FAANG that doesn't ask you Leetcode questions. If there's a takeaway from my comment, its to separate your concerns... Leetcode is just about interview prep and nothing more (maybe an entry to competitive programming, where Leetcode is actually a bit too easy). Job performance has nothing to do with Leetcode or even so much programming skills, but more to do with communication, work visibility, meshing with coworkers, taking responsibility and initiative, etc. And programming, just as a hobby, has nothing to do with the above.
- shahbaby 6y agoOP, I have 1 question for you. How are you measuring your progress? How do you know if you're getting better or worse? I've found that the best measurement for this is the leetcode weekly contests. In addition to being excellent interview prep, you see how you rank against others and that is really the only thing that matters. If you're consistently ranking about average in these contests that's when you should start lining up interviews. EDIT: I wrote the above before checking the link. Notice how even she measures herself by her contest rank? Those contests should be the gold standard of how ready you are.
- ramtatatam 6y agoYou impressed me a lot. You show such devotion, you found enough strength in you to work through those Leetcode exercises and you was doing this consistently for 5 years! You are a star! If I was you I would not waste my time on Leetcode. If you have this kind of titanic attitude towards reaching your goals then I beg you - find a problem you can solve with technology and make millions by selling your solution to it. I am more than certain you will build the solution.
- harttle 6y agoI got this push message from Hacker News this morning and felt obliged to post my opinion on the "LeetCode thing" cause I'm currently trying the same thing as you are. I have a master degree on CS and 4 years of professional experience and trying to keep moving forward. I don't believe solving LeetCode problems well is something that you have to be gifted to achieve. Ironically, I believed it once upon a time. I got very frustrated when failed tech interviews for Microsoft and Google when I was a new-grad and trying to find a decent job. I know it's frustrating to just look at somebody finishing all the contest problems in 10min and you're scratching your head for many hours or even a whole day. Believe me I was literaly doing this for a long time. But I started my professional occupation anyway. What I did then is keep trying for several years since I know I'm stupid and stubborn. It turns out to be promising in the third year doing so. I gradually find out there IS a way! There is a clear and straightforward path to do better in algorithm problems: just get a full list of basic data structures and algorithms, understand them all by watching youtube videos, learning online courses (MIT online courses helped be a lot), and practice tens of problems in each subject until you get sick of it. Currently I get 2481 points in LeetCode contest and I'm preparing for my next period of career and hope these hard work finally pay off! In case someone need it, these 2 lists are very comprehensive and helped me a lot: * https://github.com/jwasham/coding-interview-university https://github.com/jwasham/coding-interview-university * https://techdevguide.withgoogle.com/ https://techdevguide.withgoogle.com/ Hope it helps!
- benzesandbetter 6y agoLeetcode and similar sites are a poor proxy for programming ability for most programming jobs. People can be good at the kinds of sites and not be very good programmers in a professional setting. I've also seen capable engineers do poorly on these kinds of tests. A couple years ago, a client asked two of my engineers to take a test on a popular coding challenge site as a precondition for adding them to our team. Both of them were accomplished engineers, working successfully with global brands, and both of them scored poorly on the test. Personally, I avoid clients that use these tests in their hiring process. I've generally found it to be indicative of companies that don't have an engineering-centric culture. Take-home coding tasks that resemble the daily work for the position are generally a much better sign. I hope you reconsider quitting programming. Your effort to solve these challenges shows dedication, persistence, and ability to think abstractly and solve problems. Those are all very good attributes for programmers. If you put the same time and effort into a bootcamp, online classes, or building your own projects, and made it a point to avoid companies that use these tools, I think you could be successful in this field.
- ElectricMind 6y agoThere are many scales on which society measure man: money, look, status , job etc. It is possible man is average in all of them. Just simple plain average man. Now what he can do is invent new scale and try to dominate that scale from start and still end being average after some time. Basically he was born average and will die average. Now man needs to decide what he going to do about it. Whine everyday till he die or enjoy whatever this is till it lasts.
- asidiali 6y agoSide projects > leetcode, any day of the week. I’ve personally transitioned several people from other industries into software successfully. Some of them got stuck in the leetcode world convinced it is what would help them get hired. You know the ones who always get hired the fastest? The ones who have real-world prototype apps to demo to recruiters and interviewers and showcase their applied knowledge. As someone who also has hired several engineers, I don’t care how many leetcode problems you do if you can’t do basic real world tasks like simple devops, or don’t have basic domain-specific experience (such as GraphQL, React, Stripe to name a few randomly, whatever tools are in the stack or the place you’re trying to get into). Also idk why you think FAANG is the only place where you can find money. I can tell you from first hand experience that you can sell the most mundane development work, like basic jQuery and CSS site updates, for hundreds of thousands of dollars with the right opportunity. Plenty of prestige in running your own firm. Networking well is where the money is.
- anonbc395 6y ago" I can tell you from first hand experience that you can sell the most mundane development work, like basic jQuery and CSS site updates, for hundreds of thousands of dollars with the right opportunity." Where could I learn more about these kinds of opportunities? Does it come from networking, domain experience?
- asidiali 6y agoDefinitely networking is the most important. In my example, I got referred to my first enterprise client from an old boss of mine who appreciated my work. I literally woke up to an email one day that, within a week or so, led to a contract worth about 500k over the following 6 months, and a few more clients from there. I did nothing but follow up to their intro and answer questions I was asked. I have yet to have the same experience again, because my network is not large. It was mostly right place right time. Eventually it fizzled out because I was not very into doing consulting work and preferred to focus on product-based businesses instead, spending a lot of time building new things instead of growing or improving our DX, client relationships, and lead funnels. I let things slip, managed poorly, and as a result we lost our clients. It also comes to good sales as well. Again in my example, I was originally approached for a single contributor personal contract. It was just me at the time. Within a couple weeks of working together, I quickly realized they were bringing on these individual devs left and right. I simultaneously pitched the client on expanding our contract to multiple contributors, AKA becoming a true vendor, while also recruiting and hiring a team behind the scenes (again, networking - I pulled from past coworkers and friends who could get the job done, so the hiring process was far from exhaustive, but saved critical time). It was a risk, but it worked out and I was able to stitch together the team and win the contract. We became their de-facto “engineering team” of about 5 devs, and I set up a corp entity and began processing invoices and running payroll for my new employees. Use accounting software from day one. Hire a corporate attorney. Worth every penny. Spend as little as you can to make your employees as happy as possible. Do not run payroll in multiple states unless you absolutely have to, or be prepared to deal with L&I and revenue departments for every state you have employees in (see: accounting software, corp attorney). Just a few of the lessons I learned along the way.