Close

28th June 2014

JavaScript Resources

There has never been a better time to pick up JavaScript as a first or an additional language, it is quickly becoming the language of the modern web. The current standard (ECMAScript 5) is a relatively small language compared to Java and PHP, and shares their C style syntax, but this is pretty much where the similarities end, as JavaScript is more akin to Lisp in operation.

With the launch of ECMAScript 6 Harmony right around the corner, which brings many conveniences from other languages and transpiled languages such as CoffeeScript – JavaScript is set to get a whole lot more interesting and possibly a little more difficult to understand, so getting a thorough grasp of the current standard before heading into the new stuff is a great way to go.

Fortunately, there have been some fantastic resources become available over the past few years.

Just Getting Started?

If your just starting down the path of learning the language, it would be difficult to do better than the following:
Speaking JavaScript by Dr Axel Rauschmayer – this is an absolutely fantastic book covering most of ES5, and is now free to read online.
Mastering Space Time with JavaScript by Noel Rappin – if you prefer a more tutorial based approach to learning, then this, and the rest of the MSTWJS series are very good, with this first book on the basics being free.
Secrets of the JavaScript Ninja by John Resig – a very comprehensive book by the father of jQuery and Khan Academy if a little dated compared to the previous two books.
How to Learn JavaScript in 6-8 weeks – this blog post from JavacriptIsSexy.com, gives an interesting roadmap to learning the language in a relatively short amount of time.
DevDocs.io – this site is pinned to my browser permanently, it is an amazing resource for JavaScript along with many other libraries and languages, the best reference I have found on the web so far.

More than the Basics

Once you’ve got the basics down and are feeling pretty confident in the language, it becomes time to learn to put that language to best use via design patterns and good architecture:

  • Learning JavaScript Design Patterns by Addy Osmani – a book that I think every JavaScript developer has on their bookshelf and ebook reader, an invaluable reference which is also free to read online.
  • Mastering Space Time with JavaScript by Noel Rappin – if you read and enjoyed the basics book, the rest in the series are definitely worth the price of admission covering JavaScript Objects in depth and then the ins and outs of both the Backbone.js library and the Ember.js framework.
  • Human JavaScript by Henrik Joreteg – teaches you how to structure your code so others will want and be able to read and understand what you have created. Teaches you how to avoid getting into JavaScript spaghetti codebase messes.

Intermediate and Beyond

A good developer is always learning, which is why I don’t like the term ‘Advanced JavaScript’, in addition – JavaScript is still a growing language with the ES6 spec already nailed down and work starting on what we want in ES7!

Developing for the web puts us in an amazing position thanks to all modern browsers now being ‘Evergreen’, so when ES6 lands officially, users will be able to run our ES6 code as soon as the browser auto-updates (with some features in current browsers already!) – a stark contrast to the transition from ES3 to ES5 back in the day when Internet Explorer was king of the web.

  • Testable JavaScript by Mark Ethan Trostler – this links to the free screencast, but the book is well worth a read to get started with JavaScript testing.
  • Data Structures & Algorithms with JavaScript – good walkthroughs explaining common algorithms and how to approach implementing them in JavaScript.
  • JavaScript Allong√© by Reginald Braithwaite – teaches how to leverage the power of functions and fully understand many of the subtleties of the language, a must read book by a well seasoned developer, also hit YouTube and watch the talks Reg has given, most you’ll need to watch a couple of times to take it all in.
  • JavaScript the Good Parts by Douglas Crockford – many people get this book recommended, but I found it wasn’t much use until much later on in my JavaScript journey as its more a series of short recipes with no full reasoning as to why we are missing certain things out, some times a ‘bad part’ is useful and you should learn to recognise when to use what rather than excluding without full reason and understanding. Crockford’s video series over on YouTube or Yahoo Video Library covers most of the books content with more details if you have a few days spare to view.

Online Training

There are many online guided tutorials (Codecademy, CodeSchool, Treehouse etc), and while they are very good – you have to be the type of person that can learn from this approach of building an app that should be almost identical to their reference app – personally, it doesn’t work for me – I much prefer short, concise video snippets that explain a particular issue clearly – Watch Me Code, EggHead, EmberCasts.

Learn the Concepts not the Code

I’m a big believer in ‘Just in Time Learning’, we can’t know everything about the language or a particular library or framework – developer skills, when learned well, transfer to other languages and the ability to get up to speed with new libraries or frameworks fairly quickly – learning something for the sake of putting it on your LinkedIn profile or CV doesn’t mean you’ll actually be able to use it when you need it 6-12 months later, instead you’ll find yourself hitting the docs and re-learning, that initial time could be better spent learning to pick up things quickly with the help of books like Code Simplicity, Pragmatic Thinking & Learning, Patterns of Enterprise Application Architecture and The Passionate Programmer – these type of books give you skills, knowledge and techniques that can be applied to all aspects of software development – things that will be useful even when JavaScript or [insert library/framework name here] has long been retired.

Leave a Reply