Leetcode isn't used for html/CSS roles / basic web design roles. It's generally used at large SV companies which use software at a very large scale. Most people who apply aren't poor and have undergraduate degrees or higher. When you are using software at that scale algorithms are pretty important to get right. Not all software jobs require a computer science background, but a lot actually Do. Look at the open source work that FB or Google do, most of it is very computer science heavy. They aren't just hacking together for loops
> Leetcode isn't used for html/CSS roles / basic web design roles.
I don't think this is true. I've a buddy whose bread and butter is web development at small companies (<20 devs, often < 10) and he's been running into these types of problems at just about every role he has applied for in the last year and he's absolutely terrible at coding interviews despite him being able to reliably turn out solid code during his day job week after week.
What's fashionable in SV tends to be adopted by other companies no matter how well it actually fits. See shops with one team of 6 developers trying to turn everything into microservices.
This was my experience during 2020 (companies were being really picky). I ended up temporarily working far below my day rate to pay the bills. It wasn't fun.
I got hired for 3 times the amount based on my previous work. No time wasting tests, just my work.
The complaint is that the skills that leetcode is teaching you / testing you on isn't relevant for a lot of jobs. I am not talking about just basic web development either, that was just an example to illustrate the point.
The whole issue that these sort of tests are used inappropriately accessing someone suitability for a job. Most software people produce is simply implementing existing business processes. This doesn't require anything too smart algorithm wise, but may require good use of gang of four patterns or understanding how best to put a database together.
Knowing How to put a database together of requires you to understand algorithms though. joins /indexes /sharding etc require knowledge of cs theory. Knowing the details is very valuable.
> joins /indexes /sharding etc require knowledge of cs theory. Knowing the details is very valuable.
For the vast majority of scenarios you are going to run into no not really. You normally just need to read the documentation and know how it should behave and think a little bit about how the database is likely to be used. You really don't need any CS theory to be able to do that.
In any event it isn't what a leetcode / hacker rank style questions are testing for.
I don't want to be rude but I swear a lot of people on this site live in a bubble and don't really understand what happens outside of it.
I mean what is an index ? Merge join vs hash join ? These are basic algorithmic ideas that you should know if you're doing any sort of optimization on a database at all. I don't mean to be rude but I hate working with people who have no interest in their craft. They tend to make work harder for everybody else. I'd rather hire people who are actually interested in learning.
> I mean what is an index ? Merge join vs hash join ? These are basic algorithmic ideas that you should know if you're doing any sort of optimization on a database at all.
I have faith that I can read documentation, relevant theory and implement a suitable solution. Whether I score highly on a hackerrank/ leetcode test won't enlighten either of us if I am capable of implementing a suitable solution.
What I certainly don't need to do is prove that I can memorise and implement the some algorithm in some arbitrary timed test that isn't relevant 99% of the time for the tasks that I will be performing day to day while creating software. It isn't a test of whether I can perform the job or not. It is a waste of my time.
I don't really understand how you cannot fathom the difference.
> I don't mean to be rude but I hate working with people who have no interest in their craft. They tend to make work harder for everybody else. I'd rather hire people who are actually interested in learning.
I (and many others) have plenty of interest in my craft and work to improve myself all the time. Just because you cannot comprehend that people can get stuff done without knowledge that you happen to think is important and doesn't mean they are lazy or uninterested.
Scott Hanselman had this analogy of a tap and a sink. Many people's mental models of it is that you open the tap water comes out and water goes into the sink and out the plug hole. They do not know (and most of the time do not need to know) anymore about how the water arrives or leaves.
However knowing a little about what happens before and afterwards might be useful if you need to fix a clog. That doesn't mean I need to be a plumber, nor do I need to know how how the sewage system works. I can fix the clog and get on with my life. That is how most people manage and results are normally sufficient.
These are valuable, you're right. But they're not _necessary_, which is the point here.
I've been working on databases before and come across slow queries and read up on both the general theory and the DB specific practice for improvement. After that I've filed away in my brain "this DB needs this sort of optimisation", then ejected the rest. If I need it again in 5 years, I'll look it up and recap.