I have written here on computer languages before, and today via ars technica I found this interesting paper [PDF] from 2006 (more here) which suggests [I simplify] that some people cannot learn to program, in spite of teaching efforts and teaching methodologies. Further, the authors describe a simple test (example on page 4) to triage students at the beginning: the test results follow a bimodal distribution, and stay largely constant before programming teaching and after weeks of teaching.
Interestingly, my limited experience fits. The authors also present interesting explanations, to whit: programming formalisms are meaningless – meaning that the rules themselves are devoid of meaning, we only attribute meaning when we apply algorithms to the real world. And the ones who “cannot learn to program” are the ones who attribute meaning to formal relations between variables; this lack of abstraction leads to inconsistency.
I find that even more interesting, and I wonder whether the two humps relate to Pirsig’s (Zen and the Art of Motorcycle Maintenance) “romantic” vs. “classical” attitude towards motorcycle repair and all other problems in life (if you don’t know the book, “classical” refers to a rational analysis type of approach). This divide I encounter frequently, and it’s sad – and I must admit I’m not helping, sitting firmly on the sceptical side. What’s more, I would assume that most people reading this also lean towards the “classical” stance… a medium bias.
Addition 2021-03: As I mentioned this on cvnet, Caspar made me aware that this paper has been retracted: The camel doesn’t have two humps: Programming “aptitude test” canned for overzealous conclusion. Wow! Most interesting read. Still, the original does match informal experiences from some of us.