views:

256

answers:

5

I'm planning on taking the time to actually learn Ruby on Rails in-depth (I've previously done some very minor dabbling with it) so I can hopefully reinvent myself as a Rails developer.

The issue I run into though is that there are a fair bit of related technologies that are currently used in the Rails community, and I'm not sure if I should learn the whole shebang or focus on learning Rails with the defaults first, and then branch out into the additional stuff.

For example:

  • Templates. I took a look at Haml and it looks really cool (shouldn't be hard to learn either).
  • Testing. I've wanted to learn test driven development for a while now, but the "next big thing" in Rails-land seems to be behavior driven development with RSpec
  • Javascript. I'm not sure if I should stick with RJS or use something like jQuery which seems to be converting people.
  • I've never really used version control much. Rails seems to be using Git for most of it's projects.

Basically I want to learn Rails "right", but there seems to be a lot of different ways that I could go. Should I ignore the "variants" and focus on the Core stuff until I've written an application or three (e.g. core, unmodified Rails; RJS w/Prototype and Scriptaculous for Ajax, regular Test::Unit for testing, ERB for templating, Git for version control), or should I try to pick up some of the variants along the way?

+1  A: 

I'd recommend starting out with the basics of Rails. Haml, RSpec, jQuery, and Git are all great things, but if you try to learn it all at once, you may become overwhelmed.

Matt Grande
I tried that once and that's just what happened... I got caught up with trying to learn RSpec and a few other things and ended up dazed and confused.
Wayne M
+1  A: 

I would start with the defaults first, as I agree with Matt's comment that trying to learn it all at once would be overwhelming.

Plus it may turn out that depending on your applications you may or may not need jQuery, you may be happy with the default testing, and there are tons of ways to do templates so starting with ERB to get the basic understanding of how the view/templating works is a good idea.

Once you get more experience and know exactly the requirements you will have for your application(s), you can then more easily pick up and swap out some of the variants.

Nick
+2  A: 

If you want to do well in the rails world you should plan on learning (and relearning) things on a regular basis. It isn't as hard as it might sound, but it is important. I'd suggest you make a list of things to learn, and just work your way down it doing by getting an hour or so of hands-on-time with something new each day. If you feel like there's more to learn (or that the subject is in flux) throw it back on the tail of the list to revisit another day.

A starter list (yours plus a few you didn't mention), in no particular order:

  • erb
  • gems
  • acts_as...
  • test driven development
  • git
  • rspec & behavior driven testing
  • javascript
  • prototype.js
  • jquery
  • sql
  • rail's finders
  • rake
  • the rails console
  • plain old ruby
  • duck typing
  • ruby's metaprogramming facilities (how the magic is done)
  • css
  • rails generators

And so on and so forth. As you're going through one and come across something interesting, throw it on the list.

The point is, if you try to take a narrow view you will probably make life harder on yourself and learn slower than if you make a commitment to perpetually, steadily expanding your horizons.

MarkusQ
+1  A: 

I've been a full time rails developer for over a year now and what you use really depends on what kind of team you end up on. I've barely used RJS, have never used RSpec, but I use git, jquery and rails every single day.

My Advice: stick with rails for at least a few months. There is plenty to learn in the framework alone. I would consider ignoring RJS as I feel like it's going out of "fashion" as developers trend towards jQuery.

Regular Test::Unit is great, although I like to add thoughtbot's Shoulda to provide some testing macros that save a whole lot of time (consider ignoring all the Shoulda context stuff though).

Learning git feels pretty important IMHO, mainly because it's a great and is gaining quite a bit of popularity. It also enables you to feel comfortable using github, which can be a big advantage.

efalcao
Git is definitely something I'm going to pick up along the way, since I haven't really used version control and I have the Pragmatic Programmer's book on source control with Git.
Wayne M
A: 

Git is important. Make an account on github, install git, and get used to it - you need some kind of version control, might as well make it the new cool buzzwordy one.

The other stuff, not so much. Bang out a few applications and then add them in one at a time.

Sarah Mei