What second language acquisition can teach us about learning to code: Part 1

I found this article very interesting. As a professional programmer and a language learning enthusiast, I love to see more evidence about the connection between them.
This article is yet another one.

Link to the article:


Good article I’ve kinda wondered about this. I saw a good post about this on Reddit. Guy said anybody can learn it it just takes time and you have to work on it every day. Kinda like language learning. Interesting. If I can learn Spanish and German to a high level maybe I can change careers and learn to code.




I am interested in coding myself and I have learned quite a bit over time and use it for my research.
I can confirm that there is a close relationship between both skills and in particular the way you learn it is very similar. I would add that good programming learners should also practice problem solving as they learn to code. If you do decide to learn this skill and you absolutely can, a good place to start learning problem solving techniques, once you can at least read code, is this youtube playlist:

Great article! Thank you for sharing it

That’s an interesting playlist. My youngest son learned programming in his final year of secondary school, and when he told me how totally cool recursive programming is, I thought, “Uh-oh, he has the bug!” When he went to university to study chemistry, I was not at all surprised when he switched to the computer science degree program before the end of his first semester.

I’ve been coding for well over forty years in a number of programming languages, becoming fairly proficient in my most recent within the past year. I believe that I can vouch for much of what the author of the article linked by vahid_r has to say. The most important thing is to just use a new computer language to do something useful. That’s how you become proficient. I’ve wallowed in the inept beginner phase more than once until I found the project that propelled me to the point where I could think in a new computer language. I cringe a bit when I recall some of the code I wrote back when I first learned the C programming language, e.g. But it worked and was key to a new product launched by the company I worked for at the time, and I learned a lot.

What is cool is when a new computer language is different enough that it offers new ways to think about and solve a problem. In some ways that mirrors what you discover with a new spoken language – it might present you with new ways to think about and express things that you had never thought of before.


@vahid_r thank you for the article, and @ftornay - for the youtube playlist! Also I’d add that unfortunately you can’t acquire a programming language passively, only by absorbing comprehensive input, or can you?

1 Like

I’ll echo your statement khardy regarding - “use a new computer language to do something useful”. I’m also a programmer - 27 years professionally. I kind of feel like learning to program or specifically a new computer language in a way lends itself more to the “Benny”-approach of output early.

Although one obviously needs some input in the way of reading or watching videos on certain concepts. Or looking up how to do something, it really sinks in when you use it and tinker with it. Even then one may still need to keep getting input, by looking up how to do things, but with programming I always feel like I’m building up my own tool chest of things I’ve done that I can use later in other programs I write. Sometimes I have to “re-read” the “instructions” on those tools, but having worked through the gotchas by using it in a program at least it’s familiar and most of the issues that were worked through the first time around can be avoided.

Now, how it compares to languages, I’m not sure I’m there yet personally. For languages I’ve been pretty much exclusively doing input and have yet to do much output wise in any meaningful way. Perhaps that’s a bit of a “mistake” on my part. Partly, it’s because I like to do things on my own… On that point, I’ve started to do some writing. This may be akin to “using a (computer/speaking) language to do something useful”. Building up my tool chest of words I can use in either writing or hopefully with some transfer to speaking.

1 Like

Thanks for the links. I’ll check them out. Not sure if they mention it but a great resource of problem solving and puzzles for programming is:


I was using it to help learn Clojure. I only made it through 5 days worth, but it was definitely useful in discovering parts of the language and differences between it and languages like Java, although I do have some Lisp background from way back in college (mostly forgotten).

I think there’s another website that has puzzles that can be solved to, but can’t think of it. Perhaps it’s mentioned in the videos you provide.

Another great thing about the adventofcode as it relates to Clojure…I was able to find a couple of different folks, better versed in the language, that solved some or most of the problems and I could see how they approached the problems and learn more of the language that way…either functions I wasn’t aware of, or thinking about the problem in a different way.

1 Like

spot on

1 Like

Thanks for the article vahid_r. I never thought to compare the two. I do think programming requires more output, in that I think it is really necessary to tinker a bit. At a high level language can be learned just by input and still provide something useful (just the ability to read and listen is something useful-even if one never learns to “output”, or doesn’t care to). The nature of programming is to produce output…there’s not much benefit in just reading about a computer language, although maybe there are a few that do that. I suppose I’ve done it to some degree just looking around to see if something might be useful to my career.

I like the dispelling myths sections, although I think one of them I may disagree with…“The need to do projects on the side”. Perhaps not necessarily projects, but I think to be a good programmer one needs to be learning on the side. Especially if their work environment doesn’t allow the time to do some outside learning.

I think the big takeway is that for each, one needs to always seek to improve, even on things they think they know well. I’ve been programming for 27 years, but there’s still things I learn or need to learn every day even for a language I’ve programmed 24 of those years. Constantly looking to improve always helps, even just incrementally. I like the idea as well that one should not just believe certain “myths” about learning. Sometimes one needs to figure out their own path that works best for them, or even certain myths may be wrong or detrimental to learning.


Learning to program, for me at least, was mainly consist of learning the basics (loops, functions, classes, etc.) and doing some small personal projects.
Then I started to read the source code of a lot of “small” open source projects. The more I read, the more I became familiar with the idioms in the language that I was learning.
From this perspective, I can relate reading source code to the “comprehensive input”, as they serve the same purpose.

Looking back for almost two decades ago, If I wanted to learn a new programming language (or become a software developer by profession), I would do the following:

  1. Lean one easy-to-learn programming language (like Python, or Ruby) from a good educational source. Udacity’s introduction to Python programming is great and free if I’m not mistaken.

  2. Do a few small projects on your own and push them to Github.

  3. Read a lot of good open-source (yet small) code in that language. As I mentioned before, this can be the comprehensive input stage, IMHO.

  4. Get a job as a junior developer and keep reading and writing code for few years, until you call yourself a good engineer.


Nice answer. I also shared my thoughts on it a few posts above…

1 Like

The author of that article goes more in depth in this podcast. It’s worth listening to. Enjoy.

1 Like

Second part just came out: SLA Insights Part 2: Input, Interaction & Output | Pluralsight

1 Like