I think the core issue here is whether the prospective employee should have to show some initiative. My initial reaction is that of course they should, but when you're fielding job offers from numerous companies, some of which don't require you to go out of your way to pick up new knowledge specifically and only so that you can pass an interview, why not just dump Google and go somewhere else? A few years ago Google was probably the most desirable place anyone could work, I really don't think that's true any more.
Overall, it sounds like the system is working. Developers that don't much care for Google's methods won't go and work at Google. Those that are very passionate about working at Google for the sake of working at Google will jump through those hoops.
I think the process selects well for new grads who have recently completed algorithm courses.
I think the process selects well for people who are comfortable with doing work on a whiteboard.
I think the process selects well for people who are motivated enough to work at Google that they read and study books like you mentioned for weeks, and do a bunch of practice self-study interviews before coming.
Whether that set of people overlaps significantly with what makes a company do well -- I don't know. I'm not sure.
But I am pretty sure that the reverse assumption, that people who don't pass those bars are not good canddates, is an arrogant position that only a company of Google's standing and size can/should get away with.
What I don't get is the trend of small companies, startups, and the like, copying this interview process. It is entirely not a match nor a way to find the kind of motivated, culture-fitting, creative people you need in a smaller company.
If I am not mistaken, you can choose to do the exercises on a Chromebook in an IDE instead of the whiteboard, so there's that.
I'm with him up until "never be interested...", thats a piss poor attitude. I've never needed to know big-o complexities for work, and I've only scraped the surface of needing/using various data structures, so I get annoyed at some of the heap/tree trivia questions as well. But if I were in a situation at work where I needed a tree, of course I'd stop coding and read up on how binary trees work and use them for my benefit.
But maybe I'm just not very smart?
First, I know this isn't a black or white issue but the problem I have with this is that I'm wondering if they are hiring people with the skills they want or are they hiring people with the skill to succeed in their test.
In theory, they should be the same. In practice... I don't know.
I'm not really selecting for people who are really, really good with binary tries -- I'm selecting for people who display those qualities, the question is pretty much incidental.
> There is no point in giving me binary-tree-traversing questions; I don't know those answers and will never be interested in learning them.
Take an afternoon and skim Cracking the Coding Interview before applying. There's no reason a competent engineer shouldn't be able to solve questions like that. You know exactly what's expected of you, show some initiative.