In a recent paper published in Nature researchers used an experiment to find evidence that language skills are a stronger predictor of new programmer learning outcomes than math skills.

Some people are suggesting that this means that learning a programming language actually has more in common with learning a natural language than traditionally believed. Traditionally the ability to learn a programming language was thought to be highly associated with math skills… often colleges will even have advanced math courses such as Calculus as a prerequisite. The results of this study are an excellent new challenge to this belief.

As a long-time computer science educator, my own belief is that students generally only need “enough” math skills to learn standard application programming. The basic mathematical operations and some algebra (use of symbols) seem to be what is important. But beyond this, stronger and stronger math skills have diminishing returns, as introductory-level programming simply does not require these skills.

The interesting part to me is the correlation with language learning. As part of my PhD I completed studies on the gamification of early computer science and adult literacy education, so this subject is near and dear to my heart.

My opinion is that language skills are not a predictor of success in learning introductory programming because learning a programming language is like learning a new natural language (e.g. French). In my opinion much of the “returns” in improved learning achieved due to language skills may be due to the ability to precisely understand instructions and educational material.

Learning to program involves consuming and interpreting written information, and precisely following instructions that are given (e.g. “write a program to print the prime numbers up to 50”). When the compiler presents the learner with an error, the learner needs to comprehend the error, and critically, understand what they might not understand. In other words, recognize what about the error message it is that they do not understand. These are hard, underappreciated skills, often involving metacognition (thinking about our own thinking).

That said, I strongly suspect there is more to it than this, underlying strong language skills are a host of abilities that transfer across subject areas, and it should not be surprising they transfer to learning programming as well.