According to William Shakespeare, “Some people are born great, some achieve greatness, and some have greatness thrust upon them.” This sentiment cannot be easily be translated into the programming paradigm: Unfortunately, it appears that some people just “get it”; in other words, they are just born to program.
Jeff Atwood, in his blog, Separating Programming Sheep from Non-programming Goats, says that teachers of programming notice that “their results display a double hump. It is as if there are two populations: those who can [program], and those who cannot [program], each with its own independent bell curve.”
Various methods have been proposed to get rid of this: change the programming language, change the application, work on motivation, use an IDE etc.
However, none of these methods seem to work, and the double hump phenomenon persists. This begs the interesting question, “What causes that?”
The politically incorrect, and the easiest answer is that some “just can program.”
Saeed Dehnadi and Richard Bornat have devised a test that purports to separate people who would succeed at programming from those that didn’t. They concluded that nature does triumph over nurture. The article was never formally published but it quickly became viral among CS educators with polarizing effects. Richard Bornat has since issued a retraction saying, “It’s not enough to summarize the scientiﬁc result because I wrote and web-circulated “The camel has two humps” in 2006. That document was very misleading and, in the way of web documents, it continues to mislead to this day. I need to make an explicit retraction of what it claimed. Dehnadi didn’t discover a programming aptitude test. He didn’t ﬁnd a way of dividing programming sheep from non-programming goats. We hadn’t shown that nature trumps nurture. Just a phenomenon and a prediction.”
This does not deter the diehards who quote this article extensively to push their agenda.
However, regardless of where you stand in regards to the explanation, the phenomenon persists and cannot be easily explained away.
While I think that some are just innate programmers, this does not explain the fact that there is a “double hump”, and so I propose a different explanation: the two humps are caused by a priori knowledge rather than a reflection of true programming expertise.
It would be interesting to see if the double hump phenomena are present in other disciplines and compare the nature of the material within them. Until such an extensive study is done, the jury is still out: “Can Johnny program or not?”