I started the day off reading a rather interesting piece by my friend Moyin, basically saying that she didn’t have some unique Android development genes running through her blood. I chuckled at her medium post because it reminded me of the pernicious myth of innate ability. I was going to write a quick response but decided against it, and instead reappropriated a section of my dissertation which addressed this preconception about technical ability.
So let’s get into it. Why did we even invent this myth? We developed it to make ourselves feel better. To assuage our conscience. Yes, us, we the techies, the researchers, the apathetic teachers, the frustrated professors, the administrators and others to justify the lack of representation of particular groups in the field.
On tech, this particular myth is one side of a coin. The other side of which is the “hacker icon,” often male, the so-called bros that were born programming. This one can be reduced down to, “Yeah, some expertise may come from practice, but at the end of the day, there is a sort of inherent ability that enables certain people to become better experts than others.”
On the surface, it kinda makes sense, especially if you have ever found yourself marveling at the dexterity with which it seems some folks can handle technology. As reasonable as it might seem, evidence points to the contrary. Research findings contend that deliberate practice is the primary determinant between expert and accomplished amateur. Unfortunately, many folks still believe that a pre-requisite for tech success is previous forays into hacking.
Even when one moves away from folk psychology to academic research, the problem of innate ability still seems to rear its head. For example, Bornat and his student, Dehnadi, initially claimed to have conceived of a test that can tell students apart based on their aptitude to succeed in CS, even before the student ever learned to code! They claim:
“We have found a test for programming aptitude, of which we give details. We can predict success or failure even before students have had any contact with any programming language with very high accuracy, and by testing with the same instrument after a few weeks of exposure, with extreme accuracy.”
The Bornat paper was greeted with much fanfare. It was sliced, diced, and parsed by a lot of distinguished software engineers and highly respected computer scientists. Jeff Atwood wrote about it, Alan Kay was asked about it; he thankfully discredited the theory. On and on the talk of innate programming aptitude went, until the initial research team had to retract their findings when their “so-called programming aptitude test” failed when held up to the rigor of peer-reviewed science. It turned out that Bornat had a psychotic episode which ended up hurting computer science education. Here is Borat’s retraction of his initial claim in his own words:
“Though it’s embarrassing, I feel it’s necessary to explain how and why I came to write ‘The camel has two humps’ and its part-retraction in (Bornat et al., 2008). It’s in part a mental health story. In autumn 2005 I became clinically depressed. My physician put me on the then-standard treatment for depression, an SSRI … I did a number of very silly things whilst on the SSRI and some more in the immediate aftermath, amongst them writing ‘The camel has two humps.’ I’m fairly sure that I believed, at the time, that there were people who couldn’t learn to program and that Dehnadi had proved it. Perhaps I wanted to believe it because it would explain why I’d so often failed to teach them.”
What exactly do we know about how students’ learn to code? What are the predictors of success in tech? Researchers in computer science education have historically aligned the challenges that newbie programmers go through in their learning journey toward expertise as similar to the developmental challenges children go through, as outlined by Jean Piaget’s cognitive stages of development theory. Linking Piaget’s developmental levels to the ability of programmers, has been one of the major ways scholars have tried to discover the elusive predictor of programming ability.
Recently, folks are beginning to use a something called neo-Piagetian theory to understand new learners. The main difference between classical and neo-Piagetian theory “is that people, regardless of their age, are thought to progress through increasingly abstract forms of reasoning as they gain expertise in a specific problem domain.” We see something similar in the way deep learning algorithms work as well. This approach provides a means of getting beyond the innate ability argument as a reason for the high failure rates we see when folks start learning to code. Instead, it provides us with a new theory of learning that might provide insights into effectively moving newbies along the learning path towards ninja level.
From everything we know, we have discovered that learning is a progression through legitimate developmental phases that start with preoperational reasoning, through to concrete reasoning, and finally arriving at the formal reasoning we have come to associate with expert programmers. Even though we cannot prove it absolutely, from research, we have seen that there isn’t some special innate pre-determiner for technical aptitude. All those that have tried to make such a claim have woefully failed at this task.
One of the best aspects of solving problems using computation is wrestling with failure. I believe it this aspect of computer science that makes people look to experts in the field with awe. Tech is an area that always challenges what is possible. Often that challenge is done by pushing the boundaries of what we know, specifically by investigating why what we are aware off fails at the boundaries. To the uninformed, this can make us look like superheroes, and as such lead us to falsely believe you must be “born” with some super powers. As my friend Moyin as said, “No, I don’t have it in my blood. I worked hard for it.”
K. Anders Ericsson, Roy W. Roring, and Kiruthiga Nandagopal. Giftedness and evidence for reproducibly superior performance: an account based on the expert performance framework. High Ability Studies, 18(1):3–56, June 2007.
Richard Bornat and Saeed Dehnadi. The Camel has Two Humps. Working paper, Middlesex University, 2006.
Jeff Atwood. Separating Programming Sheep from Non- Programming Goats, 2006.
Secret Geek. ‘Alan Kay on the Camel has Two Humps’, 2008.
Richard Bornat, Saeed Dehnadi, and Simon. Mental models, consistency and programming aptitude. In Proceedings of the Tenth Conference on Australasian Computing Education - Volume 78, ACE ’08, pages 53–61, Darlinghurst, Australia, Australia, 2008. Australian Computer Society, Inc.
Retraction Watch. The camel doesn’t have two humps: Programming “aptitude test” canned for overzealous conclusion, 2014.
Raymond Lister. Concrete and other Neo-Piagetian Forms of Reasoning in the Novice Programmer. In Proceedings of the Thirteenth Australasian Computing Education Conference - Volume 114, ACE ’11, pages 9–18, Darlinghurst, Australia, Australia, 2011. Australian Computer Society, Inc.