Yesterday evening I finally wrapped up Code School's JavaScript Best Practices course and I thought my readers might like to know what I think. In general, this is a great course marred by poor challenges, surprisingly poor challenges, but still worth your time.
First and foremost, the content of this course is incredible. For a while now I've been thinking about what it means for a developer to improve their JavaScript skills. To go from a "user", someone who knows basic syntax and can copy and paste code to a "developer", someone who is comfortable with the language and understands performance and organizational principles. I'm not talking about Ninja level skills here. Just good, intermediate level skill levels. I think there is a dearth of material aimed at developers who want to achieve this level and it is something I'm personally trying to help with as well. With that context in mind, this course is exactly what I think developers should be taking. Let's look at the material.
Section one, "The Sword of Syntax", covers ternary conditionals, logical assignments (OR and AND), and Switch blocks. In general, this was the section that was probably least useful to me, but I still found the material useful. Just the presentation of the topics themselves were a bit different and I felt like I got something from it. I do think this section will be the one most folks will skip over, but I recommend going through it anyway. Don't forget you can watch the videos at 1.5X speed to move things along a bit quicker.
Section two is "The Pendant of Performance". Topics cover loop optimization, script execution, general performance tips, and measuring. Performance topics can be very confusing, and sometimes a bit difficult to relate to your own development, but the course does a great job at keeping this material practical, which is an important thing for me.
Section three is "The Crystal of Caution". This one covers comparisons, error handling, and some oddities of the language itself. This section in particular serves as a great warning to the types of mistakes developers may make in their code and not realize until later.
The final section, "The Mail of Modularity", discusses namespacing and modularity. It does a good job of introducing the basics of encapsulation in JavaScript. If you are currently writing JavaScript and discovering that you need help with organization, this will be a great lesson for you.
The speaker, Jason Millhouse, is great. He has a good pace, a clear voice, and a sense of humor. I think he may be my favorite speaker at Code School so far and I'm hoping he has done other courses that I can take.
So, that's the good. What's the bad? In general, I've been very impressed with how Code School handles challenges for its material. I find the questions targeted well, interesting, and just enough of a challenge to motivate you to pay attention well and think before you answer. My experience with the challenges with this course though were very poor. It got to the point where I was dreading the challenges and even considering just skipping them. Let me give you an example of one of the first questions:
Given foo is true, what is the result of name = foo ? "ray" : "beer".
If you had said, ray, you would have been wrong. Nope, the answer is "ray". And... ok... I get it. Including the quotes is a bit more precise, but given the nature of the challenge (type your answer in this box), it seems overly specific and unnecessary. And yes, that's a minor quibble, but it was only the beginning.
Next, I ran into a question where the answer didn't make sense. It discussed an aspect of performance that was not covered in the video. While it was possible I had missed it, I discovered other people had the same issue as well. There is a post on their forums, but what concerns me is that there is no official response yet. Remember, Code School is a paid course, so I'd expect some kind of response on this thread.
How about another example? One of the things Code School does well in their code challenges is to provide an editor where you can only edit in certain parts. So they may show a function and ask you to fix one part of it. Only that part will be editable. It is a nice way to focus your efforts and ensure you don't spend too much time writing code that isn't relevant to the challenge. In general - I dig this. But then I encountered the challenge where I was asked to move a script tag from the head block to right before the body. There were - literally - two places in the file you could edit. So the challenge was - move the line of code to the other place - the only other place. I guess an "easy win" is nice every now and then but that was just ridiculous.
Speaking of ridiculous, towards the end of the course there were a few questions that looked like this:
My ____ is ____ and I ____ about ____ a day when I ___ to the ____ and do ____ after I ____ so and _____. Then I ____ while ____ the ____.
After this were four answers that looked like this: Moo, Zoo, Something, AnotherWord, More, Less, Foo, Etc, OMG, Etc. So the intent is - take each word from the list and see if it makes sense in the paragraph. Speaking just for myself - that made my brain explode and it felt like a horrible challenge. After trying one of these, I simply skipped the rest of them.
I had more examples, but honestly, I can't remember them. Most likely I got so frustrated towards the end that I was probably getting annoyed by things I wouldn't have normally. It was a big disappointment.
However...
Despite all of this, I cannot stress enough how much I enjoyed the video content, and how much I felt that this was exactly the course that a lot of people need. Honestly, screw what I said about the challenges. I really hope Code School takes a look at them, but I wouldn't hesitate at all to pay for the course. I mean, we're talking 20 bucks or so for about 4 hours of material (and that's just one course), so this is a no-brainer.
Archived Comments
You just made *codeschool* interesting for me. Thank you!
@Ray ::
Here's a fantastic online e-book on JavaScript full of great advice and tutorials from @rauschma
Free ... as in IPA's ...
http://speakingjs.com/
I have the book. :) Didn't know it was also free online - nice.
@Ray...
It would be pretty awesome if you were to write a book on JS.... I've always liked how you write ...
I appreciate the praise, but I think I still have a ways to go. I am going to be doing a video series on jQuery. I don't think I've announced that yet, but I hope to have that finished this Fall.
I stand by my statement... I'm sure You would write an excellent book on JS :)
_"I am going to be doing a video series on jQuery. I don't think I've announced that yet"_ you have now... ;)
Hi Raymond,
Saw your review come across the pipeline, and wanted to stop by and offer my thanks for your balanced and useful assessment. We're always trying to get better, and your constructive feedback is valuable to us in that process. You have my appreciation both for taking the course and for affording it a perceptive eye tuned toward improvements.
We have used JSBP as a way of testing new challenges that serve the diverse learning styles in our learning community. The new language-based challenges are used to serve the linguistic modalities of intelligence that likely exist within a significant component of our students. You've probably heard of these in some commonly cited educational research on theories of learning, i.e. Howard Gardner's popular framework, and other close derivatives.
To attract students with different learning styles, and build within them a confidence that they've made useful knowledge progress, we've tried to use research to strike a balance between exercises that build upon the obvious spatial and logical components of learning code, and other exercises that use language-based skills to reinforce conceptual material, employing methods that have had empirical success.
With that said, some challenge styles are certainly not everybody's cup of tea. We take the success metrics associated with these challenges seriously, as well as helpful reviews like yours, and make modifications accordingly.
I'm much obliged to you for your time, energy, and thoughtful consideration. Thanks for hanging with the course.
Jason
Interesting. Well, it definitely was different, and perhaps part of my problem was that it *was* different and will take time to get used to. :)
Codeschool is really amazing and it’s fun to learn there. But Pluralsight recently acquires codeschool so this is going to aeffect codeschool a lot. Meanwhile you can enjoy Codeschool 9 dollars trial offers for the first month. http://webuilddesign.com/en...