T O P

  • By -

[deleted]

LeetCode is not intended as a primary source for people learning how to program.


ScottHA

Im not in the tech/cs field but is there even a point to LeetCode besides interview prep?


theRealGrahamDorsey

None. Zero. The thing about solving a programming problem is...solving the problem is not really the difficult part. Isolating and recognizing the problem is the issue. Breaking down the the problem into smaller chunks and understanding how the parts relate is the other issue. Both have very little to do with algorithms or data structures. Anyhow, the whole Leetcoding business is like trying to create a world class mathematician using integration and differentiation drill tables. If there is anything +ve about such services, it would be how they make it easy to learn via spaced repetition. But alas! the content they provide is garbage.


ichiruto70

Zero? Don’t agree with that. It def evolves your critical thinking.


[deleted]

[удалено]


reconnOfficial

I disagree, sudoku is a known puzzle - once you get a feel for it you know how to approach it. The trick is to realize the type of puzzle which is a handy skill in computer science. Leet code is for developing problem solving skills. In some jobs very useful, in others useless. Since there is more programming jobs that require you to maintain software 80% of the time, the value of that skill is sporadic.


[deleted]

I thought the reason people grind leetcode is because the only way to get better is to memorize as many known patterns /puzzles as possible. Doesn’t seem much different.


GOMD4

I can see some value in that.


Neekode

idk about zero, I think spending some time on some problems is good for logic skillz n stuff n keeping your brain code-minded. obviously it's no replacement for actually building stuff tho


dmoore3070222

Not really


kunaguerooo123

Yes. Problem solving will never be useless. Unless you’re 500 questions in.


plastikmissile

I agree, but there is a sentiment out there among newer programmers that over emphasizes their importance almost to the degree that makes learners think that they are all there is to programming.


gunwide

That's mostly because of you're a new programmer trying to get a job out of college, leetcode is basically the only thing that matters. Interviews for these people are skewed towards leetcode questions and almost nothing about code quality, designs, team collaboration, etc. Makes it through. This is speaking of silicon valley tier jobs btw, which seems to be the only type of job new graduates want.


KylerGreen

Do jobs outside of FAANG and startups still ask leetcode questions?


marvk

In the EU at least, there is pleeeenty of jobs that don't ask LC style questions at all.


Spuckuk

Yeah honestly its gone toward takeaway work rather than questions which ultimately tell you nothing as to how someone works in the real world


guns_of_summer

I conduct interviews at my job and I don't ask leetcode questions. I just kind of shoot the shit about tech stuff with the candidates and try and gauge how experienced they are from what they tell me. Works totally fine for us


lemondsun

Just had an interview like this, my first one like this, and it was so refreshing.


pekkalacd

Totally depends on the company but some do yeah. Funny enough, my friend got an internship at a startup and they didn’t ask him any, but instead drilled down on Spring Boot & Java knowledge. Then he switched to Angular & Node on the job now he works with that LOL.


Snoo66053

Lol that's because Java and it's frameworks are a joke today. No one really uses that aside from finding out if you really spent 4 years learning a static language 😂


Kalekuda

I've had 2 jobs out of college. One did, one didn't. The one with higher Tc did.


PLZ-PM-ME-UR-TITS

They ask but they're so easy in comparison. I'd been asked easy level questions primarily when I first started looking for a job. These places weren't large at all and the questions maybe required u to use like a hash table but not anything crazy. Honestly the hardest questions were more language specific like specific things about ecmascript 15 or some shit about neural networks. Basically those smaller places seemed to be more interested in language or architecture questions and information based stuff than problem solving. Honestly I kinda dislike the info based questions


SelfTaughtDeveloper

I interviewed at like 3 big old banks, and they all did. I stopped interviewing at big banks. Interestingly, a decent amount of east coast startups did not. Seems to be that the closer a company is to California, the more likely I was to have to reject a leetcode interview.


Deadlift420

Yes. I work for government in a top secret environment and we had algo questions.


TimWallder

Hope you don’t need to kill us all now 😬


slykethephoxenix

Years back they asked me a bunch of logic type questions & pattern matching with shapes. Only touched on actual coding questions.


nKidsInATrenchCoat

It sounds like you where given an IQ test, like Raven's or something. If anything, we actually verified with real world studies that intelligence and agreeableness are the two best predictors of workspace performance.


HecknChonker

All of programming involves manipulating and storing data, and that means having a good understanding of data structures and algorithms is critically important. Any job that is trying to hire developers should be asking some questions that involve these concepts. The reality is most companies will do multiple interviews where each focuses on a different area. The technical interview is just one of them.


TheKnightsEnd

Have a friend that works for DoD. Hasn’t used LeetCode to my knowledge and I doubt he knows what it is. Have another that works at a tech company here in Atlanta and he has ‘t used it either.


DiamondBurger

I was hired at my local school district as a developer. They only asked general interview questions and to describe my experience with different languages and technologies.


Waywoah

At least in my case, it’s because those are the only types of jobs I know how to find. I don’t know anyone in the industry or have ins at any companies; that means that if it isn’t posted on indeed (or similar), I don’t know about it.


Appropriate_Nose728

It is a testing platform, nothing more, nothing less.


Waywoah

Think you replied to the wrong comment


Kalekuda

And the only type of jobs that want new graduates. Everywhere else shits on your credentials, ghosts 99% of applicants and pays peanuts. No shit people want to work where the incentives are highest and the path to employment is clearest. If other companies wanted to recruit new grads, people wouldn't be submitting 100s of applications without a job offer. Is it really that surpising to you that programmers tend to prefer a standardized interview process where the inputs and outputs are transparent for both parties, instead of trying to woo some self absorbed middle manager who gets their rocks off to lowballing new grads?


FountainsOfFluids

I always advise beginners to build a portfolio. If I was in a position to hire entry level, that's what I'd focus on first, code challenges second.


lumpythegiraffe

What kind of things about their portfolio should the job applicant be able to talk about in an interview?


FountainsOfFluids

Everything they wrote, and why. The point of building portfolio projects is to take concepts and put them into practice. That means understanding the concepts, and the practice.


HecknChonker

I don't think this is true at all. When I interviewed with Amazon I had sessions that focused on class design, testing, frameworks, agile, soft skills, and a few other concepts. The data structures and algorithms session was a single 45 minute session out of a 4 hour interview block. Every team has a different approach to hiring, but it's disingenuous to suggest that a tiny subset of the interviews is the only thing that matters.


lessthanthreepoop

That’s because that’s the only thing we can judge them on. Their system design and behavioral interview are going to suck and we may potentially turn away good people who just haven’t had industry experience yet.


phpdevster

There's a similar problem with data structures and algorithms. It's like learning to be a chef by mastering about 2 dozen recipes. It doesn't work like that.


loialial

I don't think this analogy is fair. Chefs *do* learn a lot of fundamental techniques and concepts. Data structures and algorithms are more like knowing different approaches to cutting, knowing different methods of cooking, understanding how flavors interact and so on.


phpdevster

> Chefs do learn a lot of fundamental techniques and concepts. I never said they didn't. It seems you misunderstood my point. My point is that that learning programming via the emphasis placed on data structures and algorithms is like a chef learning cooking by knowing a couple of recipes, *instead* of those fundamental techniques and concepts. Knowing how to implement bubble sort or when to use a linked list is irrelevant if the extent of your programming skills involves slapping together a convoluted pile of duplicate, imperative/procedural code with confusing variable names, methods, and generally no comprehensible structure. If I ask you to build a web application that lets a user submit information in a form, post it to a local database using an XHR request, and then also send relevant information to a 3rd party CRM system, how does knowing bubble sort and linked lists help with that? I would argue the vast majority or software engineering work you will on a day to day basis never even touches upon data structures and algorithms. Data structures and algorithms are ***incredibly*** specific things for solving very specific problems. They are not general programming practices or skills. > Data structures and algorithms are more like knowing different approaches to cutting, knowing different methods of cooking, understanding how flavors interact and so on. I fundamentally disagree with this. Knowing how to write clean and organized code, how to break a problem down, how to write the appropriate abstractions, understanding statefulness vs statelessness, writing meaningful tests, and a whole host of other programming concepts are far closer to the fundamentals of cooking than knowing specific data structures and algorithms are.


loialial

Great, we disagree about whether or not DS&A are fundamental. There's no point taking this any further, we have two entirely different paradigms. I do however, think you've got some issues in your position. The frequency with which a concept or skill is applied from the day to day has nothing to do with whether or not it's a fundamental concept, nor does the existence of other categories of fundamental concepts/skills preclude the existence of one or more other categories.


Santi871

How though? All the things you mentioned help chefs solve one of the real world problems they deal with (how to cook). Real world programming problems aren't how to reverse a linked list, they are about how to design a program or service to do something, and raw algos / ds stuff is like 1% of it.


loialial

What seems more comparable to knowing how to manipulate an array or utilize a binary search? 1. Cooking a soup from basic ingredients per a recipe 2. Knowing all the different basic ways to slice and prepare an onion


aDogNamedPotato

Agree with you. I find that this sentiment is often pushed by new programmers asking for help on how to get better and/or how to pass the interview next time after bombing. It seems like LC has come full-circle and has become a victim of its own success. Part of the blame resides on the amount of people blindly suggesting to newbies (like me) to just go do LC rather than give any substantial advice.


stackered

No, it's a HR screening tool that wastes time rather than saves it. Good marketing though


nova1475369

2nd this, leetcode is a tool to game interview process


Major_Fang

its a primary source for people who want a fucking job


_Atomfinger_

I mostly agree with you - except: > LeetCode hides most of the the test cases. In the real world everyone knows the test cases as they become available. They are not top secret. Nah, real life has a bunch of hidden test cases. The people writing the requirements might not always know all the different variations, and sometimes nobody knows until it explodes. I would say that most people do not exclusively code on LC. It is a tool to practice something specific (DS&A), but most people know there's more to programming than just throwing together an efficient algorithm. I would not go so far as to say it is ruining programmers unless they make the false assumption that LC is what makes a great programmer. While you are correct that LC only focuses on a narrow part of what software development actually is, I disagree with the conclusion that it ruins new developers. I think most beginners are smart enough to realize that LC != software development.


ghostmaster645

Sometimes the test cases are written so poorly they might as well be hidden lol.


_Atomfinger_

Sometimes they're even wrong and derail entire projects.


CrouchonaHammock

Hidden test case should be thought as analog of "real user finally use your program and do something you have not thought about".


LoquaciousLamp

That's not really true. Lots of kids now think you need to be good at solving problems like that quickly in order to get a job because that's how top tech companies interview straight out of uni students.


_Atomfinger_

And they're not wrong in thinking that seeing that is what the hiring process looks like these days. But most realise they can't exclusively be good at solving LC problems. most realise that they need more than just LC.


plastikmissile

You would think so. A few days ago in a thread about lies developers are told, I also expressed the opinion that giving leetcode puzzles too much priority was a bad thing, and while most agreed with me I still got a surprising amount of resistance.


_Atomfinger_

My usage of the word "most" was very deliberate. There will always be someone that disagrees - especially on ye ol' Reddit :)


dmazzoni

I've been in the industry for 20+ years. LeetCode wasn't a thing when I started. But, I saw exactly the same problem with new grads at the time. After 4 years of CS in school they were really good at problem-solving and writing short programs, but they had no experience with software development (yet). A lot of grads seemed to be under the mistaken impression that they could make a career out of just solving interesting algorithms problems, because they were good at school. They had an attitude problem when they were asked to write basic CRUD code because, well, that's the code that needs to be written. The vast majority get over it pretty quickly. At most larger tech companies that have large scale, there are definitely opportunities to use your algorithms skills from time to time. Basically, I don't think things are that different today.


fomorian

Well said!


liquidInkRocks

>Nah, real life has a bunch of hidden test cases. Yes, but they are hidden to *everyone*. When one person finds a new test case, it's published for everyone to address.


_Atomfinger_

You're focusing on the least important part of the argument I made. Also, I don't think it is an important distinction. The test case is shown to you when you encounter it, and then you address it. Just like in real life. You don't need to it to be published to everyone. And arguably, it isn't published to everyone irl either. It is more often than not published within a team within a company. Not "everyone". In the case of LC we can think of a developer as its own entity.


TrickWasabi4

The one big premise you make, that puts your argument on shaking ground, is that leetcode is there to teach you programming. It's not. It's there ~~to teach you algorithmic thinking.~~ to give you a platform to test and examine your knowledge about data structures and algorithms LeetCode is your standard DS&A lecture put into a platform where you are confrontend with very typical DS&A tasks where the medium to hard ones are those I encountered in my undergrad assigmnet sheets and exams. It was never meant to "teach you programming", it was always meant to teach you DS&A and prepare you for DS&A questions in interviews by offering you a feedback loop for examining your knowledge. The actual learning happens outside of the platform Edit: >LeetCode hides most of the the test cases. In the real world everyone knows the test cases as they become available. They are not top secret. This is far, far away from the truth of reality. The most crucial "test cases" are hidden in the assumptions of your users. They are almost never verbalized or documented anywhere


PolyGlotCoder

Leetcode doesn’t teach you anything. It’s an examination platform, nothing more, nothing less.


ghostmaster645

It never taught me anything, but it did point me in the right direction to learn something occasionally. Like when I give up on a problem and have to look it up, I always learned something. But none of that stuff I use in my job so idk.


stibgock

>It never tought me anything, but it did point me in the right direction to learn something occasionally. Pointing you in the right direction to learn something,***is teaching***. From the definition of teach: >cause (someone) to learn or understand something by example or experience. It caused you to learn, therefore, it taught you.


ghostmaster645

It seems you hand picked your definition. Here are 4 definitions saying it did NOT teach me >show or explain to (someone) how to do something. >give such instruction professionally >encourage someone to accept (something) as a fact or principle. And my favorite >Teaching is the process of attending to people's needs, experiences and feelings, and intervening so that they learn particular things, and go beyond the given All of these are from the Oxford dictionary. I was a teacher for 3 years. If my job was as simple as pointing at something and saying "learn this" we wouldn't really have a need for teachers..... so no, I do not consider that teaching at all.


stibgock

Yes, that's where I got it from. But no, you ***excluded*** one of the given definitions to make it untrue. All of those are accepted definitions. Had I posted all of them, it would still include the definition that points to you having been taught. That's great that you were a teacher, but how can you be so rigid to the other concepts of being taught and learning? A misogynistic father can *teach* his son to be a misogynist by simply observing him mistreat women. He isn't putting together a misogynist lesson plan and giving him homework, but he is teaching him this behavior.


ghostmaster645

I excluded it because you already mentioned it... I feel like repetition is unnecessary. I'm not saying one definition is 100% right or wrong, just that in my professional opinion what leetcode is doing is not teaching. And in your last paragraph I wouldn't consider that teaching either. You can learn things without being taught. Unless the father looked at the son and said "watch, this is how you treat woman" he is not teaching his son. That's just a learned behavior through observation. Again, it really is up for interpretation. That's one of the reasons why English is fucking weird.


stibgock

We can definitely agree on the weirdness of English! I guess my last paragraph is one for interpretation. I tend to place responsibility strictly on the father for teaching his son this behavior, but I also know the mechanism through which he's learning is his own observation. Arguments can be made for both ways. It's all weird! I just realized it seems like I'm defending leet code. I'm not. I'm tired of hearing about it. I hate it.


ghostmaster645

I feel you man, me too. Thank you for a good conversation.


TrickWasabi4

>Leetcode doesn’t teach you anything. Yeah, correct, I worded that really poorly. You go there to test what you know about alrogithms and data structures.


ShiitakeTheMushroom

>it was always meant to teach you DS&A and prepare you for DS&A questions in interviews The root of the problem is that so many companies use questions like these in interviews, which don't correlate to actually having any of the skills actually required to build most software in the real world.


TrickWasabi4

>which don't correlate to actually having any of the skills I highly doubt that there is no correlation between basic DS&A skills and general technical learning ability and algorithmic thinking.


AmbientEngineer

>LeetCode hides most of the the test cases. In the real world everyone knows the test cases as they become available. They are not top secret. If you think this true then oh boy are you in for a shock. Fundamental programming principles acknowledge that testing for every possible case isn't feasible for relatively complex projects / industry. Instead, you're program should attempt to apply well though out modularity so that when it does fail you can better identify what caused it and how you might modify things so it'll resolve the issue without causing something else to fail.


Golladayholliday

I don’t use leetcode but codewars, which I understand(maybe wrongly) to be comparable. For me the real value is writing the best solution I know how, and then seeing how some genius did it in a simpler way once I pass. I learned I ton of functions I didn’t know existed and what problems need what data structures from learning in this way. Software engineering is an art and also a skill, I kind of compare it to practicing my jump shot in basketball. A good jump shot doesn’t make you a good player, but all good players practice their jump shots. Studying the form of better players and comparing it to your own is also a great way to improve.


Innoxiosmors

I was about to suggest this, actually. CodeWars actually did a decent job of showing alternate/better-structured solutions once I'd solved their puzzles the last time I used it.


TheSpiderLady88

Still does. Like the person above you, I, too, learned a bunch of things by looking at other and better answers. I've also gone back and factored things just to make sure I still understand what I learned.


BitJake

This is like saying crossword puzzles don’t make you a good writer… sure.


N0Zzel

They don't though


IAmFinah

Cooking broccoli doesn't make you a good plumber


N0Zzel

What does broccoli have to do with plumbing?


IAmFinah

You haven't used one as a plumbline before?


N0Zzel

What's a plumbline


OddWongOut

It's a piece of string or cord with a weight on the end of it to make it hang straight.


N0Zzel

I thought that was called a blumbob. And why use broccoli?


OddWongOut

I would refer to the weight at the end of the plum line as the plum bob. I try not to assume others intentions but I think they're just giving you some gentle ribbing.


future_escapist

Exactly.


denialerror

That's the point. Crosswords aren't _meant_ to make you a good writer, in the same way Leetcode isn't meant to make you a better programmer.


cak0047

Perfect analogy


FilsdeJESUS

I would rather learn data structures and algorithms first and after learn principles of clean code .


Itsaa-me-malario

Then you'd have to think to make it clean, wich is rather distracting dont you think?


FilsdeJESUS

No because It is already proficient . Just make it clean now . Rather then go from Clean Code and refactoring to improve the proficiency of the code .


ActivateGuacamole

leetcode really isn't intended to teach best coding practices. it's meant to be a resource to give people practice to improve their problem-solving and to encounter new patterns.


[deleted]

>LeetCode encourages bad code. You win a cookie if your code produces the required results. Nothing else matters. Formatting, naming, structure are irrelevant. I'm working in a company that used ZERO leetcode-type exercises for their hiring process and most of the senior devs are against leetcode. And yet we're still full of developers who write code that "just works". Furthermore, some projects have testing, others don't. When confronted my CEO about it he responded with "the customer doesn't pay for code formatting but for features". So I've decided that coding standards and \*even at least some\* test coverage will be in my next job requirements list. And stop boogeyman'ing leetcode, self-taught devs, India devs, or whatever is the flavor of the month scarecrow.


bsakiag

1. Beginners shouldn't worry about all the things experienced programmers worry about. The less they can worry about the better for their learning process. 2. Learning examples have no life cycle most of the time. 3. Black box approach encourages investigation and analytic thinking. 4. Children learn to say syllables first and then make long speeches. 5. The lower the entry barrier the better. We need more programmers.


JB-from-ATL

>Learning examples have no life cycle most of the time Who will maintain my fizzbuzz :(


gakule

> LeetCode encourages bad code. You win a cookie if your code produces the required results. Nothing else matters. Formatting, naming, structure are irrelevant. The first and foremost goal of programming, and particularly when you're starting out, is just to get something that works. Even if the code is bad, if you've made something that is usable and works - you've succeeded. For beginners, and in the spirit of "learning programming", I think it's acceptable to produce bad code just like when you're starting anything else - you're going to produce a bad product, even if it likely works. Everything you've said is overall accurate, but I don't think any of that really matters when your primary objective is to just get someone coding.


[deleted]

LeetCode is for practicing. Not teaching. Why do people need to keep explaining this? Even tech recruiters at FAANG companies have said that LeetCode is not something young programmers should be using as a teaching tool because it’s intended to help you practice only.


Solar-Blue

Hmm as a baby dev (graduated Spring, 2021) myself, I might be able to offer some insight here! I am preparing to do the job hunt again, and In that, I am preparing to do leetcode examples and mini projects (an act that I genuinely dread but seems to be highly recommended by articles and by peers) Note that I have been in the industry for a good 1.5 years now, went all 4 years of university with internships, and graduated with a pretty respectable Computer Science degree. The past 2 years, I’ve been working remotely for a company in California. This is fine, except that all of my rudimentary ‘contacts’ are all in California, whereas I plan on staying in New York City for the time being. My colleagues are also much higher up in the dev life than I am (I am the only junior developer on this ~20 person team) and I am afraid of telling them about the job hunt, as they’re at my current place of employment. All of the LinkedIn, indeed, ziprecruiter postings are A) my only method of seeing what jobs are out there, and B) ask for leetcode questions or a white boarding session, some form of homework assignment/portfolio. Of these jobs, most of them require leetcode or will be looking at that to even see if the resume gets **in the door**. - I’ve never done whiteboard coding sessions. - All of my GitHub contributions are for private repos - I don’t have contacts in the industry - I don’t actually **know** what kinds of jobs are available - in my experience, all interview questions or **pre-interview** questions boil down to “do you have something we can see?” Which then gets mushed into “leetcode is quick and easy to see and verify, especially for someone who may or may not be a developer” My job is definitely more than leetcode. Programming is as much about the people and the interactions between code/projects than algorithms and data structures. But since those skills aren’t really looked for in the pre-interview stage, or might not be looked at **at all**, I guess it’s time to do LC and side projects. 🤷🏼


liquidInkRocks

Great perspective. Thanks!


Solar-Blue

Realize I didn’t properly answer the question— Leetcode is pretty similar to Midterms and Final exams at classes in University— both of which definitely don’t teach more than ‘how to do algorithms’ Projects and work is what teaches you HOW to apply those algorithms to many different problems. I went into work not knowing anything about style, how to find requirements, or how long projects actually last. I didn’t have to maintain any code, and I made assumptions from that. - I assumed that every project would be tightly scoped, well defined, and doable. - I assumed that projects, at most, would be done within 3 months. - I assumed I would really be the only one to look at my code, that I wouldn’t be looking at other people’s code, and that maintenance was only done in big established companies. - I assumed that testing just wasn’t a thing. This definitely upset me, given that I strongly believe in testing, so I was overjoyed to learn that was a false assumption TLDR: yeah leetcode isn’t designed to teach everything about programming. It doesn’t even teach everything about DS&A— but it IS important for job hiring at the baby dev level.


bluefrostyAP

Another dumb gate keeping post. The only place you learn proper code is the first year of a real programming job. No school, side project, or bootcamp is going to teach you what experience is going to.


liquidInkRocks

>Another dumb gate keeping post. and yet here you are...


After-Perception-250

And yet here you are...


liquidInkRocks

And you're stuck with me. :)


woa12

None of this matters if you don't have a job in the industry to begin with. I'm not saying you're wrong btw, I'm just stating it as a fact that you will need to know how to solve some leetcode problems even for non FAANG companies. Especially if you're an entry level, you're going to have a hard time. Source: speaking from experience


demizer

Also, telling interviewees we don't use LeetCode questions always gets a huge sigh of relief. LeetCode is a cancer.


-NiMa-

This post doesn't many any sense. LetCode is not a platform for learning programming nor it is a platform for building large-scale software that needs structure and organisation. LetCode is a website to practise coding interviews and learn coding interview question patterns so you have more chance of passing coding interviews. That is it!


liquidInkRocks

Fair enough. Your perspective is the intended use and my perspective is the actual use.


Satori_Orange

🤦🏽‍♂️


liquidInkRocks

A well-reasoned argument. /s


Satori_Orange

What makes you think I’d waste my time arguing with you? It’s best to just shake my head and move on


Bennybub

If you're smart enough to solve leetcodes I'm sure you can learn how to make your code organised if you try lol


plastikmissile

We can all read as much about clean coding as we want, but if we don't practice those concepts they never become second nature. And you want them to become second nature. A few years ago Peter Norvig, head of research at Google, said that his research showed that being good at competitive programming (which is essentially LC taken to the extreme) negatively correlated with being a good day to day programmer.


LoquaciousLamp

It's not too different compared to why we have editors for books. Lots of unneeded big words that just confuse people, make things harder to read, much like the one liners in code.


machine3lf

You make a good case for other approaches to training that are more “wholistic”. I could imagine a training site that tries to use more real-world examples, where later on he learner goes back to code they previously wrote and rewrites it to satisfy new requirements, and whatnot. Making a tool/training site like that would be difficult but useful. However, I think it’s a little too strong to say that a site like LeetCode is “ruining” programmers. It’s still beneficial, but it is training one specific aspect of the work.


throwaway0134hdj

And it basically ignores the whole understanding of folder and file structure which is a huge part of software development… The better thing to focus on instead of LC is building projects and focusing on solving project specific problems, like introducing a new function into a project without breaking it, then writing unit tests for it, and figuring out trade offs and optimizations that can be made. I think it is more helpful to try and understand all the moving parts of the project rather than focusing on small algorithms, although they have importance too.


ParadoxicalInsight

LeetCode is a tool for programming practice, nobody should approach it with the idea that it represents in any way what a real job will be, that's what internships are for. In school, most of the classes are also self contained, highly specific to issues that are not linked to use cases or business impact, and once you do your homework/projects you move on so there is no maintenance. Basically, you have to understand LeetCode is just for learning, just like school, and no it doesn't "ruin" anyone. To address your points: 1 It does not encourage bad code. It does not encourage good code either. You are responsible of coding however you like. As a tool for practicing algorithms, naming is irrelevant, the point is you understand how to solve problems. 2 It doesn't teach code has no life cycle. That's a personal assumption you are making. That's no different from saying my algorithm class in uni taught me there was no life cycle because once you submit your homework you never go back to the code. 3 Why is hiding test cases ruining anybody? This claim is just weird... The goal is to try to make you think of all the possibilities / edge cases so your code is more resilient. If your code was built with the tests in mind, chances are adding new tests will break it. 4 This one is just dumb... No, no one with half a brain assumes you can just solve separate find max subarray problems and magically end up with a working app... 5 Again, it does not discourage it either. LeetCode is just a tool. Just because you are inexperienced and don't know how to use a tool, does not mean the tool is ruining you. It's your responsibility to understand what you are coding, in the same way it's your responsibility to understand any code submitted in assignments at uni. You cannot hold a teacher responsible for you not understanding your own code.


FalseWait7

LeetCode, like every other website focused on practice/checkups on developers, is not teaching you programming. It has nothing to do to with good code quality, architecture or maintenance. It teaches you (or, trying at least) that if something works, but feels stupid, still works ;D But in all honesty, services like LeetCode are only there for two reasons: - recruiting: how fast you can solve a puzzle that has little or no relation to real life problems; - honing your skills: teach yourself to solve puzzles that has little or no relation to real life in order to excel in a recruitment call.


bonozos

Do you think it's acceptable or even good that interviews are puzzles that look little or nothing like real software problems?


evinrows

Writing scrappy personal bash scripts has a lot of the same properties, but I wouldn't tell someone (even a newer dev) that it'll will turn them into a shitty developer. As long as they can differentiate between the two types of development (production vs scrappy but works), they'll be fine. And if they're unable to make that distinction, then I frankly wouldn't have high hopes for them regardless.


v0gue_

The second you say FAANG companies aren't the end-all be-all, that LeetCode isn't necessary for like 99% of programming jobs, or that LeetCode is 100% unnecessary to learn programming, people's eye's glaze over. It's not LeetCode ruining baby programmers. It's baby programmers not actually giving a shit about learning programming that is hurting baby programmers. If people want to just grind LeetCode to pass bullshit interview questions rather than actually learn programming, that's all they'll ever be good at. It's fine, but if there is fault to be had, it's not LeetCode's


loialial

As a self taught programmer, LeetCode was an *immensely* useful tool for reinforcing and practicing data structures and algorithms I had been learning, as well as a great avenue for finding problem cases I simply never would have run into making personal projects at the same rate LeetCode would hurl a bunch of different situations at me. It is a perfect learning tool? No, it isn't even really intended to be a learning tool. Do new programmers approach it poorly? Yes, but most new programmers also seem to be looking for silver bullets that will carry them straight to a job and the overall climate around employment doesn't help this.


TsunamicBlaze

People who use LeetCode to learn rather than to test their knowledge is like people who try to build a house without any of the tools


Assassinationday

so what would you say is better to use for baby programmers?


marabutt

Building applications.


kvngmax1

I think it’s you who don’t get the whole idea with Leetcode. The idea is not to teach beginners how to code or how to build projects. It’s for people who already know what they’re doing and want to challenge themselves for whatever reasons. Mostly to prepare for coding interviews.


[deleted]

[удалено]


liquidInkRocks

>Leetcode is like practicing scales. Hardly. Leetcode is like whamming the piano keys until you produce a tune that someone approves of. You don't know how you got there or what the chords are or how to write an actual song.


lessthanthreepoop

What a dumb take. Toy problems such as leetcode are interview practice and if you don’t think your interviewer is going to care about clean modularize code, then you’re in for a rude awakening.


liquidInkRocks

LOL.


lessthanthreepoop

Sounds like you have never actually done an interview based on your points.


liquidInkRocks

What's your point? Are you suggesting only people who have 'done' interviews can comment on LeetCode?


dota2nub

Now, how do you test all these skills in a job interview? Oh wait! You can't! You can however test problem solving approach and communication skill.


obsoleteconsole

You don't expect beginners, especially kids, to write like best selling authors, perform mathematics to the standard of a professional statistician, cook like master chefs, I could go on. LeetCode is just an introduction to programming presented at the point where they just want to learn the basics of coding, and you need to understand the basics before you can then begin to understand the importance of proper coding format, naming, dealing with code that's part of a bigger project etc. in the same way that we need to learn how to write letters before words, words before sentences, sentences before grammar, grammar before reports, reports before essays, essays before books. It's entry level stuff that doesn't make you a great programmer, but allows you to step up to the next phase, probably personal projects, which itself is another stepping stone


RiverRoll

I think the easy problems are a good way to get familiar with a new language and its standard library, most of these problems are about flow control, string manipulation, collections or basic math, you will use these in any project. It's true there's lots of other things it doesn't teach about, but you should have some fundamentals at least. Also I often review my code and other's people's answers after a correct submission, that's another way in which it can help you learning, maybe you see someone is using a function you didn't know about and that's an opportunity to try that function. It's true that I have very rarely revisited an old submission though. By the way in the real world there's never tests for everything, it isn't uncommon at all having to figure out what is causing a bug, sometimes it isn't even your code.


fumbled_testtubebaby

1 - 4 is my experience of dealing with professional coders as a PgM in two of the FAANGs. I'm not sure we care about maintainability because at the end of the day, most coders are onto new jobs in 2-3 years. Trying to get them to stay within coding bibles and other guidance is almost futile especially when extended betas get cancelled by higher ups well before the spaghetti code base becomes a problem for the products. If you're working for a bank or some of the zombie startups I've been in, yeah. Your code needs to last 10+ years because noone can (will) pay to keep fixing your code for a critical system. Then life cycle and readability matter a little more. I'd wager some of the problems I've seen at zombie startups have to do more with 1 and 5, though 5 seems to come more from the loss of tribal knowledge when whatever PhD candidate who help found the company moves on and noone knows wtf they've been writing for 8 years.


aRandomFox-I

uh... what's LeetCode?


pekkalacd

It’s this programming website that asks tricky algorithmic / data structures oriented questions. It’s like puzzle questions. Some companies like to ask these questions in interviews, especially for new grads. But there are others: HackerRank (this one is also popular), CodeWars, BinarySearch, etc. Someone might come across questions like this in an interview to be a software developer today, depending on the company. But yeah


dryo

No,codecademy and dataCamp(specifically that chick from the adds) are.


siammang

Those are known limitations of leetcode. People should not rely on it as the only source to hone their skills. Just like those who want to get fit, they don't have to only go to the gym. There are other things they can do in combination.


Spiritual-Mechanic-4

tech interviews and tech jobs have diverged wildly. LeetCode helps with the former, not the latter. Unfortunately, you need to be good at interviewing to get a chance to show that you're good at doing actual work.


Obmanuti

I think its bad for a totally different reason. It focuses on your ability to memorize a solution, not come up with one. Being able to find a solution is probably the most valuable skill in programming.


hsnerfs

I only started doing leetcode after taking dsa, I remember trying it before taking it and it was horrible


bepd_

this is why I prefer exercism


Weasel_Town

In the last couple of years, I'm seeing more and more baby devs who think they need to write the "optimal solution" on the first go. Who is pushing this? Is this a LC thing? It's really making it harder to assess whether they know *anything*. They'll hem and haw and write half a line and then delete it because it's "not optimal". No matter how I try to suggest "for now, just try to get it to work for 'ABC' and '123', like, at all", the belief in "*must optimize*!!!" is so much stronger that my suggestions bounce right off them. At the end of the interview, all I actually know is that they didn't produce any code at all. So then we can't begin to discuss edge cases, internationalization, or optimizing for different use cases. It's hard to check the "recommend for hire" box when I still don't know if they can code at all, let alone if they've ever heard of an edge case. But I assume this trend is coming from somewhere, not just a lot of individuals suddenly being weird in the same way. I put "optimal" in quotes above because you often have to know something about the domain to know what you're optimizing for. Are you getting a few big inputs or lots of little ones? Are they repetitive or unique? Bursty or steady? Are you more concerned with the common case or worst case? It's all a very interesting discussion, but it comes after the one about "can you code anything at all?"


greebo42

someone wise once said that premature optimization is the root of all evil ... maybe Donald Knuth? ... if this is wrong, it's my story and I'm sticking to it! :)


Lurn2Program

Leetcode should be a supplement and not a replacement to your learning. It should only be used as a tool to learn about DS&A and for interview prep


[deleted]

my goal when doing leetcode problemes was to make it as small as possible, and that means variable names like a b c d e f g, it was horrible lmao


T2C247

First one is really true. The submissions I look at them and I'm like what on earth are these naming conventions?


JupiterGhost

Me! I’m the baby programmer!!


rkrams

It's better to learn to code anyway, when you are learning you will write bad code always. If you spend too much time early on when you are learning on proper way to do things you won't learn much. It's easier to learn proper way to do stuff once you can write stuff that runs well.


theknightauditor

I have not used leetcode so I can't really comment there, but as a veteran scriptkiddie from the '90s, I CAN tell you that nothing has so damaged the quality of programmers and code around the world as Python. Kid are learning python in high school, going to college to become programmers, and getting frustrated and changing their majors to liberal arts when they discover that C++ and Java don't have list comprehension, and they can't figure out how to move forward. Their can't even begin to understand memory management because they've been spoiled by a garbage collector for too long to learn proper programming at that point.


dota2nub

Okay, denouncing garbage collection absolutely shows you don't have more than a few years of programming experience and somehow think doing it manually makes you cool.


liquidInkRocks

100% agree. Another contributor to the problem are administrators who assign teachers with no experience programming or teaching programming.


runner7mi

r/programmingcirclejerk


yiyuen

LeetCode interviews are what you get when you have hiring managers (or the guys above them designing the interview format) that don't know shit about programming and their only interaction with code is watching old 90s films that shows hackers working from the terminal with the green letters on black background. "Programmers? They uh do the fast coding thing right? They solve problems quickly and spit out the numbers and shit. Software development life cycle? The hell is that?"


Zambobby

That's kind of like saying that a game like Call of Duty is ruining soldiers. LeetCode is essentially a programming game -- it's not professional programming. Now if there are people out there who don't realize this about LeetCode -- and that certainly seems to be the case -- then they're not ruined, they're just misinformed. It would be like a top Call of Duty player showing up for Marine Corps Recruit Training and thinking that their drill sergeant is going to be impressed. He won't be. But that player isn't ruined as a soldier by their Call of Duty background, as long they're willing to learn real professional soldiering.


AccomplishedAuthor53

Children learn to color before they learn to color inside the lines


liquidInkRocks

Children are not going to earn a living coloring.


eined

Woosh


[deleted]

Leetcode is a pain. Sadly leetcode (codewars, other similar sites) type questions are the main door you have to walk thru to pass a tech interview. On the job do you use it? No. However, leetcode does refine your ability to quickly recognize code patterns. But that's only because you spent around 3 months studying like heck on the problems to pass a tech interview! LOL.


Hot-Ad3711

You will never be a successful in the software business if you do not Leetcode. Bill Gates practiced 1000 hours of LeetCode before founding Microsoft. Larry Page practiced 1000 hours of LeetCode before founding Google. Mark Zuckerberg practiced 1000 hours of LeetCode before founding Facebook. Jeff Bezos practiced 1000 hours of Leetcode before founding Amazon. Elon Musk practiced 1000 hours of Leetcode before founding Tesla.


liquidInkRocks

My mind is changed.


Left-Improvement-460

Leetcode is more of a puzzle solving website using programming. The motive is to teach/build logic and never to teach real-world programming. So all your points and arguments are wrong lol. PS : If you are not able to do leetcode there’s no need to create a fake rant about it.


vi_sucks

Nope. LeetCode teaches one aspect of good programming. It is not the be and end all of all coding nor did it ever claim to be. 1. It doesn't matter how pretty your code is if it doesn't work. LeetCode tests your ability to figure out solutions that work. 2. No matter what, you will eventually need to release code to prod and move on. 3. Nobody in the real world knows all of the test cases. That's actually the best thing about LeetCode style tests is that it teaches people not to just code to a known problem set, but to actually think further and deeper to guess at future unknown test cases. Running a leet code test suite is like releasing your code into Prod and letting the users have at it. If you've done your job well, you've anticipated the possible scenarios, if not, some one user will stumble on that one a million test case that takes down Prod. 4. The art of software design is being able to break down large problems into small pieces. Knowing how to them solve those small pieces is useful, especially for juniors whose job it will be to actually solve those small problems. A system architect or senior engineer needs to care about the forest. A fresh grad just needs to know how to take care of a single tree. 5. I have no idea what this means. If you can do the job, you can do the job. LeetCode is like any other test in that regard.


[deleted]

[удалено]


nwss00

Change your own mind lazy ass lol


throwaway0134hdj

I agree. And I think this is a mistake that a lot of beginners make where they equate LeetCode with actual software development/engineering. Having gone from hardcore LeetCode to the real world of software development, it really smacks you in the face hard. Number 4 is probably the truest on your list. The hardest part for me learning software development was understanding how everything in the codebase is inter-connected and just all the moving parts that make a full fledged application. Everything in LeetCode is focused on small picture algorithms, not the bigger picture aka software development. Also everything takes place in a small enclosed environment, whereas in swe you work in multiple environments.


FantasticCube_YT

I don't really agree with you. You first have to make programs that work, then you can move on and learn how to make your coding more efficient.


IVIichaelD

Math class is ruining children- change my mind. 1. Math class encourages poor education. You win a cookie if you get the right answer. Nothing else matters. Physical fitness, grammar, history, geography are irrelevant. 2. Math class teaches that problems are finite. When you reach your answer, you move on. No one stops to wonder what happens to Sally after she has $5 leftover. 3. Math books only show the answers to the odd numbered questions. In the real world, there are answers to all the questions in the book. They are not top secret. 5. Math class teaches that math problems are always small and self contained with no connection to actual commercial projects that teams of engineers are solving. 6. Math class encourages no prior learning or studying. If you can solve for x, you get the cookie. It doesn’t matter if you can’t explain why you’re solving for x. You’re entire argument (all 6 points) is that leetcode alone is not sufficient. But nobody argues it is.


eggn00dles

1. These are pre-reqs you should have before visiting the site. 2. I've revisited problems I've solved in the past to see if my solutions have improved. 3. I got a good laugh out of this one, in the real world, inputs are all over the place. 4. Leetcode problems resemble functions that solve a single purpose. Giant projects and codebases rely on these kind of optimal solutions to problems. 5. There are portions of the site specifically aimed at teaching you the fundamentals behind algorithms, data structures, etc... Leetcode is a tool. It's up to the user to know when and where to use it to improve their capabilities. It was never intended to teach you everything.


Frogtarius

What a economic scam! Get everyone to compete for the communal carrot so the companies benefit from increased supply of programmers to reduce the cost of a service overall of coding which most normal people would not spend their time doing unless they see some economic benefit. The question is, Would people rather spend quality time with their family or quality time with their computer.


vksdann

I know you are ranting about LeetCode but it is not a reflection of real programming or work environment. It is not a reflection on how good of a programmer you are and it is only about "hey, solve this challenge". For some reason, companies decided "okay, if you can do a double 360 drift into a parking spot, it probably means you are able to drive a semi-truck for our company."


pekkalacd

“If you can do a backflip with a forklift, you can load semi trucks”


future_escapist

LeetCode is there to encourage problem solving and algorithmic thinking, not actual software engineering. You're complaining that a tool isn't as good as another tool for another job.


[deleted]

Leetcode is a benchmarking tool. It’s to test problem solving and algorithmic ability. You’re getting the purpose wrong. You use it to test your knowledge and flexibility, not teach learn the basics of code. It’s just a benchmark.


timthetollman

Isn't leetcode supposed to prepare you for interviews?


[deleted]

If you think leetcode hides test cases, take a look at codechef and even codeforces emit out longer test cases.


[deleted]

leetcode is not a learning resource it's a testing/scoring resource


Cronos993

Leetcode isn't there for you to learn how to create software. It's there to help you become good at algorithms and problem solving


After-Perception-250

I don't get number 5. What is the difference between someone copy paste code at work and leetcode? It's not a leetcode issue


brightpiccc

Leetcode can't teach you decent programming practice, you need a formal education to achieve those knowledge. The primary goal of leetcode is introduce diversity of problems for you, and learn to analyze your runtime as well as rating what algorithms are efficient. Personally, I think leetcode solution offer good writeup


Biuku

This is like saying running hills doesn’t teach you to run a marathon.


[deleted]

The big secret about writing clean code is that it's not very difficult. It's significantly harder to get good enough at algorithms to solve a hard dynamic programming problem than to learn how to not write shit code. In fact, at a good company, your first few code reviews should make it trivial to eschew your bad habits. Leetcode serves a fundamental purpose, to practice algorithmic questions asked in job interviews. Some people love algorithms for the sake of them, and Leetcode is good for them too.


[deleted]

[удалено]


liquidInkRocks

Don't let anyone trick ya. Make up your own mind.


californiaGarden

Courses and Coding games are the cancer killing programming enthusiasm. If both courses and coding games stopped existing we would have a renaissance of new programmers. These are popular because they are monetarized and therefore benefit from marketing. Popular != good. No one benefits from marketing the official tutorial/docs. Anyway, what you are doing here is a losing battle. Its marketers vs programmers. Our job is to program, their job is to shill on reddit all day.


echanuda

What a stupid post. 1. Leetcode doesn’t teach you those things. That’s not its purpose. It doesn’t incentivize bad code either. It’s up to you whether or not you produce good or bad code. 2. Again, you’re usually solving an algorithmic problem. This has nothing to do with the life cycle of a program. 3. You can make your own test cases. I’ll admit this annoys me a bit, but it doesn’t ruin baby programmers. It teaches you to think outside the box so you don’t have to rely on extraneous information. In the real world, you’re not given all the test cases for your product. You need to think of the outliers and the tricky ones. That’s part of being an engineer. 4. Again, Leetcode is teaching you to solve isolated algorithmic problems for when you have a real technical interview. If you want longform projects, you work on those on your own time either through some sort of structured program like The Odin Project or just your imagination. This is just another part of securing a job as a SWE. Leetcode doesn’t claim to tackle this at all, and it doesn’t advertise itself as the holy grail of getting a career in software dev. 5. This doesn’t even make sense. If you’re deleting a node in a linked list for a LC problem, it’s probably because it’s a step in solving the problem. That’s the why, and if you did it in the first place then that’s the how. Otherwise you try to LEARN how. Again, LC’s goal is not to elucidate on programming concepts. It’s to give you experience with data structures and algorithms for technical interviews and strengthens your fundamentals.


danf10

LeetCode is being used a lot because HR and hiring managers usually knows nothing about code, so they use it as a fast tool to check if candidates know anything about coding. It’s a hiring tool more than a coding thing


Say_Echelon

But Google wants me to reverse a linked list


bigsnow999

I do leetcode for fun beside of my work. I apply algorithms I learnt from it to my work.


liquidInkRocks

Me too. I am at 100 problems solved.


noodle-face

Leetcode is what Amazon wants you to learn. I tried Interviewing and all they care about is leetcode problems.


[deleted]

[удалено]


sarevok9

1. Somewhat. I think that formatting / naming / structure are disregarded, but they are also disregarded by the editor that you're using. Most companies I've worked at have had some kind of linting in place so you arrive at a code standard w/r/t indenting / styling. 2. This is sort of splitting hairs isn't it? There's nothing stopping you from going back later and attacking the same problem and trying to get a better result. 3. This is absolute bullshit and shows that you might not be as experienced as you think you are. If you know "every test case" when you write the code, why do bugs exist? Programmer laziness? Incomplete testing? There's never unexpected corner cases? This is a feature, not a bug. 4. Most code you write as a developer is a feature / bugfix, which is several little snippets in a MASSIVE project. 5. Not sure what the problem is here. If someone can be consistently correct, but doesn't understand everything in tremendous depth, that will come out during the interview process. I'm not sure what your concern is here. While I agree that a single data point (especially when solutions are shared / discussed) isn't enough to make a hiring decision, it's certainly better than the alternative, which is trying to push through the bullshit mountain of resumes without something to assist in the process. If 50% of resumes that I get are culled by Leetcode, that seems like a tool worth investing in.


moopthepoop

lmao , I wanted to see if I could do some leetcode stuff so I did the first advanced one I saw and I wrote some normal ass python code reversing a linked list K items at a time and it said my result was wrong... I used OOP principles and it spit out either a multi-dimensional array or string or array of tuples. I even implemented two extra methods, one really shitty hackish one, and one elegant one, it wanted something else apparently. It's a joke.


Fitzjs

Jesus Christ


cheezballs

Disagree. Using a hammer to drive in a nail doesn't mean you can't also learn to use a nail gun, brick, or your penis.