[Note: parts of this message were removed to make it a legal post.]
Hi guys,
I want to be a professional web developer using Ruby. Where should I
start from? give me a roadmap or some recommeneded books. It would be
helpful if you tell me step by step what to learn first and then what
and vise versa..
Thanks.
To do Ruby on the web, you are basically talking about Ruby on Rails. I
would suggest starting with Sinatra, because it is very accessible, and then
when you feel comfortable with it, moving to Rails. To learn Sinatra, go
pick up the peepcode (
http://peepcode.com/products/sinatra), go through it,
and then read the "Sinatra book" (
http://sinatra-book.gittr.com/). Write a
few simple applications with it, then go for a medium sized one.
After that, move to Rails. To learn Rails, watch a few of their screencasts
(
http://rubyonrails.org/screencasts) so you can get a feel for how things
work. Then read through the guides (
http://guides.rubyonrails.org/) which I
think are better than any book. While doing this, re-implement your Sinatra
projects in Rails. Think about things you would like to add to it to make it
better. While reading the guides, take notes, that is an effective learning
tool. And think about how you might use whatever you are reading about at
that time, in your application. How you could go back and make something
better, how you might approach the next part of your application, etc. That
will help you translate the material into something you already understand,
which forces you to process the information (as opposed to reading it and
forgetting it). Looking at the screencasts, I see they have an interactive
site now that is supposed to help you go through it
http://railsforzombies.org/ it's new so I haven't tried it, but it might be
a great resource (though I really want to point out, again, that the guides
are amazing). And lastly, when you have specific things you want to figure
out how to do, they are often covered in a Railscast (
http://railscasts.com/).
I subscribed to them on iTunes, and then download the ones I am interested
in. You need to have an idea what you're doing before you can get anything
out of Railscasts, but they are a great way to get very focused
comprehensive examples.
Now, while I'm unimpressed with other people telling you to go learn math
and Scheme and go to school, there is a good point behind their suggestions
that learning about Rails doesn't constitute learning how to program. So you
need to challenge yourself to learn problem solving techniques. You can use
math to do this, but I'm suspicious as to whether this is necessary. My
experience was that it took an exorbitant amount of time, with a lot of that
spent learning the math rather than the problem solving, and now it has been
a couple of years and I don't remember any of it. If the only lasting thing
that math has to offer is problem solving, then I suspect you can use
programming instead (you will have to push yourself). Look for programming
problem solving sites, there are a number that are decent, but most aren't
that great for Ruby. If you want to go the Math route, check out
projecteuler.net (that is where I started programming). I think a better use
of your time, though, would be to go through the pickaxe (
http://pragprog.com/titles/ruby3/programming-ruby-1-9) in order to learn
Ruby itself, while also trying problems from different sites such as
codechef.com (though last time I tried there, Ruby wasn't a tenable
language). I love codingbat.com, though it isn't set up for Ruby. I haven't
gone through Code Kata, but I have heard they basically fit this category,
and are probably much friendlier to Rubyists (
http://codekata.pragprog.com/
).
Find problems in your own life that are interesting to you, and try to solve
them with Ruby. Try to find projects that are maybe 20% beyond your
abilities, and work on those problems, that gives you 80% reinforcing
knowledge you have, while keeping you from getting overwhelmed with the
things you don't know. Then you increase your knowledge by whatever is in
the 20% of the project that is new. It allows you to solidify your base of
knowledge while growing the boundaries outward to new things. Don't be
afraid to fail, that will keep you from trying things that would otherwise
be good learning experiences. It is easier to go forward by doing something
poorly, then analyzing it and making it better. Trying to do it perfect the
first time is much more difficult, and will inhibit you. Projects are great
because they give you real goals to shoot towards, which helps keep you
focused on moving forward. It is better to move forward to the next thing
than to stay on the current thing until you know it 100% There are just too
many things you need to know for you to wait until you understand everything
about everything. You will also find that by pushing yourself in some other
area, you will figure things out such that the next time you come back to
the topic, it will be much clearer than if you had spent the whole time
trying to understand that one thing. You can keep your learning momentum
high by switching to a new topic when you begin to slow down in the current
one (not to say you should abandon your projects, completing projects is
good because it establishes discipline and gives you a mental reward,
helping you validate your learning).
Hopefully by the end, you will know Ruby well, Rails well enough, and
understand problem solving necessary to be a programmer. If not, you can
always try math then, though it might be harder to learn it at the end than
the beginning (because you will feel like you should be learning programming
instead). Or, SICP, which at least is still programming, and presumably will
change the way you think about programming (though I just want to point out
that even MIT quit using this book, and moved from Scheme to Python. Reasons
given by Gerald Jay Sussman, one of the book's authors at
http://wingolog.org/archives/2009/03/24/international-lisp-conference-day-two).
One last point on SICP, even Paul Graham thinks you shouldn't go through it
before you are ready (
http://www.amazon.com/review/R3G05B1TQ5XGZP).
After that (or heck, even during that time), if you want to be on the web,
you will probably have to deal with the front end too (the side the user
sees) and for that, you should know CSS to style your sites, and JavaScript
to do client side work. I don't know either of those well enough to tell you
how to gain that knowledge. Which brings up the point that this is a Ruby
forum, so its a little less surprising that so few of the comments said
anything about Rails. You would probably get more relevant results asking
the Rails forum (
http://www.ruby-forum.com/forum/rails).