I often see people say things such as, "I have tons of experience with language Y and framework Z and that's all that matters, who cares about trees, graphs and all that ridiculous interview questions..." The big tech companies are looking to innovate and lead, and that's why they ask these questions.
If someone is new to programming and begins by telling me what framework they are considering learning, I often tell them to forget about the framework and learn the language. The language is the foundation that frameworks are built on. Algorithms & Data structures are the framework on which software is built on.
The only time I frown upon such questions is if someone is testing you for exact syntax of the language instead of making sure you understand the nature and solution of the problem.
Asking algo and whiteboard questions completely ignores the "extensive experience across many years". I can spend years gaining deep expertise in an area, and that means absolutely nothing. All that matters is I practiced for 2 months white boarding algo questions under time pressure.
Or to put it another way. Spent 5 years getting a PhD? Who gives a f*ck. Can you code a DP problem in 20 minutes? You're hired!
Architecture is also another part that most programmers fail to grasp.
I think of algorithms as good to know but rarely used. It’s has an answer to every question. So what you get is a bunch of people cramming questions and answers until they memorise it; defeating the entire point.
Not because he was actually smart (ok, perhaps a good memory). Not because he was able to do math really fast, or really accurate, or in his head. None of that. NOT EVEN because he figured out this problem on the spot. That was quite simply not it.
But because he had solved a metric fuckton of problems before, and then got lucky.
I agree with your statement (just got one patent to my name though), but a very important caveat is that you have to learn something (and preferably more than 1 thing) thoroughly before unlearning it. And learning first and then unlearning is vastly different from not learning it at all.