I am a software engineer with 2 years of experience, and I grew up only speaking and understanding English. When I started my career, I moved from Georgia to California as many in the tech industry do. This was my first time living in a place where I could regularly hear people in public speaking languages I did not understand. Not only did I meet many polyglots, I met many monolinguals who spoke languages other than English. I heard everything from Spanish to Hindi to Chinese[1]. Imagine that, living in a place where you don't understand the vast majority of people or signage, having to get by via Google translate, pidginized English, and gestures! This was so intriguing to me, it was a totally foreign(pun intended) way of interacting with the world. As such, I decided I wanted to learn Spanish to engage with this sizable portion of the population living in such radically different circumstances than myself. Coincidentally, my best friend who also moved far away from home after college decided he also wanted to start learning French(this is important later).
My whole life has been a series of FAFOs (F*** around and find out). Which means with most decisions in life, I follow this algorithm:
I like to think this is a very Engineer-minded approach to going about life. Most mistakes are not permanent, but are simply useful data to be used towards improving the process. It doesn't matter "what" you do or "how" you do it as long as you can justify the "why"; the results speak for themselves. I think this approach is quite useful for language learning, and I'll speak more on that later.
What follows is my story of how I found a language learning method that worked for me. I made a lot of mistakes along the way, but I hope by showing my journey you can glean some useful information. At the end I outline my current approach and the likely reason you started reading this blog post: How To Learn a Foreign Language Like an Engineer.
In the language learning space, you hear a lot about "immersion". How people who move to other countries pick up languages seemingly effortlessly, and how babies just seem to automatically pick up languages. As such, my first foray into hacking my way into language learning was based on this philosophy. My plan was as follows:
That's it. I did this for a few weeks. At first, it felt satisfying. I could feel my brain straining to comprehend the unintelligible inputs I gave it. I picked up a few phrases here and there. And it was fun making my clumsy American mouth make funny Spanish sounds. This didn't last long. The satisfaction and novelty soon wore off, and my motivation quickly waned. It no longer felt like a fun adventure exploring a parallel universe and soon became a chore. This brings us to approach #2.
While I was vigorously failing at approach#1, I had a conversation with a friend who has family in Spain. I told him about my "novel" approach to language learning. He likely thought I was insane(I was), but he was nice enough to entertain the idea. He expressed skepticism at my approach and recommended I try out Duolingo. He said that he used Duolingo to help him in addition to his experience immersing himself in Spain. After a cursory research into this cool new product of the internet age, I concluded that Duolingo was the greatest invention of the 21st century. It had everything! Game-ification! Vocabulary! Grammar! Reading! Speaking! Listening! All in one fremium app package!
So I spent months exclusively learning Spanish via Duolingo. I actually really enjoyed it. The streaks and the scoreboard incentivized me to keep coming back. I could learn from anywhere! And everything I needed was in one place. Eventually though, I became tolerant to the Duolingo dopamine drip. It no longer engaged me like it used to. I was no longer motivated to learn Spanish, I just wanted to keep my streak and stay high on the leaderboard. Little by little, I fell away. I kept spending my streak freezes until eventually I lost my impressive streak. At that point, I didn't care anymore. Whatever, my streak is gone. And here was the kicker: after months of "learning" Spanish on Duolingo, I felt no more like a Spanish speaker than when I started. If you asked me to introduce myself in Spanish IRL, I would have looked at you like a deer in the headlights. There's no multiple choice or fill in the blanks in real life conversation. My knowledge was entirely context dependent; my in game knowledge disappeared outside of the game.
I lost hope. I said:
During this Spanish-Dark-Age, my biggest hobby was long distance running. I was training for marathons, and if you didn't already know, marathon training is an incredibly time intensive activity. It's not something a person can do unless they truly love the process. The marathon is simply an exhibition of the labor it took to achieve it, it is not the goal in and of itself. I loved to run. I loved short runs and I loved long runs. I loved fast runs and I loved slow runs. I loved runs on hot days and I loved running on cold days. The act of running was always the reward.
I saw the parallels between my running and my Spanish learning. The "goal", whether that's a marathon or knowing how to speak Spanish, was simply a culmination of many hours of practice. The result is achievable by almost anyone, but if and only if they enjoy the practice[2]. This only served to confirm my belief that language learning WAS NOT for me. How could I motivate myself to do hundreds of hours of something I fundamentally did not enjoy? I gave up.
Remember my friend I mentioned that started learning French around the same time I started learning Spanish? Well, he's back.
I went out to visit him. He had stuck with his French learning while I had fallen away. I got to see him have rudimentary conversations with other French speakers and his tutor. I was blown away! How had he done this?! While I was hopelessly trying to find an approach to language learning, he found a way that worked for him. With most things I had always seen this friend as equally competent as myself; if he could do it, I could do it. So I asked him, what is your secret?
He attributed his success due to the fact that he started with a tutor early on. He said that his first lesson, he was completely embarrassed. He had no idea what he was doing. This motivated him to study hard so that never happened again. At the points where he might have given up, he forced himself to continue because he didn't want to embarrass himself again. It was expensive, but it was worth it. Fast forward a year and a half later, and he's able to have rudimentary conversations with people.
I was back, baby. This was gonna happen. I was gonna pay my way to learning Spanish, just like my friend did[3].
High on the excitement of my new plan, I brought it home to my wife. I told her about how I was gonna shell out some serious money to get a Spanish tutor and take Spanish classes and how I was going to magically learn Spanish in a year or two. I love my wife more than anything in the world, and she is the perfect fit for me. I am an optimist to the utmost degree(if you couldn't already tell from my first two Spanish learning attempts), while she is the eternal skeptic. I see her as my trusted advisor, and I need her skepticism in order to better hone my pie-in-the-sky ideas. She asked me two questions:
Ugh. Back down to reality. But all is not lost! I took this opportunity to prove her wrong. There is a way to make this work! And at this point, I decided to do some actual research of my own. A year and a half into on-and-off language learning, I decided to actually Google "How to learn a foreign language reddit"[4].
I found this article about building your own language learning curriculum. I would highly recommend it if you are at all language-curious. The TL;DR of it is as follows:
I went back and tried to recall why I even wanted to learn Spanish in the first place, I wanted to be able to speak to people I met around town. This meant that I could forget about reading and writing Spanish (boring, ew), and focus on what I really wanted. And I didn't need to be a native speaker, I could learn just enough to do what I wanted to do.
I took this article and I followed its guidance. I built my own curriculum. Except this time, instead of thinking of things in terms of following a set curriculum, I decided to build a framework of learning upon which I could iterate. There are set principals upon which the curriculum can morph depending on the situation at hand.
Always make it fun. If the process isn't fun, I'm not going to do it. If it's not fun, I'm doing the wrong thing and I need to find a different thing to do.
The curriculum is the function that translates motivation and effort into useful knowledge and skills. Motivation and effort are relatively non-elastic, I can't directly manipulate those inputs. Therefore the results are determined primarily by the function. If the results are poor, it's because the implementation is poor.
func learn_spanish(int motivation, int effort):
// TODO: implementation
return knowledge
As a software engineer, my favorite thing to do is solve problems. Memorizing things is not fun to me. How can I make language learning into a problem? Well it turns out that attempting to form sentences feels like a problem solving exercise to my brain. Forming a sentence in a foreign language is not unlike writing a function in a programming language you haven't used before. I don't need to sit down and take a LinkedIn learning course in order to learn Golang, I can just start writing it. When I write a function in a programming language I haven't used before, I follow this algorithm:
'
instead of "
"Turns out this workflow maps almost perfectly onto speaking a new language. And now, I have made language learning fun. I don't need to know how to speak Spanish in order to speak Spanish, I just need to do it. And then one day I'll look up and say "huh, you know what, I am a Spanish speaker now." Making mistakes isn't a failure, it's simply a compile error. It's a natural part of the development process. I don't need to memorize syntax to learn a programming language; in fact, I never spent a single second trying to memorize programming syntax. Why? Because I can always Google it. And eventually, and with enough usage, it's just burned into my memory.
Now how can we do this with Spanish? For me, I started by using a free resource called Language Transfer. Language Transfer is cool because it approaches conversations in this SWE minded way. It's a podcast where the teacher first teaches you some simple rules and a little bit of vocabulary. For a SWE, it would be the equivalent of teaching someone the components needed to do this:
int a = 2;
int b = 3;
int c = a + b;
printf("%i + %i = %i", a, b, c);
>>> 2 + 3 = 5
And then the host has you use the very simple rules and vocabulary you just learned, and asks you carefully and intentionally formed questions that can be answered using your newfound tools. At which point you pause the podcast, form your answer, and play to hear the answer.
BOOM you are now speaking Spanish after 15 minutes.
This was the turning point in my language learning adventure. This was fun, this was intuitive, this was specific to my goal(speaking), and it was similar to what I do for a living. At first I did just Language Transfer, that was the first iteration of my curriculum. I kept running with LT until I hit a road block. I met a Guatemalan gentleman on a plane, and I attempted to have a conversation with him. It was a lot of fun, despite the fact that I knew very little.
That experience helped me to recognize some areas in my language learning that were lacking and aspects that my current curriculum couldn't really address. But now that I enjoyed the process of learning, I could re-assess some aspects that I previously wrote off. I could re-contextualize other aspects of learning. What follows are some modifications I made to my initial plan of "Only do Language Transfer".
One area I was lacking in was my vocabulary, and while I don't really like memorizing things(still don't), my newfound perspective on language learning helped me to get past this roadblock. I now do Anki flashcards, which admittedly is not the most fun thing in the world, but is much more palatable now. It's more palatable for me because I find languages and Spanish specifically more interesting. Every word has a history, nuance, and logic to it. Back to programming, one could memorize that "printf is the function that you use when you want to print a string with variables in it" OR one could look up the documentation about the print family of functions, and learn that the print functions are typically appended or prepended with letters denoting the functionality of the function itself. In the case of printf, the "f" stands for format, meaning you can add in some variables with your text literal. The former is boring and rote, the latter is fun and interesting. The same thing applies to words in human languages. Why is the verb "Ser" so irregular and weird? Well because it's actually two separate verbs that got mixed together over time, some conjugations came from one word while some came from the other.
It is said the the best programmers are not the ones that the most skilled writers, but are the ones that are the most skilled readers. I initially wrote off(heh, pun actually not intended) reading Spanish because I was not interested in reading Spanish literature. Which is totally fine. But once my interest in the language itself grew, I came to recognize the value in reading Spanish. I have started incorporating reading into my curriculum because it is a great way to study silently(I study on the train during my commute). It's like reading code! It's interesting! It's like diving into a new and foreign codebase. At first it makes no sense at all. But then after chasing down rabbit holes and following the train of logic, you get this satisfaction at understanding the codebase. Reading Spanish is no different. You start knowing nothing, and you end with that satisfaction of gaining new knowledge.
So initially wrote off tutoring because the price my friend gave me for what he paid for a tutor was a little too high for what I could afford. I recently did some more research into it, and I found that I don't need to spend that much to get a Spanish tutor. My friend pays a lot to work with a really experienced and knowledgeable tutor. He likely gets what he pays for. However, you don't need to spend big bucks to get a "good enough" tutor. For example, I used iTalki to find a MUCH more affordable tutor. He lives in Colombia so he is a native Spanish speaker, and the cost of living difference means that I can pay him a fair living wage with money I would have spent on coffee. He has been a big help to my journey, and has kept me on track. My sessions with him are particularly helpful because it's like coding in a REPL environment; instant feedback.
// This actually happened...
$ Meto el pollo en el ollo
> Are you sure you meant to say that? You just said you put the chicken in the butt. Ollo means butthole. Olla means pot.
$ Meto el pollo en la *olla*.
> Perfecto
I'm only three months deep into my latest iteration of Spanish learning, so take this advice as you will. But I will say that I know that this time it will stick. I have found a method that works for me, and I know I will be consistent with it. I know this because I know that I enjoy the process. And I know that if I enjoy the process, I can achieve any goal I set my mind to. I enjoy the process of running, therefore I run marathons. I enjoy the process of problem solving, therefore I am a successful software engineer. I hope this article may help you to re-contextualize your goals and how you approach them.
"A journey of a thousand miles begins with a single step" - Lao Tzu