Readit News logoReadit News
Posted by u/QuitProgramming 5 years ago
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/leet...

dilippkumar · 5 years ago
Personal 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.

QuitProgramming · 5 years ago
The 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.

seadan83 · 5 years ago
There is SO much more to coding than algo's. Those looking to apply clever algo's that give a O(n log n) solution to a problem where n is never greater than 20 are hurting the industry. Give me simple to understand, works, and you saved us a P1 and thousands of dollars not trying to understand the clever algo. In 10 years of coding, the number of times I needed a clever algo can be counted on two hands. Leet coding is fir a lack of better measures.

The bicycle analogy is interesting, it us more like getting someone on a time trial bike and checking if they can hit 25 mph. That counts for almost nothing when doing a downhill mountain bike course. Can you communicate to people clearly? Can you convey expectations? Can you write simple and easy to understand TESTS?? Leet code is part of a cottage industry for interview styles that faang employees for lack of anything better.

I did one faang interview and omg I bombed so badly. A week prior, I did another with the same company and they couldn't stop calling me asking me to stop interviewing and work for them. The hiring manager wrote a love letter of how much I'd enjoy it there. It's crao, half of the senior engineers at that company can't pass their own interviews, it's a broken system. You can't know if a dev us good until at least 3 months after hire, if not 6.

FreshFries · 5 years ago
You are setting yourself up for failure with the "I want FAANG money & benefits" right from the get go. That happens to the top 1%, all other work their asses off or get lucky.

But I think you are doing your now not_future_colleagues a solid by giving up. If you are that square to think there is only one way to reach the "prestige, benefits and pay of Google" and that is by excelling at some Leetcoding pissing context: I see you not solve issues that are exciting to solve which is exactly what I like to see in programmers.

Deleted Comment

42_ · 5 years ago
Sure. I agree with your broader point. But a lot of companies don't have the time or inclination to conduct useful interviews (take home assignments, project deep dives etc). So they simply ask a bunch of leetcode questions and 1-2 system design, "behavioral" questions, and expect you to give perfect answers. Conversely, if you are in a situation where you want a job at these companies, then you do leetcode. As an anecdote, I like solving programming puzzles (advent of code, ICPC problems etc) but couldn't clear FANG without leetcode. I despised leetcode because the puzzles/problems there are uninspiring as compared to ICPC problems. Of course, software engineering has very little to do with any of it :)
jacques_chester · 5 years 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.

JabavuAdams · 5 years ago
What 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?

WhompingWindows · 5 years ago
Yeah, this practice about people posting ridiculous things, "I did all of leetcode in a month with only a case of red bull and a palette of ramen". Give me a break. These types of sensational headlines are OUTLIERS, they are not useful to average people or beginners, in fact they engender imposter syndrome. The fact is, anyone who is on leetcode for 5 years and got a CS degree and worked for 18 months as a coder, is going to be decent with computers and could at LEAST do IT or support, if not work as an entry-level coder at a variety of firms.
giantg2 · 5 years ago
He got fired for performance issues. I think the last part of your last sentence is the key here - he needs to get any entry level job he can to fill the gap and show that he can perform in a job for a few years.
QuitProgramming · 5 years ago
I am trying to get a FAANG level job. People have always said if I keep trying it's within reach.

I have no credentialist upbringing.

There are other things that are limiting me. I have no network and bad social skills.

mleonhard · 5 years ago
There are two paths into FAANG entry-level jobs:

1. Graduate from a top school

2. Work at non-FAANG companies for several years and develop strong software engineering skills: attention to detail, deep knowledge of one language, writing and maintaining unit tests and integration tests, giving and receiving code reviews, being oncall, sitting in on requirements meetings with customers, spending months implementing features, seeing some of them fail in production or fail with users, and deploying and owning a small service and being the go-to person on the team for it. This takes several years. Almost nobody can get a FAANG job without this experience.

Grinding leetcode is something to do for 2-3 weeks before your FAANG interview to brush up on algorithms. Leetcode cannot give you software engineering experience that FAANG interviewers look for.

It's really good that you recognize your bad social skills. You can improve them with effort.

Good luck!

AnimalMuppet · 5 years ago
I'm not sure. Programming is more within reach than FAANG is. Don't look at "getting into FAANG" as equivalent to "able to program". They are not at all the same.

I don't make FAANG money, but I make really good money. It's not enough to retire at 40, but it's enough to have a pretty nice life.

tkiolp4 · 5 years ago
FAANGs are overrated.
tubularhells · 5 years ago
Have you ever built a product yourself? I will be honest with you, I just use the python standard library for algorithms. I don't even remember what kind of sorts there are. They don't matter much in the grand scheme of things. What matters is whether you can build and ship something. This is how Valve evaluates applying engineers too, by the way. Finished project list first.
JabavuAdams · 5 years ago
EDIT> 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 · 5 years ago
I 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.
auganov · 5 years ago
I'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.

UncleMeat · 5 years ago
Yeah 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 · 5 years ago
It 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.

QuitProgramming · 5 years 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.

codesternews · 5 years ago
Sorry but could not comprehend this "but over 10 years there's a non-zero chance you'll luck into something bigger" Could you please explain little bit what do you mean? Thanks
auganov · 5 years ago
Literally anything. Options turning out to be very valuable. Getting acquired by a company you really wanted to work for. Randomly getting promoted. Meeting someone who will get you that FAANG job via a backdoor. Meeting someone you'll go on to create a successful business with. Maybe even meeting someone who will teach you to be very good at these competitions.

Point is, if one completely drops out the chance of any of that happening is basically 0. If you stay involved in one way or another, it may happen.

avenger123 · 5 years ago
Call 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 · 5 years 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?).

godot · 5 years ago
This 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 · 5 years ago
Leetcode 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 · 5 years ago
I 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.

gt565k · 5 years ago
You'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 · 5 years ago
I 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 · 5 years ago
I 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.

mfer · 5 years ago
There 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.

the_only_law · 5 years 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 · 5 years 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.

QuitProgramming · 5 years ago
Do those other jobs have the prestige, benefits and pay of Google though?
sjcoles · 5 years ago
Even if you can solve any whiteboard problem a company can throw at you your attitude is so off putting, even just via text, that I am not surprised you are getting no hits. Instead of getting shit done you'll complain, blame, and stall the team.

Notice how nothing in this thread is your fault. Every single problem is on another person our outside force. No one will pity you, doubly so in a highly technical team. It's just not part of the culture. Take it or leave it.

gt565k · 5 years ago
You are chasing the wrong thing. There are plenty of companies where you'll solve better problems than at Google and have more freedom to solve problems your way, and they pay well too.

Chasing money is not going to get you far. Focus on skills.

UncleMeat · 5 years ago
Not most of them. But so what? Your goal is to retire early. Why do you need to start at insanely high pay for that? Make 120k for a while (plenty of money to save well) and make this a longer term goal rather than an immediate "fuck it, I failed so the entire industry must be full of idiots".
asidiali · 5 years ago
What pay are you looking for? Specifically. What numbers are you looking for that are out of reach at non-FAANG?
sandrom927 · 5 years ago
agree on the whole elitism notion. it is about time we abolish that :)
anonbc395 · 5 years ago
I 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 · 5 years 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.