Leveling Up JavaScript

If you're a web developer it's no surprise to you that JavaScript is everywhere these days. This groundswell of support for JavaScript can leave developers looking to learn more wondering where to start.

This is where I found myself some time ago. I was comfortable with programming fundamentals, jQuery and DOM manipulation but knew there was more to learn.

After talking to some developer friends and reviewing the available options I came up with what I called "my curriculum" a list of books and training resources tailored to expanding my ability. I hope that publishing this list helps someone else looking to improve their own JavaScript skills.

I've listed the resources in a ascending order, each topic is meant to build on the previous material. You'll find there's overlap between resources. This overlap is intentional, every teacher approaches a topic with their own style. If one person's explanation doesn't quite click, the next author might just fill in the missing gaps.

Eloquent JavaScript

Note that my review is of the first edition. The book has since published a second edition and like the first one it's available free of charge online.

Eloquent JavaScript starts off slowly and if you didn't read past the first two chapters you might think this was a beginner book. But things ramp up quickly, chapter 3 introduces concepts such as closures, call stacks, recursion and things take off from there. From this point on the book tends to keep a brisk pace.

I did find some of the examples in later chapters to be excessively complicated. Instead of focusing on small programming examples to illustrate topics the book relies on large cumbersome examples. Often I found myself trying to untangle what the program was doing instead of focusing on the programming technique at hand.

These small complaints aside, I found this to be a solid book that built a good foundation for later reading.

Book link: Eloquent JavaScript

Book link: JavaScript The Good Parts (Book)

JavaScript the Good Parts has a simple goal: show you the pitfalls of JavaScript as a language and illustrate how to avoid them. There are many debates online discussing whether Crockford is right or wrong in his selection of "Good Parts". But I'm a firm believer in making educated decisions and the best way to find out if you agree is to read the book.

My only criticism about the book is the "rail road diagrams" used to explain key concepts throughout. I found these diagrams to be confusing and hard to follow. But overall the book has great explanations of common JavaScript pitfalls you're sure to encounter. Whether you agree with the book's critics or not, something in this book will save you hours of frustration in the future.

Book link: JavaScript the Good Parts

JavaScript The Good Parts (Course and Video)

While reading JavaScript the Good Parts is a great step, I also recommend taking the course of the same name offered by Frontend Masters. It's a 4 hour course given by Douglas Crockford himself. Taking this course will help you understand some of the concepts you may have missed and reinforce topics you previously read.

As an alternative there's a one hour seminar linked below that's freely available. This video won't cover the subject matter as thoroughly but it will provide a decent follow up to the published book.

Front End Masters course
Free YouTube video

Principles of Object Oriented JavaScript

Like the title says this book is all about object oriented programming in JavaScript. JavaScript differs from classical object inheritance languages because it uses a prototypical inheritance model. The prototypical inheritance model is significantly different and understanding it gives you a more thorough understanding of JavaScript's nuances and quirks.

I found the author Nicholas C. Zakas' writing to be very approachable while being incredibly thorough, something that's hard to do with a technical book. It may have been because of my previous reading but when I read this book many topics just seemed to "click". If I had to select just one book as my favorite on the list, this would be the one.

Book link: Principles of Object Oriented JavaScript

Effective JavaScript

This book is 68 self contained examples of JavaScript best practices in bite sized chunks. It's like an updated companion book to JavaScript the Good Parts. The 68 examples can be read individually in no specific order but I'd really only recommend this approach to more seasoned JavaScript developers. To get the most out of the book it's better to read the examples in sequence since they build on one another.

The self contained nature of the examples makes this a great reference text when you need a refresher in the future. Having the book handy means you can quickly look up examples of best practices in specific circumstances. It's a great book to have on your shelf or favorite device.

Book link: Effective JavaScript

Learning JavaScript Design Patterns

At this point, having read the previous books, you should be familiar with closures, hoisting, recursion, object inheritance, best practices and more. But what's really missing is how to apply these implementation details to larger programming challenges. Inevitably when programming you'll find yourself solving similar problems over and over, this is where patterns come into the picture. Patterns provide proven solutions to common programming problems you'll encounter.

This book, by well known Google team member Addy Osmani, does a good job of showing how to implement common patterns in JavaScript. The books starts out with fondational patterns such as constructor and module patterns then eventually moves to more advanced topics like AMD, Facade Pattern etc... I found this book to be approachable and simple in style with a more than adequate explanation of the concepts. I've read some complaints that this book was just a collection of "blog posts" but I find this stripped down style to be it's strength.

Book link: Learning JavaScript Design Patterns

Addendum

JavaScript version 1 was released in 1997 by 1999 the language had reached version 3, but the language stalled in the early 2000's and didn't see an update until version 5 came out in 2009 (version 4 was abandoned). JavaScript has been going through a renaissance and it seems that this renewal has extended to it's development cycle. The next version of JavaScript, version 6, is scheduled for a mid 2015 release and there's already articles online discussing what's coming in version 7. Needless to say it's not likely there's going to be another 10 year gap in development.

While versions 6 and 7 are still pending there are plenty of resources available today to start learning and preparing for future releases. Here's a few links to get your started:

Tuts+ article about JavaScript 6
JavaScript 6 Pluralsight course
YouTube video JavaScript Version 7

About the Blog

A funny thing happened when I started my design career, I fell in love with code. Many years later I now find myself working primarily doing front end development but I also occasionally work with backend tech.

This blog is a collection of my thoughts and what I'm working with at any given moment. It's a work in progress, so if you spot an error or have a comment please share!

Archive