AngularJS seems to be leading the pack of JavaScript MVC (or MVC-like) frameworks. This is not too surprising, considering that it is backed by Google and is one of the easiest frameworks to get started with. I have been exploring Angular using two popular e-learning sites, Codecademy and Code School. Both are excellent sites. So far I have used Codecademy a lot more than Code School, mainly because Codecademy is free, whereas Code School is subscription-based. However, Google has sponsored the introductory Angular course, making it free.
My first experience with Codecademy was very positive. I wanted to learn Ruby on Rails for an internship at Workbar. I quickly got hooked on Codecademy’s Ruby lessons and I completed the entire Ruby track within a couple of days. Learning Ruby was a lot of fun, partly because Ruby is such an elegant and powerful language, and partly because Codecademy does a great job of concisely explaining the concepts and leading the learner through increasingly difficult programming challenges.
My first impression of Code School was not as positive. I worked my way through the “Rails for Zombies” course, one of Code School’s early courses. The cutesy theme song and zombie jokes seemed superfluous. Also, I was not initially a fan of the video-then-challenges format, as a fair amount of the video time was spent explaining concepts with which I was already familiar. (It’s easier to skip over sections of text than it is to skip through parts of a video.) Looking back, though, I have a greater appreciation of Rails for Zombies. It challenged me more than any of the Codecademy material, and its videos did a good job of explaining important concepts and demonstrating the benefits of using Rails (for example, by showing a naïve approach to solving a problem followed by a more elegant “Railsy” approach).
(My favorite introduction to Ruby on Rails, though, is the Ruby on Rails Tutorial book, available online for free. It goes into much more depth than any other free resource I know of.)
Fast-forward to today: learning Angular. Having spent a couple hours on the Code School tutorial and less than an hour on the Codecademy tutorial (so far), I prefer Code School’s approach to teaching Angular.
Codecademy starts out by prompting you to type a few sections of code into the online file-system exactly as they are shown in the tutorial column. Then you press “Run” and the magic happens, and Codecademy follows up with a brief description of some of the main concepts that were used to make the magic work. And I do mean brief. Of course, eventually these concepts get explained in more detail, but who likes typing in code without understanding it?
Code School, on the other hand, presents one or two concepts at a time, with fairly detailed and memorable explanations, then dishes out a few appropriate exercises. To be able to do the exercises without using the “hint” button, it’s important to either take notes or have a photographic memory. Or better yet, build an Angular application on your own computer as you make your way through the videos. This brings me to another strength of the Code School tutorial: from the beginning, it presents all the steps you need to set up Angular (and Twitter Bootstrap) on your own system, assuming you are already running a web server. So this tutorial makes it easy to end up with a working web application that I typed in myself. I feel that the process of building an application on my own computer as I work through the tutorial is one of the best possible aids to understanding and remembering the concepts. A final upside of Code School is that I can buy access to additional content after working through the initial tutorial. But at $29/mo. I’m a bit hesitant to sign up.
So my verdict is:
Codecademy’s AngularJS tutorial may be your best bet if you don’t want to set up a web server on your own computer but want to get a feel for what AngularJS can do. The caveat is that you may not retain enough of what you are learning to build a simple Angular app on your own.
Code School’s tutorial, “Shaping up with AngularJS,” may be a good choice if you have a web server running on your own computer and don’t mind building an Angular app on your own computer as you work through the tutorial. I feel that this approach leads to a greater clarity and retention than you can get from either tutorial on its own.