From: Josh Cheek Date: 2010-11-19T20:38:47+09:00 Subject: Re: Where to start from? --00163630e8695422230495665926 Content-Type: text/plain; charset=ISO-8859-1 On Thu, Nov 18, 2010 at 2:48 PM, Ruby Me wrote: > 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. > > -- > Posted via http://www.ruby-forum.com/. > > 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). --00163630e8695422230495665926--