Some years ago I was teaching in IT companies and I noticed that programmers were quite good at learning English. They were able to identify language patterns pretty quickly and put them to use straight away. On average, at least in my experience, English learners focus more on separate words or rules and need to be taught to notice wider structures explicitly. So I wondered, was there any connection between learning programming languages and natural ones? Are there any transferable skills? And if I’m good at learning languages, can it help me to learn to code more quickly?
Well, it didn’t. I was very surprised and disappointed when I did start learning Python and it wasn’t just difficult, it was so hard that after half an hour I would simply start falling asleep. I simply couldn’t wrap my head around all these technical concepts. That obviously showed that my expectations and conclusions were wrong. But why? A while ago I read an article that shed light on this. MIT scientists set out to answer the question: is learning to code more like learning maths and logic or more like learning languages? So which of the approaches should be taken in teaching coding? Here are the findings:
“…reading computer code does not activate the regions of the brain that are involved in language processing. Instead, it activates a distributed network called the multiple demand network, which is also recruited for complex cognitive tasks such as solving math problems or crossword puzzles.
However, although reading computer code activates the multiple demand network, it appears to rely more on different parts of the network than math or logic problems do, suggesting that coding does not precisely replicate the cognitive demands of mathematics either.”
So, if different brain regions are involved in processing language and code, why did the programmers I taught learnt English more easily? I still don’t have a definitive answer, but I’ve got two ideas.
The first is about study skills in general. Programmers often have to learn new stuff on a regular basis, so they don’t forget how to do it. This may include setting study goals, taking notes, organising one’s practice and revision, tracking progress and evaluating the results. On average (again, in my experience), however, adults do forget how to learn, they are just more focused on other skills and performing their job duties. And study skills matter in language learning. The more developed they are, the easier it’s to become an autonomous learner and have steady progress.
My second idea is about learning styles. There are many typologies of them, but one seems particularly fitting here. It says that there may be two approaches to learning: sequential, or step-by-step/ bottom up, and holistic, or top-down – getting the bigger picture first. With the sequential approach, you want to go over the topics slowly, in a particular order and move to the next one only when the first one’s learnt well. With the holistic approach, you may look at different topics in no particular order and learn a bit here, and a bit there till you have enough information to understand the main idea.
Now, it’s interesting that in language learning you can actually apply both. I would say that the sequential one may slow down the process because it impedes the development of guessing skills. (It’s when learners want to translate all the words in a sentence before trying to understand it, very typical of those with a background in finance and engineering). On the other hand, there may be more accuracy in speech (i.e. very few mistakes), because for such learners it’s important to get all things right. With those inclined to learn things holistically, there may be faster progress, especially in terms of acquiring passive knowledge of the language, but there may be fluency at the expense of accuracy, because those little details, well they don’t always matter.
However, when learning a programming language the holistic approach doesn’t work well. And now I think that was the reason for my suffering at the very beginning. I used to jump from one concept to another, trying to avoid the sheer boredom of studying everything step by step and to get the idea of how it works in general. It took me a very long time to get to this bigger picture and have my ‘aha’ moment. Now I can finally go to the basics and fill in the gaps of knowledge I have (like, how to start Python on one’s computer and experiment with it from the shell).
Well, the moral? Know your learning style and take advantage of it. If I had known this 5 years ago when I started studying data analytics and Python, it would’ve saved me a lot of time. I should’ve studied with books to allow more room for theory first. But I didn’t and I kept learning with courses that implemented the approach that didn’t match my thinking (the majority of courses take the sequential way).
In language learning the inclination to holistic thinking shows itself when it quickly gets boring to follow the book and have practice of what you don’t see as necessary (for example, some grammar or basic conversational exchanges, like buying coffee or clothes). In this case it may be better to just read the book to get an idea of what it teaches at a certain level and then get back to exercises, maybe starting with the ones you see and more practical ones (for example, something about verbs and not nouns/ adjectives, because it’s verbs that help us to make sentences).
Moral number 2? It’s good to develop both approaches because they are complementary and their combination brings better results. If you’re a sequential thinker, try more extensive reading and listening, to the point when you can relax and start guessing new words by the context. If you’re the holistic one, have a look at grammar exercises and exam-like tasks (gap fills, sentence transformations and so on) because they focus on accuracy and help to make one’s speech more exact and concise.
And have you ever felt that a certain type of activity impedes your language skills? Do you have any explanation for this?