About the Author

Chris Shiflett

Hi, I’m Chris: web craftsman, community leader, husband, father, and partner at Fictive Kin.


Learning JavaScript

One of my goals this year is to acquire new skills, so I've decided to start by learning JavaScript. As was the case when I learned HTML and CSS, it's a tricky endeavor, because I'm not exactly a beginner, and most stuff is geared toward beginners, which can make learning so inefficient that I lose my motivation.

I've decided to treat this effort just like I treat exercise, which is to focus on rhythm and consistency above all else. Don't break the chain. My days are packed, but I'm setting aside at least half an hour each day to do something related to learning JavaScript. As long as I hold myself to that and continue making progress, I'll be happy.

Why am I telling you this? One reason is to put myself on the hook, and another reason is so that I can share what I'm doing to learn JavaScript, in case you want to join me. (This also means those of you who have already been down this path can offer your sage advice.)

Since I've just started, I'm currently only using two sources:

Eloquent JavaScript
This not only seems like a good introduction, but it also offers interactive exercises, which I think is going to make a big difference.
Codecademy
As you can see, I've already gone through some of the courses on Codecademy. The quality seems to be hit or miss, but I like the concept and the platform, and it allows me to dedicate very little time and still feel like I've made some progress.

I also have a copy of JavaScript: The Good Parts that O'Reilly sent me back when they wanted Sean and I to write a similar book for PHP. I'm not sure if it's best used as a guide or a reference, though.

If you're a developer and don't already consider yourself a JavaScript expert, won't you join me?

About this post

Learning JavaScript was posted on Tue, 07 Feb 2012. If you liked it, follow me on Twitter or share:

22 comments

1.Joël Perras said:

I highly recommend reading through Crockford's book first; it's quite well done, and exposes all of the most useful and elegant constructs in Javascript while showing you what to avoid.

When you're done that, pick up Stoyan's book, Javascript Patterns. Reading through that will take you from being able to write simple scripts to large, modular and well-architected JS libraries and full applications without wanting to blow your own head off in the process.

Tue, 07 Feb 2012 at 16:43:03 GMT Link


2.Nicholas Sloan said:

Congrats on the decision! I'm sure you'll find it much easier to pick up than you would have expected. Old browsers had me biased against JS for a long time.

As a means of testing yourself, or finding new things to learn, you might try tackling a JS question on Stack Overflow a day once you've gotten to know a bit. Seems like that would be a good, and very tangible way of evaluating your progress or focusing your learning on a particular task.

Tue, 07 Feb 2012 at 16:43:13 GMT Link


3.Jason Weaver said:

I found that doing small experiments has helped me understand JavaScript better. I'd recommend trying to solve specific problems. I think you'll find yourself learning faster. For example: I made a very simple conditional slideshow without using a JavaScript library.

I keep all my small experiments in a lab section on my site and write posts about them. Hope this helps.

Tue, 07 Feb 2012 at 17:10:59 GMT Link


4.Nicolas Long said:

The only resource you really need is Douglas Crockford's Javascript: the Good Parts. This book is great: it's concise yet covers everything required to get started.

But I also recommend some great exercises which can be found here: http://nathansjslessons.appspot.com/

- these exercises (all about closures, but useful to grasp functions in general in JS) can be tested live on his site so you get immediate feedback about whether you have really understood the examples or not.

Tue, 07 Feb 2012 at 17:21:59 GMT Link


5.Chris Shiflett said:

Thanks for the excellent suggestions.

Joël, I'll pick up Stoyan's book. I didn't realize he had written one. Thanks.

Nick, when I was first learning PHP, I answered lots of questions (in great detail) on PHP General as a way to deepen my expertise. It really helped, so I like your suggestion.

Jason, I really like your lab. I think you've convinced me to put some more love into mine.

Nicolas, thanks for the link to Nathan's JS Lessons. I'm going to add this to the mix.

Tue, 07 Feb 2012 at 18:24:51 GMT Link


6.Ed Finkler said:

Others have recommended Stoyan's patterns book, which is quite good once you get the basics down.

I tend to disagree with folks who suggest Crockford's book as the first thing to read. He makes a lot of good points, but he's opinionated to a fault, imho. A beginner will not be in a position to critically assess his arguments.

Eloquent JavaScript is a good start. I think the Mozilla Core JavaScript Reference and Guide stuff are solid too.

https://developer.mozilla.org/en/JavaScript/Reference

https://developer.mozilla.org/en/JavaScript/Guide

Tue, 07 Feb 2012 at 18:35:55 GMT Link


7.Ian Storm Taylor said:

Also checkout dailyjs.com if you want to keep up with cool projects in the JS community.

Tue, 07 Feb 2012 at 20:22:14 GMT Link


8.Jake Smith said:

I'm just adding my vote for Stoyan's book, best javascript guide I've read!

Tue, 07 Feb 2012 at 20:28:45 GMT Link


9.Ben Marks said:

Our resident JS guru recommended JS Garden as a resource for (PHP) programmers to quickly get up to speed on JS: http://bonsaiden.github.com/JavaScript-Garden/

Evidently JS is going to be a thing for awhile, so I'm throwing my hat in.

Tue, 07 Feb 2012 at 20:36:12 GMT Link


10.Klaus Michael Bredt said:

You can watch Crockford in an 8 videos tour de force on JS here:

http://www.youtube.com/playlist?lis...664379246A246CB

There is also the JS Weekly Newsletter

Tue, 07 Feb 2012 at 21:22:42 GMT Link


11.Karl Wilbur said:

Here's a ref list that I've been building and sharing for a few years now...

Douglas Crockford:

"The Javascript Programming Language" (Oct, 2006):

http://video.yahoo.com/watch/111593/1710507

http://video.yahoo.com/watch/111594/1710553

http://video.yahoo.com/watch/111595/1710607

http://video.yahoo.com/watch/111596/1710658

"Theory of the DOM" (Oct 11th, 2006):

http://video.yahoo.com/watch/111582/992708

http://video.yahoo.com/watch/111583/996002

http://video.yahoo.com/watch/111584/996008

"Advanced Javascript" (Oct 17th, 2006):

http://video.yahoo.com/watch/111585/1027823

http://video.yahoo.com/watch/111586/1027832

http://video.yahoo.com/watch/111587/1027854

"Javascript - The Good Parts" (June 7th, 2007):

http://video.yahoo.com/watch/630959/2974197

"Quality":

http://video.yahoo.com/watch/529579/2724346

JSLint:

http://www.jslint.com/

JSMin:

http://www.crockford.com/javascript/jsmin.html

"Javascript Coding Conventions":

http://javascript.crockford.com/code.html

Dav Glass: "Rich Text Editing With YUI":

http://video.yahoo.com/watch/2359450/7378948

Nicholas Zakas: "Maintainable JavaScript":

http://video.yahoo.com/watch/568351/2820297

Joe Hewitt: "Welcome to Firebug 1.0":

http://video.yahoo.com/watch/111597/1755924

Tue, 07 Feb 2012 at 21:33:50 GMT Link


12.Trevor Gryffyn said:

Chris.. I started following you (in general and later on Twitter) because I saw you posting intelligent responses to PHP General. I spent a good bit of my earlier PHP days answering questions on there as well. I found that I learned from solving problems and other people had problems I didn't have so it made for a good exercise.

In addition (and a few +1s) to what's mentioned above:

Firebug for Firefox ( http://getfirebug.com/ ). Chrome's developer tools are ok, but I still prefer Firebug. Also there's FirePHP ( http://www.firephp.org/ ) if you want to keep all your debugging nicely hidden and and in one debug console.

JSLint or JSBeautifier ( http://jsbeautifier.org/ ) - Especially helpful for making ugly single line JSON data readable.

And after you learn how to do things the hard way, definitely check out one of the many amazing JS libraries like jQuery ( http://jquery.com/ ) (my preference). Tons of great plugins/extensions for it and they basically attempt to fix (and make cross-browser friendly) whatever's messed up in Javascript but also they leave alone anything that doesn't need fixing. I'd do severe bodily harm to myself if I had to work in pure JS without something like jQuery to help. I like to learn to do things the hard way then earn the right to do things the easy way. But no sense raising your blood pressure doing things the hard way forever.

Prototype ( http://www.prototypejs.org/ ) and I guess Mootools ( http://mootools.net/ ) are also popular JS libraries.

Lastly.. because I love "if you know how to do it in one language, here's how you do it in another" methods of learning... php.js ( http://phpjs.org/ ).

Tue, 07 Feb 2012 at 22:03:24 GMT Link


13.Trevor Gryffyn said:

(forgive the lack of hyperlinks in my post.. didn't refer to the style guide first)

Tue, 07 Feb 2012 at 22:05:10 GMT Link


14.Tobias Sjösten said:

Maybe solving some JavaScript koans could help teach the language?

Wed, 08 Feb 2012 at 04:11:08 GMT Link


15.Clark Sell said:

Check out Cody Lindley's book JavaScript Enlightenment.

http://www.javascriptenlightenment.com/

It's really really well written.

Wed, 08 Feb 2012 at 14:05:22 GMT Link


16.Sarfraz Ahmed said:

Also here are some great blogs you should really subscribe to when it comes to advanced javascript:

javascriptweblog.wordpress.com

perfectionkills.com

www.adequatelygood.com

Sun, 12 Feb 2012 at 08:50:16 GMT Link


17.Sarfraz Ahmed said:

I am joining you :)

http://sarfraznawaz.wordpress.com/2...ing-javascript/

Mon, 13 Feb 2012 at 15:42:07 GMT Link


18.Simon Booher said:

That's one of my goals this year too, good luck!

Thu, 16 Feb 2012 at 19:40:05 GMT Link


19.Mohamed Ramadan said:

Do you know that when you talk about something loud and tell the public and everyone around, you trick your mind into thinking that you've already accomplished that goal.

It's not about inefficient learning, it's about keeping it secret.

I guess you've stopped the process of learning just a few days after your post, am I right ?

Sun, 01 Apr 2012 at 10:12:40 GMT Link


20.Chris Shiflett said:

Mohamed, I find that announcing my goals has the opposite effect. It helps me stay motivated.

I first learned about this approach to motivation from a book I used to train for my first marathon. The authors recommend picking a marathon and telling everyone you know that you're running it. This presents an obstacle to backing out, because you've put yourself on the hook.

Time will tell if it works for learning JavaScript. So far, so good. :-)

Mon, 02 Apr 2012 at 20:24:16 GMT Link


21.Nabil Kadimi said:

My goal for 2012 goal is to improve my skills in PHP, this is why I subscribed to your feed (like Jason Lengstorf suggested) hoping that I can keep up with you.

Sat, 26 May 2012 at 17:45:50 GMT Link


Hello! What’s your name?

Want to comment? Please connect with Twitter to join the discussion.