I often get asked by people wanting to get into programming and building applications where they should start. Here are some resources that I would recommend as being beginner friendly enough while teaching valuable and applicable skills:

FreeCodeCamp is a free educational website to learn how to code and build real apps and websites. Going through the curriculum requires dedication and work, but provides very relevant and modern skills. It has a very supportive and welcoming online community as well. Once on the website, have a look at the "Map" section to see an overview of the contents.

Jon Duckett's HTML&CSS and Javascript&JQuery books are excellent books that I can recommend to all beginners. They are approachable and have been written with ease of reading and learning in mind. The only downside is that they do not have exercises or projects to reinforce learning. All code used in the books is available online. I would say that They make excellent companions to the FreeCodeCamp curriculum.

Eloquent Javascript is a physical book that is also available for free online and which covers programming in Javascript. The online version includes interactive code exercises that can be tried from a browser. It covers every important topic in writing Javascript code. It is perhaps a little bit advanced for complete novices. If buying the paper version make sure to get the most recent edition (2e at the time of writing).

A technical note for developer and educators

It makes me sad that I have to recommend Javascript to beginners. Frankly, the language is inconsistent, fundamentally flawed in multiple ways and full of traps for the unwary. It supports multiple programming paradigms, and two programs with identical functionality can be written in such different ways that they seem to be written in different languages altogether. Modern (2017) application development, using transpiled javascript (ES6, Babel, Gulp, npm, Grunt, etc…) is an exercise in frustration and pain even if you do know what you’re doing, let alone when you are starting out. The incidental complexity for building a modern web application is frankly ridiculous to the point of masochism.

However, as of today, there remains no better system for beginners to get immediate feedback and easily share their work. I would love to recommend Scheme or Python instead, as these languages are significant improvements over javascript in every meaningful way. However, they cannot easily be shared or used to create visually rich applications in the same way that Javascript can. The universal distribution of Javascript and its availability on every platform (you can start a REPL in every desktop browser) makes it the only logical choice for teaching programming that will quickly lead to applicable skills.

Thanks for reading! If you have a positive of negative response that you want to share, please get in touch on twittter or by email.

comments powered by Disqus