One Of The Biggest Mistakes You Can Make When Learning a New Programming Language


When you want to learn a new programming language there's usually a reason... you need to do something desperately on a project/product which forces you to use something different, your line manager has asked you to take new responsibilities, you want to build something cool, you want to pivot into a new role, whatever it is.. you'll want to learn that language in the quickest and most pain free way possible.

I'm a big advocate of developers learning the theory and the more conceptual side of programming and by that I mean understanding higher-level concepts, like the benefits of BDD, or, TDD, how to plan or estimate projects, ways of designing software to make it more future-proof, refactoring techniques etc.. when you want to learn these more theoretical concepts, then buying a book and reading it cover-to-cover is a great approach. If you're wondering what type of books I'm referring to, some example of these types of books could include the mythical man month, the Phoenix project, head-first-design patterns, dependency etc..

Since school days, we've been taught that the best way to learn things is to buy a book and read it cover to cover. If you want to learn a new programming language, you might naturally think that the best way to tackle it, is to buy a book and read it cover-to-cover and then after you've finished start coding... this is an approach that I would definitely not recommend, not only will it take you a lot longer to learn the language, you'll also waste a lot of time and effort reading things that you'll very likely instantly forget.

I've definitely fallen into this trap over my career, when I wanted to learn JavaScript for example, in a bit more depth for instance, I went out and brought JavaScript Patterns, JavaScript The Good Parts and JavaScript The Definitive Guide (which are all good books), however, I thought it would be a good idea to read them cover-to-cover without actually doing any coding. This probably took me about 3 months. I started with JavaScript The Definitive Guide which for those of you who haven't read it, is like the Javascript encyclopedia, it tells you all the syntax, how things work etc.. it also covers a number of things that I'll probably only need to use once in a blue moon, like the regular expression chapter. When I came to start writing some JavaScript, I'd forgotten a lot of what I'd read and I had to Google, or at least reference the books to remind myself the syntax.

After reading these books, I decided a better approach to learn Javascript would be to set myself a 'learn 30 things in 30 days' challenge (which I think is still on my Github). For 30 days I created a small Javascript app, each day it had to encompass something new, a new technique, a new framework etc.. not only did a massively improve my JS skills, I also learned a bit of knockout, css, ember, etc.. 
I learnt 200% more in those 30 days, actually spending an hour each day, trying something new, only learning the minimum amount that you need to know and then using that knowledge and implementing that knowledge, failing, learning from your mistakes etc.. than I did compared to reading a whole bunch of theory, most of which was irrelevant to the stuff I actually needed to know.

Don't get me wrong I'm a big fan of reading books, but, when it comes to learning a new programming language you will only learn by coding and the choice of what book to read and what parts of it to read are very important.

If you want to learn a new language, don't make the same mistakes as I did. Don't overload your brain with facts that you don't need to know just yet. Set yourself small goals and just concentrate on learning the absolute minimum to get you there.

In my case a lot of my time 'learning' JavaScript' was forgotten, as I had no immediate use for that knowledge.. it went in one ear and out the other.. my advice to you, is understand what you're trying to accomplish, e.g. learn a practical skill, or, learn some theory. If you want to learn a practical skill, you'll be better off coding and learning the essentials, compared to overloading your brain with a number of useless facts.



submit to reddit

Jon D Jones

Software Architect, Programmer and Technologist Jon Jones is founder and CEO of London-based tech firm Digital Prompt. He has been working in the field for nearly a decade, specializing in new technologies and technical solution research in the web business. A passionate blogger by heart , speaker & consultant from England.. always on the hunt for the next challenge

Back to top