Thank you for this great article. I appreciate the efforts made by people to look past themselves and the "obvious" reasons for things. Isn't that what makes good engineers good?
I appreciated how easy it was to read, at least until it got to the formal proof. This might be a good interview question to pose - to ask the interviewee to come up with the trivial lower and upper bounds of "pancake flips".
Google still seems to love their whiteboard interviews, to the point where you have to write syntactically correct Java, under pressure, for a rather difficult problem in only 45 minutes. It's stressful as hell, and has almost certainly driven off lots of good programmers. My company does sit-down interviews with a computer (usually a Mac) and the interviewer's choice of IDE. We get much better results that way - coding under pressure is still hard, but at least the IDE can save you from making easy mistakes under pressure, and you get immediate feedback about how you're doing, rather than just going on the ambivalent nodding of an interviewer.
Also, one of the issues of providing an interview candidate with a computer is that some people are very particular with their environment.
For example, even if you let them use an IDE they are familiar with, maybe they really don't like using Macs. Or worse, they don't even use a qwerty keyboard.
In my company nobody uses an IDE, I use vim and the other developers use emacs or sublime. I think we all have our own little plugins/settings that we use as well.
Of course you could solve all of this by letting employees bring their own computer, although not everyone has a laptop either. To be completely honest, I really like the whiteboard but I definitely can see why others don't like it and get the impression I'm in the minority.
I spent a day interviewing last week one of those companies. 3 whiteboard interviews during the process. I'd say it's far from dead.
I was asked to write syntactically correct code in a specific language on a whiteboard with a time limit. That's very far from how I work on a daily basis. I could understand writing pseudo-code or explaining architecture but what possible data can you gather from how well I draw curly braces on a dry erase board?
Does Google really expect people to write syntactically correct Java? I've assumed Google is fairly similar to other tech companies I've interviewed at, where the primary thing is describing a correct algorithm and language is secondary.
Having gone to a Lutheran school (St. Olaf - Um Ya Ya!), I can tell you Lutheran theology nerds can hold their nerdy own against any programmer for sheer monomania. As you might guess, I'm a little bit of one myself. :)