Language Learning: from Comprehension to Speech
When you begin the long and seemingly uphill journey of learning to code, you must remember that at the end of the day you are learning new languages. And as it goes with any new language, you must learn to both listen and understand, before intuitively forming a response.
While this may seem intimidating, the analogy should bring you relief. Because there are many learning conventions we can follow to aid in our endeavor. Let’s look at a few key factors responsible for your success.
Conversation Context: Know your audience
If English is not your first language or if you picked up another over the years, you have definitely noticed things don’t always translate verbatim. Occasionally we need to reform or even reword our sentences in order for it to translate the same meaning between the two languages.
For example in English we say “I took a shower today” while in italian the same is said “I make a shower today” ho fatto una docia oggi. What’s more, in order to say “I like candy” in Italian, one would actually have to say “to me pleases candy”. These translation discrepancies become even greater when translating symbol based languages to western tongues. If we had translated word-for-word the message we were trying to convey, it won’t make any sense to the listener. So, what’s happening here? Languages have developed to serve the context of their users. In other words based on location and behaviors languages have formed specifically for the society using them.
A clear example of this can be seen in the Guugu Ymithirr tribe of Queensland, Australia. Linguist Guy Deustcher says that the Guugu Ymithirr have a kind of “internal compass” that is imprinted from an extremely young age. Guugu Ymithirr children learn to orient themselves along compass lines, not relative to themselves but relative to cardinal directions. So rather than “Can you move to my left?” they would say “Can you move to the west?”
English speakers have an egocentric language model, and the Guugu Ymithirr a more collective one. With that in mind, when composing the information we’d like to convey in another language, we set it up in a structure that is clear to someone computing information based on a compass.
This is no different than a parent telling their child that the sandman comes and puts them to sleep, we need to convey information in a way that makes sense to the receiving end.
for more on language shaping: https://www.nytimes.com/2010/08/29/magazine/29language-t.html
Walk Before You Run: Practice, practice, practice…
Anyone who’s ever tried to learn a new language knows that once you have the basics down, and you’ve developed a nice little word bank, you start to pick up confidence. Having reached a point where the language you see and hear becomes clear, you now think you are capable of reciprocating a conversation. At this point we confidently start forming our thoughts to start our narrative. Only we can’t seem to remember just how we need to word this response. What happened?! Everything was clear a minute ago! Well, we seemingly have an effortless awareness of the information trying to be conveyed to us. However we still need reinforcement to really commit the new information to memory. In this way we can easily reference the data to reuse and give us the feeling of “second nature”.
Commit to Memory
So what can we actually do to “commit to memory”. First- we must make peace with the fact that language learning is no cake walk. It will be demanding, time consuming and often times frustrating. But the sooner you accept this as a prerequisite, you will move past it and on to the learning.
Second - while at first explaining your code to someone else, may seem scary, it is essential. Not only are you learning to discuss the code naturally and in a way that properly describes it’s contents, but you are also getting a fresh pair of eyes that may find bugs where you have’t thought of yet.
Another important tool for mastering a new language is building your own projects -as many as possible. This can combine many of the above tools. Debugging with a colleague or friend, understanding the gems and files you are utilizing, and method structures you have defaulted to.
Another critical facet of learning code is take it in stride. Climbing a mountain looks very intimidating at the base. However if you scale it check point by checkpoint, and look at it as a collection of small hurtles, It’s manageable. You’ll be at the peak looking back in no time.
While there are countless languages to be explored for the modern day programmer, the above tools can be easily applied across the board. As long as you remember to know your audience, and develop fluency, you’re golden.