Having inflicted even easier versions of FizzBuzz on interviewees, I think you'd be highly surprised at the results. About ~30% of developers could not write any form of a loop, in any language, pseudocode or otherwise. This involved a sample size of about 100.
My personal theory is that many of these people constantly fail interviews and therefore skew statistics by reapplying, i.e. at any point the active market is filled with them. Nevertheless, I was shocked.
If you have 100 people, 95 of them are competent and put out 6 resumes every 3 years (on average 2/year), and 5 of them are incompetent and put out 100 resumes every year, then in a typical year the average hiring manager will see 95x2 = 190 resumes from competent applicants and 5x100 = 500 resumes from incompetent applicants. Over 70% of your pile of resumes consists of incompetents even though they're only 5% of the population you're sampling from. (Numbers are all made-up.)
Coincidentally, I also experienced a similar effect to the somewhat famous "two humped camel" programming aptitude test [1]. This paper argued that you can split candidates into two normal distributions based on aptitude. In my own tests, what I experienced was more of an extremely long tail on the right side, which is actually somewhat similar to the linked paper.
In our own tests, had a bunch of people fall into the 40-60% range, but there was a small bunch of people clustered around 100%, which are just people who could have scored 100%+ being binned down to the max score, and not a second normal distribution.
My personal theory is that many of these people constantly fail interviews and therefore skew statistics by reapplying, i.e. at any point the active market is filled with them. Nevertheless, I was shocked.