Learning a Programming Language

󰃭 2014-02-14

I’ve heard that if you’re a good programmer, you should be able to pick up a new language in a few days. And I’ve done this myself, I learned the basics of Go a few months ago. Built some command line programs and a web app with it, all in a few days.

Yet, what does it take to really learn a new language? To master it? Sure, there are some concepts that translate well from language to language, but some languages have their own thing going on. It usually takes a little longer to even learn the basics of those languages.

To go beyond the basic concepts, you have to invest a lot of time into the language. You have to learn how to program idiomatically in it. I wouldn’t go as far as saying that you have to spend 10,000 hours practicing a language, but I do think you have to spend at least a thousand hours to know it really well.

On top of that, most languages have a whole ecosystem of associated tools that you have to leverage in order to be productive. For example, JavaScript has Grunt (Gulp seems to follow), Bower, and NPM (and Yeoman most recently). You can’t really say you have mastered JavaScript if you don’t know how to use these tools.

So after learning the language and learning all these tools, you must be a master in this language, right? Well, you’re wrong. You see, most languages (even the unpopular ones) have something else associated with it: a community. Sometimes the community is really visible (for example, the Python community).

If you want to truly master a language, you should be part of its community. The community influences the language in many ways. Usually, the community influences the tools, new language features, libraries, frameworks, and so on. So if you have invested yourself into a language, you should also become part of the community.

Now you have accomplished all of the above: you have spent quite a few hours programming in the language, you have a broad knowledge of all its tools, and you’re part of the community. Is that enough? No! You have to keep up to date, learning (or proposing) new features, tools, learning new libraries and frameworks. You could even build some of those yourself!

Finally, note that you don’t have to do all this. If you really like a language, go ahead. I believe it is worth the effort. Yet, I don’t consider myself a master of any language. There’s just way too much to learn and to do. I prefer having enough knowledge in a few languages and getting things done in them, than to be a PHP Guru or JavaScript Wizard. I advise you do the same.



More posts like this

Starry Sky in HTML5 Canvas - Part 1

󰃭 2019-04-13 | #canvas #javascript #programming-projects #tutorials

In my spare time I often enjoy creating visualizations using HTML5 canvas. I’m planning to do a little presentation about this so I thought a good way to get started was to create a blog post explaining how to do a simple one. This tutorial will teach you how to create something like the image below from scratch! IMPORTANT – you can try out the result of this part of the tutorial by visiting this CodeSandbox.

Continue reading 


How to use the Youtube JS API to play music in the background

󰃭 2014-05-23 | #javascript #tutorials #youtube

The Youtube JavaScript API allows you to embed YouTube videos and interact with them programatically. To use it, first you need to embed this script into your page: <script src="http://www.youtube.com/player_api"></script>. If you just want the audio, you can hide the element that contains the video: <div id="player" style="position: absolute; top: -9999px; left: -9999px;"></div> Here we use absolute positioning with negative coordinates because using display: none; will prevent the onReady handler from the Youtube player from triggering on Firefox.

Continue reading 