views:

1400

answers:

12

Background: After taking time to reflect on the answers to a question I asked just yesterday regarding which web-focussed language to learn for a beginner (link) I decided that I would most likely pursue learning Ruby/Rails (since I had already made it 1/3 of the way through a book on it about a year ago and felt like I was able to understand it fairly well).

Today: I was checking out the headlines (1, 2, 3, 4) on Hacker News and leaned that Rails and Merb had merged. To me this sounds great because I really felt like Merb has some advantages with regard to performance and modularity and Rails has some issues in those areas. However, it sounds liek there will be some serious changes in the Ruby framework community over the coming months.

My question is this: Would you recommend (to me, a programming beginner) going ahead and learning Ruby (and Rails) even though it may change significantly with an upcoming merged release? Or should I move toward something else (Python was my second though) to provide less confusion in my learning process and come back to Ruby on Rails when things have settled down?

Thank you in advance for your help.

+4  A: 

If you already liked rails, go for it, there's no reason not to learn it.

From the Rails site:

This is not a big bang rewrite

It’s important to understand, however, that this is not a “big bang” rewrite of Rails. We’re far beyond the time when we could just throw out everything and start over. This is going to be a progressive improvement of Rails that’ll carefully judge new initiatives on their impact on backwards compatibility as well as their general utility.

OscarRyz
A: 

Given that the accepted answer in your last question basically trashes Ruby- in favour of Python-flavoured frameworks, I'm a little surprised you're saying you really want Ruby. Getting through a third of a book then putting it down suggests to me that you weren't really enjoying it.

I'd take his advise and play with django for a few weeks.

Python is an amazingly simple language. It's still as powerful as any other but it's a nice, clean syntax that gives you good code readability at all times.

Django isn't the best documented framework at times but there are books and they do a pretty decent job at steering you around all the major points of interest. There are also lots of fantastic tutorials around the web that make the slightly more obscure things simple as pie.

If you are going to buy any book, I'd stick with The Python Pocket Reference, especially if you, like me a month and a bit ago, know no Python. It's a tiny book but it's possibly the best book I've ever bought. To the point and covers most of the language in under 150 A6 sides.


Now I could have gone an entire post without slinging muck at the other side, but I've certainly noticed a lot of unhappy Rails folks making extremely long blog posts about their doubts in the future of Rails. The creator of Mongrel, most memorably called the Rails steering group a bunch of muppets (paraphrasing, heavily).

Merging with Merb might be cool on a technology basis but it'll certainly be a while before you can use any of the merged features in a stable setting and if it's all based on Rails, you've lost the performance benefits from the underpinnings of Merb. A lot of uncertainty.

Besides... Django kicks Rails' ass on development time and runtime performance.

Oli
My take on the answer from my previous question was that I should try as many different options as possible and make an informed decision as to which I feel most comfortable with...could have missed his point though, I guess.
theandym
For finding out which languages and frameworks you prefer, sure. But for somebody wanting to get into back-end webdev, why not start with the best? Build something that covers the basics (forms, authentication, data listsing, data display) and if you don't like it, try something else.
Oli
I'd just push you towards Django *now* because you'll be even more reluctant to drop Rails once you've poured even more time into your RoR book.
Oli
Django seriously rocks. I like Python but don't think it's the best language (i love Lua); but Django is more than enough reason to use it for everything web-related.
Javier
Regarding zed shaw... he's a terribly smart guy, but I can't help but feel that if he were a python developer, he would have ended up calling all the django developers a bunch of muppets - insert programming language/framework of your choice...
Orion Edwards
+9  A: 

Let me counter Oli. From my viewpoint all his arguments look subjective.

First, as a college student you should aim for two things: the language that suits you, and the framework you prefer.

I've found Rails almost explosively RAD when it comes to getting prototypes and GA (general availability) releases complete. The code is not complex and the language standard, while somewhat esoteric, complements the framework greatly. For myself I've found an almost perfect fit with Ruby on Rails. Coming from a PHP background the full object-orientation features and language-level framework integration makes development far simpler than it ever was in PHP.

Now, for you to find something that fits you as closely as I've found Rails to fit me, you have to try one of the languages, or both of them. From your original post it looks like you weren't all that sincere about learning Ruby on Rails the first time. The resources I'd suggest, that even fit a college level budget, are: Agile Web Development on Rails (3rd Edition), Everyday Active Record (screencast), and either Programming Ruby or The Ruby Programming Language. I never recommend Why's Poignant Guide because it aggravates me so much.

But should you worry about the future? Not yet you shouldn't! These changes are just potentials currently. While yes there seems to be a good number of people fracturing the upper echelons of the Rails community, the current build of Rails is very stable and feature complete. And Rails is 100% documented with no omissions that I've ever seen.

I see Oli touting the performance of Python, but I need to take a moment and negate most that. Something to note is that Ruby 1.9 will soon be here. Yes, I know it won't be stable (initially) but the 25% speed increase will make it much closer in speed to Python, negating the greater half of his argument. As it is, Ruby Enterprise Edition reduces memory footprint by ~33% and increases efficiency by roughly 25% right now. (Imagine when Ruby 1.9 becomes stable and is improved like this!) Plus, scalability isn't always an issue. Usually you should prepare for scalability as you edge towards it being an issue, and only then. (Or when you have nothing better to do with your product, but when do we ever have that much time on our hands?)

I've had no experience with Django, so I can't say if it is or is not faster in development than Rails.

Once you have a good footing in either language and framework that isn't enough to preclude you trying the other. Frankly, I've committed to Ruby in spite of the problems because I like the framework it is now. If things become increasingly problematic in the future ... there's always the option to create a fork. ;-)

To sum it up:

  • Find what language is best for you.
  • Find the framework you prefer.

Then worry about the problems that might crop up. It's best to learn from what you enjoy, so that you learn faster. And later, you can take something you don't enjoy (like a language or framework) and make it something you actually do enjoy.

The Wicked Flea
+1 for mentioning Why's being aggravating. God I just wanted him to shut his mouth show me ruby. No one cares about the crazy inside your head!
DJTripleThreat
+2  A: 

Look, as a colllege student you shouldn't be worrying too much about one tool or another anyway. I've been looking at another question where it's clear the person is asking what they think is a C# question, but really hasn't gotten the whole "object oriented" idea down yet.

Take some time, write a simple application in RoR and using Merb, see what you think of them both. Keep a "research notebook" of your impressions and hat ges well or badly. Then, what the hell, try the same application wih Python and django, and with Python using webapps.

The point is that there is more to be learned here than language syntax. See what works and what doesn't, and you'll be prepared for when you're out of school, and the next Big Thing comes along.

Charlie Martin
+4  A: 

I don't think you need to be too worried about Rails changing in a significant way that will impact you. At this point, Rails has been around long enough and has been deployed on enough big name sites that any big changes from the Merb merge will be at a low enough level that it's very likely you won't have to deal with them unless you want to work at that level. You may be given more flexibility, as far as how you're able to accomplish what you want to get done. But you should be able to do things the way you learned how to do them as well.

Ruby and Rails aren't wacky fringe projects and they aren't going to disappear any time soon. Even before Rails, Ruby had a strong community and it's even stronger now. So, what's important is what platform you can get things done on. If you like Ruby and you like Rails and you find that you're able to accomplish things with both of them, go for it. If you find Ruby to be too slow or the documentation to be insufficient, go for something else.

I was introduced to Ruby through Rails 3 years ago and it was the first language that really got me excited about programming. Since then, I've seen plenty of blog posts and listened to plenty of rants about why I shouldn't be using Ruby, and none of it has changed my mind, because I still use Ruby almost every day to get things done. To me, that's all that matters.

Oh, and one more book to add to The Wicked Flea's list: The Ruby Way. Once you've learned a little bit of Ruby, this book will show you what sets Ruby apart from other languages.

Matt Ephraim
A: 

I think you made a good choice in leraning rails as it's got the easiest entry into the world of ruby for a beginner. Documentation is getting good plus lots of books and blogs to learn from. You'll probably appreciate merb better with a firm grasp of rails too.

JasonOng
+8  A: 

From the announcement it sounds like Rails will still be the base, but bringing in some Merb methodologies/architecture.

I know where you are coming from, though. You want to make sure you are learning the right thing so you are not wasting your time. The thing to remember is, just because you wait 6 to 12 months and decide to learn Rails THEN, doesn't mean you will then know Rails forever. Rails is going to change again and you will have to keep up, just like with any language. If anything, getting started now will give you the experience to deal with changes in the future. It's that "the journey, not the destination" thing... or something :-)

And just to add a few more resources:

  • Head First Rails is coming out very soon. I'm about halfway through and in my opinion it's a more gradual book than Agile Web Development with Rails. At times it feels a little slow though.
  • Railscasts is an excellent podcast for learning Rails.
  • Rails Envy is a great podcast for keeping up with news about Ruby, Rails, Merb, etc.
spilth
I also recommend looking at Peepcode - and envy casts (though these are a little weird..) - its a pay-for product, but their screen casts are really top notch.
Matthew Savage
So are railscasts... and they're free.
DJTripleThreat
A: 

Read some code, watch some screencasts, and make up your own mind. The important thing is that you pick a tool you like, not a tool people recommend.

August Lilleaas
+2  A: 

If you consider yourself a Ruby newbie, then you should try Ramaze. It is just as powerful as Rails and Merb, but you write a heck of a lot less code (just look at the hello world example on the main page), and you will learn and write "purer" Ruby than you would with Rails. I would also say that you will grasp Ramaze more quickly.

Some links:

Pistos
A: 

Having spent a great deal of time in the last year working with RoR and Django, and noting that you're a programming beginner, I'd definitely recommend starting out with RoR. Not that Django or Python for that matter are hard to learn or anything, Rails in general is just easier to grasp at the beginning. At least for me and a couple of other people I know.

Once you have learned Rails, and I don't mean master it, just make a couple of complete projects on it, get a good grasp of the options you have to work with, I'd also definitely recommend learning Django. As the others have said, it's mostly a matter of opinion and sometimes of the kind of project you're working on, but learning frameworks in general is kind of easy, and the more you know, the better it'll be for your future.

Don't worry too much about which one will still be in use years from now. You'll learn in time, as a programmer, you'll have to be constantly reading and learning new languages and frameworks, the thing is just to get soaked up in what's being used today.

Dave
A: 

I would highly encourage you to learn Rails. As a beginning web language it may be initially difficult to get your head around some of the concepts. But the payoff is huge. Ruby and Rails both promote highly prized programming techniques, RESTfulness, DRY code, readability of code, object oriented programming, the MVC architecture, etc.

Developing in Rails will help engrain these techniques in your coding. If you are able to use these methods whilst programming you become easier to work with and more attractive to employers (I don't know if this is what you are going for but it is always a plus).

You can probably learn these techniques elsewhere but Rails has one of the largest and most active communities around. If you have a question about some thing there are thousands of blogs, forums and IRC channels where you can make your inquiry.

Have fun!

vrish88
A: 

I'd recommend as so many of the Merbness is getting into Rails recently.

chuboy