Exactly this. I've always said the Google and Microsoft "riddle" interview questions were IQ tests using CS concepts as their medium. And this is precisely why so many people dislike them. In many cases its not about what you know or how many years experience, but how much raw brainpower you have.
I agree 100%. There seems to be 2 camps when it comes to what makes a programmer great: aptitude versus domain knowledge. I think both are important but aptitude is harder to train someone on.
I'm a big proponent of tough, small problems in an interview, that the candidate has never seen before. Much like the author is against. This is because it has been the best indicator of performance in my experience.
The author is not against small, tough problems, by all means a well designed generic programming question that doesn't tie in to any specific domain knowledge can be a great test.
What the author was against are the riddles, which are proven to be ineffective in determining the general aptitude of the engineers, and that's why the companies that used to use them (MS and Google, for example) have mostly banned those.
From reading the blog post the author does in-fact seem to be against challenging coding problems. Note that the examples given as good questions where all general that didn't require one to demonstrate any actual ability to solve problems by applying algorithms and logic. This is exactly what programming and logic "riddles" are designed to test.
You can still do it, it doesn't have to involve a complicated CS topics such as self-balancing trees or graph theories or anything, but I've seen plenty of good algorithm questions that the solution involve nothing more than understanding of Strings and for-loops.
You can also test the interviewee's knowledge of Big-O, time efficiency vs space efficiency, etc without going into obscure data structures.
Big O would be something I was much more familiar with out of university, although I could probably muddle through some basic questions around it.
For loops that manipulate strings in various ways however is probably something that most programmers will have wrestled with reasonably regularly I imagine.
No way. In most cases, the company would much prefer to have the candidate work on technical problems that the company actually has, but that almost always requires significant background context and disclosure of not-so-public info.
The riddle should be a stand-in for a collaborative, thought-provoking problem, not a general intelligence test.
To the original author: if the hiring manager or interviewer doesn't see it that way, then fine, write off that company, but don't write off riddles!
How so? You can certainly unintentionally filter out smart people who didn't go to college (or went to a less prestigious college) by this method.
However I imagine people who fit the description of "dumb guy who fluked his way through MIT math programme with a high GPA" are a pretty endangered species.
I imagine people who fit the description of "dumb guy who fluked his way through MIT math programme with a high GPA" are a pretty endangered species.
Maybe.
But people who fit the description of "smart guy who got through MIT math programme with a high GPA but is clueless about the fundamentals of software engineering and aggressively unwilling to learn"? Probably not so endangered.
Besides remember you're competing with other employers, and on average employers currently overvalue paper qualifications. Once you take that into account it's probably rational to place negative weight on them: other things equal, the guy who didn't go to college has a better chance of being good than the MIT graduate, because MIT graduates who were good, have probably already been snapped up.
For the purposes of a given job, let alone the types of jobs discussed in these threads, it's going to dump a bunch of false negatives. Since software is an industry that thrives on overqualified employees, this may not seem like a big deal, but having people who can interview a Big Degree person such that they'll accept these jobs has its own cost and management overhead.
You might certainly have to scale back demands/expectations depending on the job market and how desirable your company is to work for.
I think it goes back to the classic "smart and gets things done". There will often be instances where you will have more evidence for one than the other.
So for example, someone with a good degree probably doesn't need to be asked riddle questions because they have already proved their raw mental aptitude so you're probably more interested in their understand of good programming practises etc.
OTOH, the guy without a degree who has a solid string of practical experience behind him as well as glowing references has proven he can "get things done". However perhaps his past jobs were mainly building CRUD php applications and this position requires some more complex theoretical knowledge that he does not posses.
How can you best test his aptitude for picking up that knowledge quickly if not with something that approximates an IQ test?
You could see these riddles as a stand in for just giving the candidate a full blown IQ test.