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: Ruby Programming Language 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: Top Ruby on Rails Tutorials - Digital Media Minute 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: wonderfullyflawed.com may be for sale! (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/