Today i found the single greatest tutorial site for learning programming; Rails for Zombies!
(Go check out the video on the homepage)
While the awesomeness of adding zombies to anything should be obvious - Pride, Prejudice and Zombies for example - in this case it is awesome for learning.
If you have ever learned any programming language you should be familiar with the cliched "hello world!" example, unfortunately in most 'learn to program' books the examples don't get much more exciting than that. Infact a lot of books on programming don't even get to that stage, instead they have some arcane and obscure steps that you have to get through to even start programming. You can fall at this step for a number of hard to identify reasons which cannot be easily troubleshot in a book. The same is true once you actually start programming the examples, from being on a different version of the software to having a single symbol in the wrong place, your program might not work for a non-obvious reason.
Based on the above Rails for Zombies gets a number of things right:
1) Unique and light-hearted examples - No more boring twitter / ebay / webstore clone examples, while building an app for zombies isn't that useful (until the zombie apocalypse of course) it is certainly different and entertaining. In my experience humor is highly underrated in education, it is amazing how much more memorable an example is if it is funny.
2) Web-based programming environment - This kills two birds with one stone: 1) The programming environment is just there; nothing to install, configure or otherwise go wrong. 2) You know you are using the right version of the software for the examples.
3) Instant interactive feedback - Nothing is more frustrating when learning to program from a book than hitting a brick wall with an example and not knowing how to fix it. Most books assume everything has gone right and only offer tips on the most obvious mistakes. If you happen to use the wrong type of brackets or put a full stop or a capital in the wrong place it can take hours to find and fix. Rails for Zombies provides interactive feedback on what you are doing (useful error messages) and has small enough examples that errors are easy to track down.
4) Reward at the end - Maybe it is just because i love obscure t-shirts, but being able to order a Rails for Zombies t-shirt at the end is a serious incentive for me to finish the course. A lot of books get more complicated and obscure towards the end and are never finished, at least this gives a good reason to make it all the way through.
At this stage my biggest concern is whether you would learn enough to enable you to create an actual application. Sure installing and configuring ruby, rails and SQLite can be a pain, but if you can't do that then you can't actually build anything. Also Rails for Zombies jumps in at a slightly strange point - CRUD operations - without really covering MVC or databases which i think i would have found confusing without having read some books. I suspect i will be able to comment on this more fully when i finish the tutorials.
I'm sure Rails for Zombies isn't a replacement for Agile Web Development With Rails but it is an entertaining way to reinforce what i'm learning elsewhere.