Learning to write software is such a personal thing that it's almost impossible to give you an answer that will definitely suit you.
Having read all the replies so far I have to say that there is not a single incorrect response.
I can see how every single reply even the contradictory ones have something to offer.
What you need to ask yourself is how passionate you are about development?
If you just want to knock out a few websites and have a play around then AWDWR would get you started but I would not recommend Rails as a starting point for any serious developer as you have to learn not just one language but 5, namely HTML, CSS, SQL, Ruby and Rails (Rails does bring it's own flavour to the ball game).
On top of that you then have to understand how it all fits together. It's a mamoth task and learning to do it all in one go properly almost impossible.
I have thought long and hard about this question and asked myself where I would like to start if I were starting from scratch now?
I found the answer but before I say what that is, an explanation of what I would be looking for might help.
From my point of view I'm very passionate about technology. Rails/Ruby is the latest addition to my arsenal of over 14 computer languages now and one of the best combinations I have come accross.
If I were starting from scratch I would want to be taught how to design good solutions in an Object Oriented environment.
I would want to be using the best commercially viable OO language that would give me employment opportunities. Currently c# fits this bill but Ruby is rapidly becoming the language of choice in commercial environments. Where skill sets fit there are a lot of new projects being started making use of Ruby in preference over c# in the commercial world.
I would like to learn how to deal with just one language and one database environment and I would want to learn how to do good database design.
I would want to learn how to find the best solutions and to understand all the considerations that have to be taken into account when dealing with good interfaces for end users.
I would want to learn how to write maintainable and understandable code and I would like to learn in a consistent environment.
So what language would I use if I were starting out now?
Five years ago I would have responded with Delphi.
Three years ago I might have been torn between C# and Deplhi because by then Delphi had majorly shot itself in the foot and C# would make you commercially attractive.
Now, today, I have to say without any hesitation that I would want to learn Ruby.
It's such a fabulous language and is fast becomming a commercially viable option plus it ticks all the above.
So my personal recommendation
1) If I just wanted to play around then get AWDWR and knock up a couple of sites, have a play and enjoy.
2) If you are at all serious about this then forget about Rails for the minuite and start with Ruby. Get yourself on a good software design course at your local uni or college (There are some. Honest) and pick up whatever reading material that suits your style. Learn how to write good code and learn what makes the difference between a really good programmer and a jobbing coder. Take pride in your code and treat the whole experience as learning how to create fantastic works of art that others will love to work on.
I hope that helps in some way.
Last edited by jamesw (2009-09-13 00:46:59)
What you want and what you need are too often not the same thing!
When your head is hurting from trying to solve a problem, stop standing on it. When you are the right way up you will see the problem differently and you just might find the solution.
(Quote by me 15th July 2009)