This article, nearly singlehandedly, demoralized me enough to keep me out of the field for 10 years. It should not have been written, and it should not be endorsed.
First, there is the same problem every such article has: The hypothetical incompetent people you are imagining are also the people who will not read or pay attention to this or anything like it. The people who do care and want to improve are likely to read this and be discouraged, if only by the contempt radiating their way.
For example: Can you list the entire taxonomy of the animal kingdom, from species on up, solely from memory? If you can, was it because you Googled it after seeing it mentioned “just to double-check” that you had it right? Be honest.
The answer was most likely no, because you’re not a zoologist or middle school student. (If you are a middle school student, I’m sorry you had to read this.) However, this is what he considers “common sense.” I defy anyone to tell me how remembering this specific thing from middle school life science is a reflection of one’s programming skill or a predictor of performance at any job not involving biology.
These examples abound. Many of the OOP terms in his list of things one should know cold OR ELSE are either not used or not prominent in many popular languages (method overloading, for instance). I understand that the interviews he is doing are specifically for Java and/or C++ coders, but that’s not how the list is presented. It is presented as “the bare basics of OO,” which it is not. The same applies to data structures. In many common languages, the objects they call arrays are assumed to be dynamic size by default. Is it “inexcusable” for someone to call such a thing an array? According to this post, it is. And so on.
A lot of things seem to be inexcusable to him. The author mentions that he is rusty in math and berates himself for this inexcusable thing (at least he’s consistent in that). As it happens, I’m less rusty in math. I hereby excuse him, and everyone else, for not knowing offhand how to prove the completeness of real numbers or what the Peano axioms are (similar to the big O examples, in that they underpin things you use every day and you learn them sophomore or junior year of undergrad). It doesn’t make you a failure to not know these things, and it doesn’t mean you can’t handle the everyday math you’ll be doing at your job.
On top of all this, the article is self-contradicting. Toward the end he mentions that most programmers will “fail utterly” at one or more of these things. And yet they manage to be programmers. How things get successfully coded despite most of the field supposedly being utter failures is an exercise left to the reader.