Skip to main content

How to learn a foreign language like a software engineer

TL;DR

  • Find a way to make language learning fun. For me, it was to think of it as a problem-solving exercise, like programming.
  • Don't be afraid to change your approach if something isn't working. Most things are achievable by most people with the right approach.
  • If all you want is the results of my Quixotic journey to learn Spanish, scroll down to Approach #4

Introduction

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:

  1. I invent my own way of going about things(F*** around).
  2. Implement it.
  3. Fail miserably. (Find out)
  4. Re-assess my choices and adjust accordingly.

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.

Approach #1: Ill-advised silliness

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:

  1. Watch Spanish YouTube videos.
  2. Listen to Spanish music.
  3. Repeat what I hear.

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.

Approach #2: Duolingo

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.

The Dark Age

I lost hope. I said:

  • "Language learning is too hard and tedious"
  • "It's no fun"
  • "What's the point? I can't afford to travel to immerse myself as people say I need to do."

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.

The Renaissance

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.

Approach #3: Pay-to-win

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:

  1. How are we going to afford your lessons and tutor?
  2. Is this really the most efficient way to go about things?

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].

Approach #4: Learning a foreign language like an engineer

Fundamentals

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:

  1. There is a plethora of language learning resources out there. Some address certain aspects of learning better than others. You should mix and match to fit your needs.
  2. There really is no definite point at which someone can say they have "learned" a language. What you choose to learn is totally up to you. If you don't need an aspect of the language, don't bother learning it.
    1. You only care about reading? Don't worry about speaking and listening. Just read.
    2. You only need to be able to interact in a business setting? Just learn the relevant words, you don't need to learn how to say "mother", "yeehaw", or "avocado toast".
  3. Set a specific goal if you haven't already. Build your curriculum how you want to build it, given your goal and your preferences.

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.

The Framework

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

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.

Approach the curriculum like an engineering problem.

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

The implementation

How can I make speaking a language like coding?

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:

  1. Establish the goal
    1. "I want to write a function that encrypts a message"
  2. Look at similar code, either in the same codebase, or online, to get a general idea on how the language is structured.
  3. Break that goal into parts
  4. Make a best effort attempt at implementing the constituent parts
  5. Run my code to figure out what I did wrong
  6. Research all of the issues raised by running my code.
    1. "Ah this language represents strings differently, I need to use ' instead of ""
    2. "In this language they don't really use for-loops, I need to switch over to the map function"
    3. "This language doesn't have a garbage-collector. How do I need to change my code to account for that?"
  7. Fix the issues

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".

... Back to vocabulary

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.

... Back to reading

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.

... Back to tutoring

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

Conclusion

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

Footnotes

  1. I may get some hate here for saying "Chinese" instead of "Mandarin". But this was entirely intentional. Growing up, I referred to the language that Chinese people spoke as such, "Chinese". Later on, I learned that technically there's no such thing as a Chinese language. And that most people from China are speaking Mandarin. For a while, I then referred to the language they spoke as Mandarin. However, since I have been learning more about languages, linguistics, and language learning, I now refer to a Chinese sounding language I cannot identify as Chinese. I've learned that how we define languages and dialects has more to do with politics than anything else. For most Chinese who grew up outside of the northern part of China, they speak Mandarin at school and work, but their local "dialect"(read: language) at home and with their friends. Chinese "dialects" are not really dialects but full languages. It's like if we said that French and German are dialects of European. My western ears cannot distinguish the difference between Mandarin and Cantonese. As a result, when I hear a Chinese-sounding language being spoken that I cannot identify, I refer to it as Chinese. I think this is more fair towards the reality of the situation, and doesn't downplay the validity of non-Mandarin dialects. And finally, to tie up this already incredibly verbose footnote, I must say that this whole state supported "language" vs local dialect is not even close to unique to China. The same thing happens in many other places, such as India or even Germany! If you're interested in nerding out about the distinction between languages and dialects, I would check out The Power of Babel by John McWhorter.
  2. By the way, I would encourage the reader to get into exercising regularly if they are not already. I don't believe there are those that like exercising and those that do not. I think most people that think they don't like it have simply had bad experiences with it. And to compound that, they have been bullied in some fashion either by their peers, gym coaches, or fitness influencers. Like language learning, there's not really one true right way to exercise (just many many wrong ways). I would encourage you to find something you enjoy. If it's too difficult, don't do it! Can't run for more than a minute? Walk for 30s and run for 30s. Can't run? Walk. Don't push yourself so hard that you feel like you're dying. Once you feel comfortable and you are enjoying yourself, branch out, try something new. You don't have to be Rocky Balboa, running up steps and chugging eggs. What's important is that you get out there and have fun. And then all the hard work will do itself. See this article for more information about run-walking.
  3. To my friend: no offense here. You didn't "pay your way" to learning French. This just reflects my simplistic view of your approach at that point in my language learning journey.
  4. I find myself Googling subjective things like this appended with "reddit" so that I can get real human input instead of content farmed or AI generated SEOd BS. Welcome to the 21st century. sigh

References

  1. The Power of Babel by John McWhorter - Great book if you're at all interested in linguistics
  2. https://www.languagetransfer.org - Language Transfer, an amazing FREE podcast for learning a bunch of popular languages.
  3. https://sajforbes.nz/languageguide/introduction/ - Great website outlining how to build your own language learning curriculum and the available resources. Meta-learning.
  4. http://spanishlinguist.us/2017/02/why-ser-and-ir-are-so-irregular/ - Tidbit about why a particular Spanish verb is so irregular.
  5. http://www.jeffgalloway.com/training/run-walk/ - Article outlining the runwalking method. Great if you want to start exercising but don't know how to start.
  6. https://apps.ankiweb.net - Awesome flashcard app.