DEV Community

Cover image for 5 ways learning to program is like learning a foreign language
Jon Barker for Inktrap

Posted on • Updated on

5 ways learning to program is like learning a foreign language

Summer is coming to an end, and a few members of the Inktrap team are trying to up their language game as their final holidays approach. Spanish, French, German and Arabic are being thrown around the office. But they’re not the only language we can hear in the room. What about JavaScript and PHP?

We started to wonder how similar learning a programming language is to a spoken language. Turns out, in our opinion, the process is pretty similar.

You learn the concepts first, not the specifics

Learning your first foreign language is difficult. It’s arguable that you actually learn more about your own language at this stage. Your native language is innate, you don’t really think about what you’re saying, it just comes out.

Then you begin to question yourself and end up asking, “why are we on a bus, but in a car?”. It feels like you’re losing your sanity. You question everything you’re saying in both your native and target language.

Programming is just the same, it’s less about the specifics and more about knowing what constructs are universal across multiple languages. Once these are understood, the knowledge is transferable.

In spoken languages, it’s things like pronouns, verbs, adverbs, and adjectives. In programming, it’s variables, conditionals, while loops and classes.

“The more you know, the more you know you don’t know.” — Aristotle

As you learn more and more you’ll find that you need to put in more effort to see an increase in your proficiency. Once the building blocks are out of the way you really need to dig deep to understand the nitty-gritty stuff.

With a spoken language, you start to see how much is really ahead of you when you try to do something beyond ordering a coffee. You bump into a native speaker and it dawns on you how many words you can’t recall immediately. Or how often you use incorrect grammar.

With any kind of development, you realise how much there is to learn when you go from building a small side project or website to working on a fully-fledged application with users and testing and feedback.

It may sometimes seem like you’re coming to terms with a concept, only for it to fork off into two additional things you need to learn. The most important thing is to not be dissuaded. As the French would say, “petit à petit l’oiseau fait son nid”. Or in English, “little by little, the bird makes its nest”.

An IDE or good code editor will help

Creating websites or software in a helpful IDE (Integrated Development Environment, like Webstorm) is like speaking in your target language with an extremely useful assistant on hand.
They will show you where things are and provide you with shortcuts. If you type some code and make an error (kind of like preparing a speech), they’ll point it out and say “hey, watch out for that.”

You’ll be able to see your mistakes and make note of the ones you make the most often. They’ll help you clean up your code or if you were learning a language — your sentences, and point to the function (verb) you’re looking for.

You wouldn’t disregard help from a friend, don’t shun help from your computer.

You learn by doing, not by learning

It’s obvious that the key to learning a spoken language is by getting out there and practising. The same applies to learning a programming language. You will never fully understand all the little quirks of either if you don’t get out there and start making something with them.

You can’t read JavaScript: The Good Parts and expect to be able to immediately write something as renowned as Vue.js. You can’t read about a language’s grammar and travel to its respective country and expect to hold a conversation straight off the plane.

Learning either is a practical, rather than an academic endeavour.

In the end, you’re still crafting a story.

So what is the purpose of learning all these words and structures and concepts anyway? It’s not just to proudly boast that you’ve learnt something well enough to be proficient in it.

In both cases, it’s to craft stories. It’s about making something or saying something that’s relatable or enjoyable for the person on the receiving end.

This is more apparent of course with spoken languages, but the end goal with programming or web development is the same. You’re not just storing cookies, you’re giving them an experience. Maybe you’re creating an enjoyable onboarding flow, or making a difficult process easier, as we did with current client Farillio, that makes handling legal documents easier.

All in all, the end result, as usual, is a connection with a person.
Feel differently? Have anything to add, or just want to tell us about your awesome language skills? If you’ve got any feedback we’d love to hear from you — please leave a comment here, or drop us a line on Twitter. We’re @InktrapDesign.

Top comments (1)

chrisachard profile image
Chris Achard

You learn by doing, not by learning

That's absolutely key - when I think back to the times I've learned something the best, it's always been after I've messed around (and failed) with it enough that I start to get my feet under me; there's no substitute for just working with the new thing.

Thanks for the post!