I think there is a certain lack of imagination you show when you say that having a good, immediately reference able working knowledge of general data structures is a prerequisite of being a good programmer.
I'm not a particularly good programmer, but I think I would never be particularly good in your estimation, because I generally remember where I read something, rather than the matter in detail. This is obviously more efficient, as you always have books available when you're doing actual work, but isn't always that great for extremely broad quizzes over a broad range of subjects.
> This is obviously more efficient, as you always have books available when you're doing actual work
To be clear, I look stuff up all the time too. But the downside of the “I can look it up” approach is that if you don’t have an intuitive grasp on various algorithms, you can’t use those algorithms as building blocks to make something else. Recently I took a btree and instead of using it an associative array I used it as a list of spans. The result let me do arbitrary inserts and deletes at arbitrary locations without linear scanning (like in a linked list) or shuffling other elements around (like in an array).
Most people can’t do that. But that’s ok - you can be an excellent product engineer without this weird knack I have. It doesn’t help me write clean CSS.
In some ways it makes me actively worse at my job. I did some client work a few years ago. I helped write an indexing system for the search box on their website. I wrote a real-time indexer which streamed changes. After I left I got feedback that nobody at the company was able to maintain the code I wrote, because they couldn’t understand how it worked. I should have just written a simple bulk indexer for them in a cron job instead of getting clever with it. My “good programmer” instincts made me a worse contributor on their team.
I think your point is actually a good one. You do need deep proficiency to be able to use data structures creatively. I think your tone is just giving me an aneurysm.
My objection is that somebody who had been working with a narrow intensity in a specific field could be a very capable programmer without having the sort of general proficiency to do well in this kind of interview. That doesn't mean they are a 'product engineer'. It just means they are somewhat specialized.
I'm not a particularly good programmer, but I think I would never be particularly good in your estimation, because I generally remember where I read something, rather than the matter in detail. This is obviously more efficient, as you always have books available when you're doing actual work, but isn't always that great for extremely broad quizzes over a broad range of subjects.