Over on Quora, somone asked:
What’s the best way for a beginner to start learning Ruby on Rails?
My first reaction was very post-modern: I can’t tell you what’s best for you!
But then I thought about it, just a little bit more.
The truth is, I probably can tell you what is best for you, and certainly for beginners in general. But it’s not the answer you want to hear.
Below is the response I posted on Quora, repeated in it’s entirety for your convenience.
People have many different learning styles, so naming one “best” way for all beginners is difficult. However, there are some basic principles of human nature that might light the way.
Specifically, we know practicing anything gets us better at that thing. We know memory works much better when it is used in coordination with movement or action. We know humans learn quickly by observing other people do a task.
This would seem to indicate that picking up a book, sitting down, and reading it straight through would not result in high quality learning. For some certain people this may work great. I’ve not met many such people.
The rest of us will learn *best* from one-on-one mentoring: sitting down with an expert instructor who understands what we know, and how to communicate relevant, next-step concepts well. Targeted exercises would give us the practice necessary to retain what we learned.
This of course is either fairly expensive or outright unattainable if there are no good Rails instructors in your area (although this works surprisingly well over a screen share).
The next best option might be attending a live training event, such as those offered by Engine Yard or Pragmatic Studios or General Assembly or that $11,000 10-week program. That may require travel, and can therefore also be expensive.
The next option after that would be a live & online training workshop, where you can ask questions as needed, get direct interaction with instructors, and benefit from the community of learners at a similar level.
I offer one such workshop to get beginners over the learning curve: the 8-hour Rails Fundamentals: http://live.ReadySetRails.com
The next step down from that are the Code School videos that contain an interactive component that ensures you are taking the steps of “doing” what you are learning. These videos are fun, accessible, and effective. They lack the ability to directly interact with the instructor, or explore tangents on a whim (which is a good way to reinforce concepts in our brains).
The next lower tier are screencast videos with no interaction. Peep Code and RailsCasts are great resources for this. These videos excel at covering focused topics, and generally give you enough conceptually to dig deeper on your own. Getting to see exactly how someone else does the work builds good patterns in your own thinking. These are especially useful once you are on your way over the learning curve and have the core concepts nailed down.
Another great resource in the ruby community is the blogosphere. From short posts describing the resolution of a single error message to full length tutorials and walk throughs, there is tons of content that you can access when needed or work through at your own pace. As tutorials are updated and new posts appear every day, this is a great source of fresh content.
And finally there are plain old books. My preference is just to use books primarily as a reference (“what’s the method to remove the whitespace from the end of a string? oh yeah, .strip!”). Again, doing a read-through may work for some. Maybe even for you. But it’s not generally recommended.
Lastly, allow me to address the FUD that says you have to learn ruby before learning Rails. In a word, bullshit.
Putting that requirement in front of beginners is an unnecessary hurdle that only scares people away from the joys of building web apps. Rails itself is a complex assortment of conventions and concepts (as detailed here) that need to be understood in an interwoven manner. In a sense, ruby itself is just one of those concepts. You don’t need to be a “veteran” of MVC or REST before getting started with Rails. Yes, if you could motivate yourself to learn ruby on it’s own, some things in Rails will make more sense. But there is no harm in picking them up simultaneously. I did, and many of my peers have done so as well. You can be effective with Rails without an even intermediate-level understanding of ruby.
Take the pragmatic approach. Dive in with some project that will keep you motivated to work your way through the difficulties you will surely face. You will learn best if you integrate as many of these strategies as possible. But if at all possible, focus on finding someone who can assist you interactively.