Resources for Learning Rails

Here is a list of a few awesome sites offering tools for learning Rails:

PeepCode

Pricing: Starts at $12 for one screencast; Twitter: @peepcode and @topfunky

I bought my first PeepCode screencast back in 2008, before Rails and Merb merged. It’s been around for a while, but Geoffrey Grosenbach does a great job of keeping it up-to-date. There are now a number of screencasts about current topics of interest to the Ruby on Rails community, including Rails 3, Backbone.js, PostgreSQL, CoffeeScript, and John Barnette.

Railscasts

Pricing: Free weekly episodes, additional weekly episodes and revised episodes for $9/mo (RailsCasts Pro); Twitter: @railscasts

Railscasts is great for keeping up on Ruby On Rails, and because it’s free, it’s also great for recommending to people who are curious about Rails but not ready to spend money to help them learn it. Ryan Bates is great at explaining things. He covers a wide variety of topics in his screencasts and presents them in a nice format with code snippets.

Update: since I posted this Ryan Bates released Railscasts Pro, which is fantastic!

Ruby on Rails Tutorial

Pricing: $26 (book), $85 (screencasts), $95 (both); Twitter: @railstutorial

Michael Hartl is a physicist who does a number of other things (see his about page) including Web Development with Ruby On Rails. I’ve watched all of his screencasts; they’re fantastic. He builds a web application TDD-style and teaches many different concepts including MVC and how TDD can help with authorization (which is trickier than authentication IMO).

Rails Apps

Pricing: Free; Twitter: @rails_apps

I always thought that the Rails Starter App templates were cool, but they were missing something: in-depth tutorials and a comparison between the many different templates and quick-start tools. Daniel Kehoe has provided both and many more useful resources in his Rails Apps GitHub account.

Code School

Pricing: Free (one substantial free product), $45-55 (single paid products); Twitter: @codeschool

Code School is a set of tutorials designed to help developers to quickly get up to speed building web applications. Gregg Pollack and Envy Labs have been doing podcasts and screencasts for quite some time, and it’s not surprising that they still do it, because they’re very enthusiastic in front of a camera and a microphone.

keeping up on the new

From time to time I’ve been recording voice memos. I find them to be valuable both when I record them, because I explore thoughts in a different way, and later, when I listen to them. It’s a convenient sort of diary for me. Here’s a snippet from a voice memo I recorded while I was driving from the Raleigh-Durham International Airport to the coast in a rental car, thinking about what I had just resolved to do, which was to learn things in depth, rather than just read web development news:

So, who shall I learn from? I guess, it doesn’t matter that much. What matters is that I learn, that I stick to learning, that I spend my time on real learning and that I don’t get lured into the kind of learning that isn’t that important. Now, it doesn’t help me to read Hacker News, and to poke around into every little thing that comes out…because, it’s rare that I learn about what comes out enough to use it on something, so what value am I getting out of it? Not much. And…it’s real easy to do that, because I’ve been lured into the idea that being a successful programmer is mostly about keeping up on learning everything new—not missing anything.

One poignant memory I have of not really learning something is when I read about rip on twitter. I went nuts about it, and I thought it was really cool that I had twitter and Hacker News so I could hear about it right away. Then, a couple of weeks later, I realized that I had done absolutely nothing besides read the article. I hadn’t even installed it. Meanwhile, in those same couple of weeks, I had spent maybe an hour a day reading articles I found on HN and twitter. I was really busy when I realized this, so I didn’t immediately go out and try it. Chances are, if I had any problems that could have been solved by rip, my knowledge of it would have got me nowhere. Because I hadn’t used it, I forgot almost everything in the article about it, except that rip is like virtualenv for ruby.

Now, a new one has surfaced: Node.js. I read some early articles about Node.js. I’ve downloaded it. I’ve even ran a couple of demos. But what I haven’t done is build anything with it. Now, everyone knows about Node.js, and many of the people who don’t pay attention to new developments like I did, know Node.js, while I don’t. What’s more, people who have been more proactive about learning and participating in open source projects, have people from other communities begging them to try Node.js. I’ve seen it happen. It seems that the information networks of those who genuinely participate in open source are fine without HN or twitter (though they may be enhanced by them).

Studying the discipline of “shipping”

Right now I’m studying the discipline of shipping, in several different ways:

It’s a bit of an obsession, but I think it’s important, especially for me, since none of these things came naturally to me. Also, I think that the best time to learn about something is when you have a seemingly unhealthy obsession with it. If I’d latched onto Ruby on Rails back in 2006…

Screencasts and practice breaks

I’ve seen more than one screencast where the narrator has invited me, the viewer, to pause the screencast to try going through the steps myself. Usually, the invitation is accompanied with the author saying that I’ll learn more if I do.

Of course I’ll learn more, because I’ll spend more time watching the screencast. But will I learn more efficiently? I’m not so sure. Here’s why:

  1. It disrupts flow. The author goes from teaching me something about the topic I’m learning about to talking about something he or she isn’t necessarily an expert about.
  2. It breaks up the screencast if I don’t have a long enough block of time to watch it with breaks.
  3. It makes it take longer to view the screencast more than once. Too long, for me, anyway. I remember reading somewhere in Brain Rules that repetition works better as a memory tool if you repeat something on a different day than if you repeat it back to back. I know this, intuitively, to be true. I also remember John Medina saying that if you vary where you are when you hear something, or what medium it’s in, it works even better. That’s why it’s smart to distribute example code with screencasts.

I wish the suggestion to pause and try following the instructions would come as a little text blurb distributed with screencasts instead of narration. And if, on the second or third viewing, I decided to follow along with every little thing, I would pause more often than the video suggests. So whether I’m pausing or not pausing, I find being instructed to pause to be distracting.

By the way, Brain Rules is a great book. So is Food Rules. They’re written by different authors, and are about different topics, but both are written by experts in their fields, who are also great writers, and both are awesome.

One final point: for screencasts that aren’t immediately relevant to me, but are still interesting, watching them all the way through without trying things makes even more sense. That way I can peruse more screencasts to find the ones that are most relevant to my current interests. I can learn about more tools and domains and better decide which ones I want to work with.