Advice on Learning RoR

This is an email that I wrote to a friend who asked me a similar
question (though his was more specific to websites than to programming
in general):

                I am using Ruby on Rails, and that is what I recommend
you use. Ruby is a newish programming language. It is extremely
powerful and flexible. It's only major drawback in my opinion is that
is it slower than some other languages. However, the odds of you
noticing this slowness are about zero because the programming language
you use is not the bottleneck. Most likely the bottleneck of your
application will be the database. So first, I recommend that you learn
the basics of programming with Ruby. 'Ruby on Rails' is a framework
for building database-backed website. Basically is does all the stuff
for you that is generic to all database-backed websites. To use Ruby
on Rails, you have to use the Ruby programming language.

1. Learn the basics of programming, with Ruby
a. Homepage: http://www.ruby-lang.org/en/
b. Try it without downloading anything (basic tutorial): http://tryruby.hobix.com/
c. A weird introduction to Ruby (I've never read it, but apparently it
is famous within the Ruby community): http://poignantguide.net/ruby/

2. Learn Ruby on Rails
a. Recommending reading: Agile Web Development with Ruby on Rails by
Dave Thomas
b. Good website: http://www.digitalmediaminute.com/article/1816/top-ruby-on-rails-tutorials
c. Homepage: http://www.rubyonrails.org/
d. A REALY REALY REALY good site for you; aimed at newbies wanting to
learn to build web applications: http://wonderfullyflawed.com/course/
(This might be a really good place to start your search)

                The amount of time you spend on those two tasks will
really depend on how quickly you can get into the programmer's
mindset. For some people it comes very naturaly. You could be building
some simple websites in a little as a few days if you REALLY get it.
On the other hand, you may need to spend a few months working on
examples and stuff like that. You may even want to look into taking a
class (I'm pretty sure there are some available online.)

                The next problem you will face is hosting your
website. Unfortunately it isn't as simple as just pressing 'post'. You
will be dealing with a fully fledged application so there will be
things you need to tweak, etc. This is the stuff that I am still
working through, so I don't have a lot of advice (yet). Honestly
though, I think this will be fairly easy for you to pick up once you
have completed the website. If it becomes super popular, you will want
to hire someone to handle the hosting. This person will take care of
the server and tweak things for performance.

                If the site is going to change over time, then you
will need some sort of version control. When asking yourself if you
really need software to help manage version control, the answer is yes
99.99999999% of the time. I highly recommend Subversion. It is THE
standard. It is tough to learn, but easier to learn than learning how
to program.

3. Learn version control with Subversion:
a. Great free eBook on learning Subversion: http://svnbook.red-bean.com/
b. Homepage: http://subversion.tigris.org/
c. GUI for subversion: http://tortoisesvn.tigris.org/

Other stuff
                By the time you are finished, you will have needed to
learn the following:

· Ruby - A programming language
· Ruby on Rails - A framework
· HTML - A markup language for websites
· CSS - Content Style Sheets, a language for specifying the style-
related parts of a website. (Changing the CSS of a website will ONLY
change the way it looks, not the actual content.)
· Javascript - A language (similar to Java, but a totally separate
language) for doing fancy things on websites. You probably won't have
to learn much of this. Ruby on Rails lets you do all or almost all
using Ruby (which is much easier).
· Subversion - A version control system
· Capistrano - You might not need this, but most people using Ruby on
Rails use it. It's a tool for automatically 'deploying' your website
from you local machine onto the production server. This is extremely
useful if you change your website often.

                That is by no means an exhaustive list of the
technologies that you will use, but they are the main ones. The great
thing is that they are all 100% free. On top of that, there is a great
community of people building Ruby on Rails websites. They are very
good with helping other people learn. There are tons of free articles
and HowTos.

One last resource: http://pine.fm/LearnToProgram/