I've been programming computers since I was 10. I am almost 40. I've been working professionally for about 15 years now. I've never done leetcode. But I have done stuff like (hackerrank) and I have to spend an evening proving I know how to write some arbitrary problem that I will never encounter anything close to in the position I am applying for. I can solve them. But I feel like I am wasting my time when I do it for the 10th time. I now refuse to do all coding tests. I have a github and a company page with my work and if that isn't sufficient, then so be it.
As for the counter arguments:
> You are often asked stuff that took PhDs years to figure out: This usually shows up only in Hard questions, and badly designed ones at that. In my experience, Medium ones are usually solvable with solid algorithmic knowledge. It is also usually that maximum difficulty people encounter during their work.
Software engineer are not computer scientists. 95% of my time is normally gluing libraries together to build a product. Most of the time I am just implementing business processes in code and I don't really need to implement anything fancier than a for loop. What is normally more important is implementing the (correct) patterns, good practices and managing changing requirements, implementing a database schema that makes sense.
The sort of problems in leetcode won't help you do any of this. All it proves is that you can solve some arbitrary and unrealistic problem.
> It discriminates against poor people: You're a programmer, you are not poor. Even if you were, the few weeks of time investment it requires is usually offset by the higher salary you can ask for. Think of it as an investment in your future. Or if you are not a programmer, the amount of skills you need to learn to get your first programming job is usually far excess of just learning leetcode.
Many of the people grinding things like l33tcode are looking to get a web development job so they don't have to work frying chicken in the local KFC knockoff. Building most websites doesn't need to learn a bunch of algorithms. What you do need to have is a solid understand of HTML, CSS, JavaScript and how things likes HTTP work. The sort of problems in leetcode are absolutely irrelevant to this sort of work.
It ultimately depends on what sort of jobs you are applying for. A lot of positions won't require the skills that leetcode and similar try to test.
> It discriminates against women/minorities: I don't live in a very diverse country, so I don't know anything about the minorities part, but in my career, I've encountered plenty of women who were as good or better than men in solving algorithmic issues. It does filter people, because it's designed to filter people, but I've never found it discriminatory along gender lines.
No it discriminates against older developers and developers that are self taught. Typically when you are looking for the skills needed to work in a particular field you will look at job postings or talk to other engineers already in the field and they will typically say "You need to understand this language or something similar and how X and Y work" and typically people will buy a book, or do a course on those things.
With older developers a lot of these wanky problems we forgotten how to solve years ago after we left university because the majority of jobs outside of FAANG will rarely require anything more complicated that recursion or a for loop.
You are trying to assess whether people can do a job. Not solve arbitrary problems that don't present themselves in the vast majority of circumstances.