12 Ways Learning a Programming Language Parallels Second Language Acquisition
In February 2020, I enrolled in a Web Developer Bootcamp . My life pre-bootcamp could be painted as a full-on humanities, right-brained bonanza of art, literature, and language. Although I had no prior experience in coding nor in STEM, I did have a fulfilling yet arduous decade+ experience learning a French as a second language. Now, having graduated from Nashville Software School and reflecting on my coding journey, I realize how many parallels exist between learning to code and learning to speak French as an adult.
Here’s a list of parallels between programming and second language acquisition I’ve found during my experience:
1. Being comfortable with feeling uncomfortable is paramount to your success.
You’re going to be outside of your comfort zone. You’re going to feel stupid, often. This is not a great feeling, but it’s important to accept and be ok with it. Be ready to jump into the deep-end and be comfortable with not knowing.
2. Perfectionism and fear of mistakes inhibit growth.
While learning French at university, my horror of speaking incorrectly inhibited my participation in class. I saw firsthand classmates less “skilled” in the language advance quicker than me because they were willing to fail faster and more often. You have to speak and make thousands of errors to become better and more proficient.
In my coding bootcamp, my perfectionist expectations lead to me being impatient with myself, which in turn inhibited my journey. Judging harshly my own learning process was dangerous to my success. It took a senior instructor calling me out on this to change my tune.
3. Start small and simplify.
When first living in France, it hurt to communicate in an elementary way with no flair or personality. Yet, trying to be speak more complexly often lead to frustration and overwhelm to the point that I would opt to not communicate or avoid conversations. In order to survive and progress, I quickly learned to simplify, get to the point and communicate directly so that I got what I needed!
In coding, if I don’t start small, I become overwhelmed, spin around solutions in my head with no exit. To combat this: I start with one thing I know to do, keep it simple, and let it unfold from there. Proper planning, rubber ducking and pseudo coding are also life-savers.
4. Acquiring the schema is painful and arduous. But once in place learning gets much easier.
Immersive learning of a second language and/or first programming languages is exhausting and mentally taxing. Your brain is on overdrive, because the schema is all new and simple accomplishments take a lot of brain power. Nashville Software School called the stage of learning this schema “the pit of despair” for good reason. My sleep requirements during the first few months of my coding bootcamp looked a lot like my first months living in France as a novice speaker. I slept like a bear in hibernation on the weekends to repair and recover, including recovering form the feeling of failure.
5. Once you learn one language, the next languages get easier and easier
6. Full immersion is the fastest way to learn
There’s no better way to advance than having real life, immersive experience. That’s why I lived in France 3 different times. That’s why I chose a bootcamp, coding 7 hours a day, 5 days a week for 6 months. Albeit, I’m still waiting on my first dev job for that immersive, enterprise experience. I hear that’s where the real learning happens.
7. Expert Googling skills are required.
Don’t know how to say a word ? Online dictionary to the rescue! Don’t remember how to flatten an array? Google it!
WordReference Forums are to French learners what stackoverflow is to Developers. It’s necessary to see how and in which specific context a concept is used. Nuances are important. How you think you might communicate a concept can end up being wilding incorrect, but Google research skills help you.
8. Your perception of your own skill level can vacillate based on the day, the context, the person, the amount of sleep you got.
That imposter syndrome feeling never leaves. I think I’m fluent in French until I’m exhausted and suddenly forget how to complete full sentences at the market when buying goat cheese and vegetables. Parallelly, I feel like I’m doing well at coding until I encounter an unfamiliar challenge or struggle. Comparison is also a biggie — I think I’m doing well until I compare myself to my peers or those around me. That’s why the first day of my bootcamp, they say DO NOT COMPARE YOURSELF. You are on your own journey.
9. Learning the culture and the people is just as important as learning the language.
There’s a well known debate on whether it’s more important to speak the language or know the culture first. The truth is, the two are intertwined and aren’t mutually exclusive. I naively expected that software development would be more divorced from people and culture, relying more so on cold logic and tech. Yet, people skills, knowledge of organizational culture and the development environment is just as essential as successfully coding.
10. If you don’t use it, you lose it (sort of).
When I haven’t spoken or listened to French in a while and I go to Paris, I feel like I forgot everything. “I LOST IT ALL! ALL THAT HARD WORK GONE!” After two days of immersion, my languages skills come back. When I hadn’t touched React for 2 months and tried to jump back in, I felt like all my knowledge had been deleted. Yet, after a day of coding, it all came back.
11. The path from novice to mastery is similar.
Comparing this ACTFL chart below to the 5 Levels of Developers Chart, you see many similarities in the path to learning a programming and spoken language. Essentially, as a beginner, you pattern match and have a limited, narrow scope. As you advance, you become more abstract in your thinking and your problem-solving. Your language becomes more articulate, elegant and efficient while you’re also able to think more globally and easily switch between multiple contexts.
12. It’s impossible to know it all; the learning never ends.
Finally, spoken languages are constantly evolving: with new slang, terminology and demoded phrases. Technology moves even faster, and it’s important to be constantly learning to stay relevant and letting go of what’s no longer relevant. The good news is: you’ll never be bored and always be challenged to push the limits.
For these 12 reasons, I find the journey between learning French and learning to code quite similar. Above all, having prior experience of being completely uncomfortable and struggling to speak sentences correctly enough to be understood helped prep me the most for the “pit of despair” in Nashville Software School. As my journey as a developer continues, I’ll be curious to see how and if this list changes.
If you have other parallels between learning a language and learning to code, comment and give me your feedback!