You won't want to work with someone that does Leetcode (since you described the process as toxic), and I prefer to work with someone that knows their DS&A and space/time complexity.
I'd say it is working as intended.
You won't want to work with someone that does Leetcode (since you described the process as toxic), and I prefer to work with someone that knows their DS&A and space/time complexity.
I'd say it is working as intended.
But why care about this stuff for basic JSON shifting positions? Accenture asked me to solve a leetcode hard, I closed the web page.
On top of that, these interviews don't really represent what your actual problem solving skills are. I know plenty of smart people who chose not to interview for big n simply because of the interview process.
Even for basic JSON shifting, low effort high gain in performance matters. Do you want to work with someone that doesn't know to use a hashmap instead of nested for loop just for a simple memory vs space tradeoff?
Software engineering is complex enough, and code reviews aren't foolproof way of making sure you aren't screwing up, and nobody has time for detailed code review anyway. You end up have to trust the coder most of the time. You have to trust the coder is competent, smart, and responsible enough and not just "not my job" mentality.
Counter point: Performance is mostly irrelevant for like 90% of companies in this day and age. Even iterating through a million items is quite fast.
Just because someone doesn't want to waste their time studying up for irrelevant leetcode problems doesn't mean they don't know DS&A, either.
It more important to know when and why to use a certain DS to solve a real world problem (along w/ associated algos), since most people are doing application level development work, which means most people are using abstractions of DS&As, rather than implementing them from scratch.
If I needed to implement a DS&A from scratch, it wouldn't be from memory. I would consult the CLRS book and make customizations from there.
I believe the reason leetcode interviews have lasted so long is because FAANG engineers won't abandon them. By gatekeeping the interview process and making the barrier to entry so high, they can artificially inflate their salaries and bonuses by claiming scarcity of talent.
I think if a lot of these companies did a reassessment of their staffing, they would realize they've been overpaying many of these engineers for jobs that talented non-leetcoders could do for half the salary/bonus.
If you really want to know where a dev stands in terms of ability, assign them an open-ended project with a mostly open-ended timeline. Only consider candidates who complete the project and have a working solution, then consider things like
1. Did they unit test their code? 2. Did they use source control and share back a link to their repo? 3. Did they create a flexible, scalable solution?
etc.
And for a bonus: Schedule a pair-coding session with the strongest candidates. Throw out some requirement changes that will require changes to their code. How would you do X differently? Then code it with them.
That will give you an idea of how well they work with others.
I know the above sounds time consuming, but I am guessing that 70% of the candidates for a position will get washed out when they can't complete even a basic solution.
Many times interviewers dont have time to come up with new questions, and just end up asking a more obscure question.
so this selects for people who do more leetcode than people who write more practical code.
I dont know the solution to this either.
(Maybe where you live, the competition can be less and you can get away with good DSA fundamentals, here it's not like that.)
If you hire a leetcoder, you get a leetcoder.
Sometimes I wonder if you just end up hiring someone who will spend over half their time on the job grinding away at LC, rather than doing the boring, mundane day-to-day work. You would almost have to make LC a job in itself to make it through the next LC interview...
It does get the LC website and the CTCI people paid, though.
Consider a dull boring low paying cost center job at a non-tech company that leaves you a lot of free time. You can either use that free time to go above and beyond your call of duty and chase promotions and fancy titles, albeit with trivial pay raises. Or you can practice leetcode at work to move to a better company where the work is more interesting and the pay significantly better.
Most of my colleagues who entered my previous company around the same time as me chose the first path and got one or more promotions to Vice President or Director, etc. (this is a bank). They received trivial raises.
I chose to leetcode instead, got zero promotions (though still a lot of praise at doing my job). Then I used my leetcode skills - which were completely divorced from my day to day SWE work, to jump ship and nearly quadruple my TC. FWIW, my current work is also completely divorced from leetcode. I probably make significantly more than my former department head now, as a “mere” untitled senior SWE.
We don't do this to doctors and lawyers, or most other professions.
You could say homework is becoming an alternative, but that is egregious for its own reasons, and is more often in addition to leetcode, not instead of. Homework also does not scale - at least leetcode skills scale horizontally across many different companies’ interviews.
The irony is that solving leetcode is actually fun - if it wasn’t associated with the pressure and burden of deciding the fate of a potentially career and life changing interview.