Aston J

What the hell is happening to Rails? Answerback.

Posted on: June 18th, 2011 by AstonJ 21 Comments

This is an answerback to the recent ‘What the hell is happening to rails?’ post by Steve Coast. He says Rails has become too hard/advanced for beginners, and recommends they ditch learning Rails 3 and go with an older version:

If you want to learn rails, don’t get the latest pragmatic programmers book. Go and get the 1st or 2nd edition. Get an old copy of rails and ignore all this. Once you’ve figured that all out then upgrade and expect to spend the same amount of time learning all the new stuff. You don’t save any time jumping to Rails 3+. You will love rails if you begin at the start like we all did, but you might hate it starting off with 3.

I disagree – in fact I strongly recommend you don’t take Steve’s advice or his post too seriously.

“Rails has become too big/advanced”

There are plenty of learning resources out there that teach you the basics of Rails 3 without bogging you down with the more advanced stuff. Lynda.com’s Rails 3 Beginners Course is a perfect example of this – there’s no testing, no ajax – just the rails basics. And for someone coming from PHP (and a PHP beginner I hasten to add) I can tell you it makes perfect sense. Even the things that never really made any sense in PHP, do now.

“Rails n00bs don’t want to learn”

He seems to infer that newcomers to Rails are somewhat of an inept lot, unable of (or wanting to) learn new things. He’s wrong again.

People come to Rails because they want the best web framework. Not the easiest. If that were the case they’d stick with a framework in their current language – as it would be ‘easier’ not to learn another. Therefore I would strongly argue people coming to Rails are more than prepared to learn new stuff – because they know it will be worth it in the long run. At least that’s what I’ve found and I’ve mingled with a lot of fellow Rails nubes. Perhaps it would actually be worth talking to nubes before speaking on their behalf, Steve?

People come to Rails because it’s hawt!

And that shouldn’t be diluted. The core team needn’t worry too much about holding things back because of newcomers… because there are teachers and educators out there that know how to teach Rails to people of all levels. That’s why you have beginners courses like the lynda.com one, and advanced ones like one at codeschool.com (they also have one for more advanced beginners too, the infamous Rails for Zombies).

So everything’s perfect!?

Nothing is perfect. Improvements can and are still being made to Rails, and if you were to ask which framework is perfect – I’d say, none, but Rails is the closest. See: What’s so special about Ruby on Rails? to see why. That’s why it’s so popular. That’s why people think it’s worth learning. And that’s why they’re willing to put the effort in to learn it. Perhaps Steve’s forgotten just how powerful and how much of a motivator that something special is.

Tags: ,
  • http://buddylindsey.com Buddy Lindsey

    I can’t exactly speak for Steve, but to an extent I agree with him only so far as about sass and coffeescript.

    I started out learning with rails 3.0, actually 2.last but 2 weeks later 3.0 dropped. It wasn’t too bad for me because I was already familiar with web MVC frameworks like asp.net mvc and php’s code igniter.

    Thinking on if I came in from complete scratch, it might be a bit much. The fortunate thing is you can make it as simple and as complex as you want. I know I do things a lot different now then I did in the early days. If I looked at my code now back when I started I would be confused and freaked out. So with that in mind I can see how the conclusion can be made that it is too difficult.

    Overall I can agree with you for the most part.

    • AstonJ

      Hey Buddy,

      I starting looking at Rails while it was in v2, but decided to wait for 3 before learning it – because I felt that would be the most efficient use of my time (as it was just around the corner anyway). I didn’t want to have to learn 2, then go over stuff just to update myself for 3 – that just didn’t make sense to me.

      If you choose your learning material carefully 3 really isn’t a problem – the lynda.com course is perfect for beginners as it covers just the nuts and bolts of Rails. No SASS, no Coffescript, no Ajax no fancy stuff. However it introduces you to MVC and lots of other basics that you might be missing from, say, PHP. it really is a great introduction.

      I would argue learning CoffeScript is actually better for newcomers than having to learn Javascript – JS is not an easy language and so it is more likely to put noobs off. I actually haven’t got around to learning CS myself yet – but it’s something I plan to. And if you weren’t going to learn JS then you don’t need to learn CS.

      That just leaves SASS – which you can take or leave. However I think most people will pick it up as and when they get time because it just makes a lot of sense to do so. It gives us conditionals and variables :-)

      • http://buddylindsey.com Buddy Lindsey

        I just agree with everyone else I don’t mind it being in the gemfile, but SASS and Coffeescript should be commented out where all you have to do is delete the # for it.

        The reason I think it is a bit much is because learning Rails+SASS+Coffeescript all at once can be a bit much and since it is default people are going to want to try. A lot of people that come to rails already have experience with CSS and JavaScript so at that point all you have to “learn” is rails. From there just added on coffeescript and sass a bit at a time.

        That is really my only beef because I am one of those guys that would have looked at learning SASS and Coffeescript right away, and it would have been annoying.

        • AstonJ

          Tbh, I don’t think nubes would try to learn it all at once. I certainly didn’t – in fact I remember hating having to go through the TDD parts of tutorials and kept thinking I wish they’d just cover the basics as this is meant to be aimed at beginners.

          I hear ya with regards to them being commented out by default – but the good thing about them not is is it becomes accredited – which in turn promotes adoption. That increases userbase and popularity… which usually means more updates and better maintained.

          Like you said for those that really don’t want it they can comment it out – not really such a big deal to do that tbh (that’s why I just don’t get their reasoning).

          I actually covered this when there was a brouhaha about it originally:
          http://astonj.com/tech/coffeescript-sass-and-rails-3-1/

  • http://startedlate.com Jason Carpentier

    I think Rails 3.1 and the direction Rails is going is exactly what I signed up for as a framework i wanted to learn. It’s always advancing and forcing me to learn new things. If I wanted to learn something that never really changed I’d of picked a much different framework then Rails.

    When I don’t need all the fancy extras and I wanna bust out a simple site like http://willitfreezetonight.com I use something more simple like Sinatra.

    I think the Rails team needs to keep doing what they’re doing and learning from situations they’ve been through and having its community learn with it. As a Rails Noob and constant student I totally dig that about Rails.

    • AstonJ

      Agree with you Jason – Sinatra is great for when you don’t want everything that Rails can offer :)

  • http://excid3.com Chris Oliver

    On one hand, encouraging these new languages and technologies is good. It provides a well curated set of tools that they consider best practices, and once you learn them, you can build anything incredibly quickly.

    Now on the other hand, if you come in with Rails 3.0.x instead of 3.1.x, you’ve got a much simpler set of tools to learn. You don’t have to learn these abstractions to things like the actual Javascript and CSS that browsers interpret. I don’t think doing raw JS and CSS actually is any easier for a newcomer, but it appears daunting if you’re already accustomed to doing without SASS and CoffeeScript.

    People dislike change. I am somewhat biased against moving to CoffeeScript simply because I’m not fully aware of its benefits and yes, it is a lot more for me to learn, but I can use my existing experience with JS and apply it to CoffeeScript. It’s not like we’re swapping it out with something completely different.

    Learn things as you need them. Stick with the basics until you have to branch out, but always keep an open mind.

    • AstonJ

      Some excellent points there Chris – especially like your last bit of advice – stick with that and you won’t go far wrong :)

  • http://buddylindsey.com Buddy Lindsey

    I have been trying to figure out what has bugged me about “gushy” posts when it comes to frameworks, this is probably better suited for a blog post, but to me rails is no different than other languages and frameworks.

    Ruby is a fun language and it has its uses. It makes life easier in a lot of ways doing specific tasks, but it has its draw backs. The more I get into ruby the more the love affair has gone away. Same thing with C#/.NET and PHP.

    I remember starting with PHP and doing everything in “raw” php. Then I found a framework, don’t remember what it was, and life got a bit easier. They added new features I learned new things.

    Shortly after I moved to ASP.NET 2.0 when it first came out, that was a long time ago, and wow it was a lot different. I mean viewstate on the web, just wow. It got me to think differently and learn differently.

    I then did a couple of contract jobs using PHP again and moved to the Code Igniter framework, based on RoR, but they did a few things their own way. I learned a lot about OOP in php which I had yet to actually pay attention since the hacky 4.x version of OOP wasn’t worth a crap.

    I then moved back to ASP.NET MVC, this was a radical change. I mean strongly typed view models and ORM’s coming out the wazoo to choose from. ASP.NET MVC 2.0 also changed quite a bit and required rethinking about site security.

    I then moved to rails and have found it fun and interesting and learned a lot of new things. However, like with all the others I never “fell in love” with it. I don’t think it is the end all be all of the development world. That is why I take a very mellow tone when I see “gushy” posts about frame works and languages.

    Don’t get me wrong I’ll be the first to cheerlead something if the only reason they are against it is because they were told to be. However, for the most part ruby on rails, to me, is the same as ASP.NET and PHP. Tools to get the job done, and how they take a direction I don’t generally care.

    The exception though is when they move fast and then start mocking people, and yes DHH mocks people, about their concerns. Overall I don’t care about the SASS and the Coffescript. I just think for version 3.1 it should be commented out in the gemfile then in version 3.2 uncomment it. That way people have more time to take a look at it simply because its in the gemfile. That being said if they went from version 3.x to version 4.0 they can make all the changes they want because to me major version numbers means you can do whatever you want.

    The reason I am for that appraoch is look at how they moved to jQuery. They took a long time to move from prototype to jQuery. However, the product had time to grow and be seen by a majority of people as a good product to have as a default option in Rails.

    So overall I don’t care about major changes, just how they are done, unless you are addressing a HUGE problem.

    • http://excid3.com Chris Oliver

      “That is why I take a very mellow tone when I see “gushy” posts about frame works and languages.”

      I think something to note here, that for me as well, I understand your feelings on these strongly opinionated posts. Looking back on how quickly hardware and software evolves you can make a pretty fair guess that Rails will not be around forever. Something new will come out and will make development easier and more efficient, at which point we will all migrate away. it’s not so much about the framework itself, it’s about pushing forward and creating better things.

      • AstonJ

        Wanna quickly say I don’t think anyone is suggesting Rails will be the best forever – but just arguing it’s the best right now. And judging by recent changes… I think it might be for the foreseeable future too – because it’s gearing up to face the challenges of the future :)

        • http://gduplessy.com Georges Duplessy

          I don’t agree it’s the best right now actually. It’s the best for “us”, the ones who are using it, loving it or otherwise. But for someone else CodeIgniter might be the “best”. But that’s just the way I see it.

          • AstonJ

            I think it’s fair to say it’s the industry standard – the leader – that everyone else seems to want to copy :)

    • AstonJ

      I had to read my post again to see what was so ‘gushy’ about it :p I’ll come back to that in a mo tho. You make some interesting points…

      You say they’re all tools to get a job done. That’s like saying all cars are vehicles to get you from a to b. They all do pretty much the same job, but they all have certain characteristics, qualities and strengths that make you choose one over the other. Rather than regurgitate why Rails is ‘the best’/my favourite framework, check out my previous post ‘What’s so Special about Rails’ (http://astonj.com/tech/whats-so-special-about-ruby-on-rails/) it goes into detail explaining why I hold the view I (and many others) do.

      You commented about things moving fast and DHH mocking people. Again I would have to disagree with the former. I don’t see why things progressing is a bad thing, or what has changed so much that makes it seem like it’s moving ahead way too fast. I would point out though, that Rails is aimed at the top end – it is the industry standard that sets the bar and others follow. So it _has_ to keep moving ahead (just like the web is – html5/css3/js is the future, and Rails is keeping up), and most of us who signed up for it want that. I don’t want to use second best. Or a tool that is outdated. If people do, then I would say they’re with the wrong framework.

      Regarding DHH mocking people – tbh I think I would too given that practically nobody has come up with a good reason why SASS and CoffeeScript should not be added. I covered it in a previous blog post – but the main things seem to be ‘its your choice not ours’ – ‘it’s harder for nubes’. These are not valid reasons imo. Rails is opinionated software anyway (we all know that right?) BUT more importantly, if people don’t want to use the defaults they don’t have to – nobody is forcing them to, and nubes can defer learning the less important stuff till later. I think that’s what is pissing DHH off and I must say it riles me too.

      What are the _real_ reasons people are miffed? Because the reasons I’ve heard are very very weak. Are they just pissed because they have to learn new stuff _to keep up with everyone else_? Are they’re worried about being left behind but can’t be bothered to learn new stuff? Or do they think these new defaults will play havoc with their competitive edge? The mind boggles – but only because we’re yet to be convinced they have a point.

      You do make a fairly reasonable point about commenting out SASS and CS in 3.1 and uncommenting them in 3.2, however would it really make much of a difference? I’m actually glad we are progressing quicker, and also by not doing that it shows DHH has faith in his choices – which is great for making others feel confident in the choice too.

      Now back to my post being gushy. Must say that made me smile. I think everything I said is backed by rational argument – yes I’m singing the praises of Rails, but backed up anything I said with reasons. Yes people seem to ‘love’ Rails – although I would argue that it’s actually the underlying language that makes them love it (even if some haven’t realised that yet). Which brings me nicely on to Ruby…

      I don’t have as much experience as you when it comes to languages. But I love Ruby. Other languages just annoy the hell out of me. What’s with all the stupid trailing semicolons. Brackets. And a whole host of other idiosyncratic things that just seem to get up my nose. I had to make some edits to this (php) blog the other day and what should have been a simple conditional again reinforced my love for Ruby. Other languages just make me go *ugh!*. Anyway just wanted to touch on that as you mentioned it – wait till you see my ‘What’s special about Ruby’ post…. if you thought this post was gushy I hate to think what you’ll think of that one LOL

      • http://buddylindsey.com Buddy Lindsey

        I want to say 2 things first.
        1) Gushy was too strong of a word, but it is the best thing I can think of. Positive is too weak and Gushy is to strong, i need to find a word in between that.
        2) I don’t mind disagreement. What I do mind is mocking from a “I am better than you” attitude. DHH does the later. Granted he has a lot have a huge ego about, but if someone disagrees you should just give you reason and move on. DHH tried to start that once with rspec and it backfired on him, so DHH isn’t always right, not that you think he is.

        I don’t think that Sass or Coffescript is a bad thing, I don’t even think it is bad that it is being included by default. Again I just would have approached it a little bit differently. Take nokogiri and unicorn for example. I honestly would probably have never found out about them if they weren’t in the Gemfile. Now I use nokogiri and am aware of unicorn. I think that same principle can apply to version 3.1 to 3.2 of rails. It gives more time for people to look at it and adjust and gives more prominence to the project. Again people can just comment it out, but they can also do that in 3.2. All it is is a different way to approach it.

        I am going to be a bit contrary now. You say the reasons against SASS and Coffeescript are a weak, but I say the reasons for are weak as well. Its in because DHH is wants it and he is the benevolent dictator of rails. I think rspec should be in the gemfile by default because a lot of people are using it and it is very useful. It would be moving forward for the developers to add, but I don’t see it being added anytime soon.

        Now you probably get the feeling I don’t like DHH and you are right. From the persona he puts off in public. I do not like him because he seems, very much, like a rich arrogant SOB, but I will take what he does and weigh it beyond my opinion of him.

        Also here is a question. This is a tough one and think about it without precondition to any preference at all.

        What is _more_ important in a framework getting things done and making life easier or having an advanced web framework that helps the established seasoned developer get things done quickly and efficiently.

        Rails is moving to a tipping point where it needs to decided which one it is. Both are very important both are fine. Taking rails in that context if we are moving to the later it needs to go whole hog and hold no precondition that it _is_ easy for new people. If it is going to be the former then all the things of the later need to be available and easy to engage, but not at the for front. If it is going to be nube friendly then the most basic workings should be what you begin with.

        I started thinking about this when I saw an ASP.NET MVC framework called FubuMVC and they will tell you outright it isn’t for beginners and never will be. That is why people are so productive with it who use it. And let me tell you some of the stuff in it are well above my head right now.

        I think in the end we don’t disagree we just view the same thing from 2 different angles.

        • http://buddylindsey.com Buddy Lindsey

          Interestingly enough there is a discussion on linkedin about one of the points I made. Beginner vs Advanced. I think I should clarify my meaning a bit more because it could easily be interpreted wrong. it comes to this part here:

          “What is _more_ important in a framework getting things done and making life easier or having an advanced web framework that helps the established seasoned developer get things done quickly and efficiently.”

          What i mean is do we as a framework for advanced developers or something that new-to-development developers can pick up easily, not necessarily it being built for beginners.

          I think there is a distinction between a framework _for_ new developers, and a framework that helps make things easier for new developers. From talks I have seen RoR has tried to be the later of the two.

          • AstonJ

            Why do you have to choose one over the other? Why can’t we have a framework that is advanced enough for seasoned developers but also accessible to newcomers? I think Rails is just that.

            Like everything, someone learning it should go about it sensibly – as mentioned in my first post there are lots of learning resources out there that help you tackle just the basics. Kevin’s lynda.com course is perfect for beginners – and there are lots of others too. Rails tutorial, Rails for zombies, etc.

            Re your points about DHH, the guys just human, and still fairly young – so I’d give him a little leeway. I’ve had a few discussions with him on twitter (not related to Rails) where we’ve disagreed, and he hasn’t mocked me.

            Re reasons for including CS and SASS, I think it was the sensible thing to do because javascript is extremely important in the foreseeable future of the web – and as JS itself is not a very pleasant language to work with anything that sweetens that is a blessing imo. So whereas on other frameworks the developers might shy away from JS, in Rails they are less likely to. SASS adds functionality to CSS, and as it doesn’t matter if you use plain css – it doesn’t break anything. However, it being there encourages people to use it – same with CS. Hence they seem like fairly sensible choices. I would understand the brouhaha if people were _forced_ to use them – but they’re not.

  • http://gduplessy.com Georges Duplessy

    Ok, seems like it’s my time to comment!

    II think the noob-est Rails guy on here (started in 12/2010) and I agree with your points. The reason I went with RoR isn’t because it’s easy to learn, but because it’s easy to just get started and pop up a framework for a new app (rails new app_name), some models and whatnot.

    Now, when we get to the point of CoffeeScript and SASS, well they’re just choices. Don’t want to use CS? Name your JS files .js, don’t want SASS? Name your stylesheets .css. Problem solved! That would be a beginner’s first choice, IMO.

    And for the “is rails perfect” part, I don’t agree. If rails was perfect there would be no more advancements, no more improvements to do. It would just be. Rails is not perfect, but it’s constantly evolving, moving, and growing. That’s what makes it so awesome!

    P.S: Put an edit button on here, I feel like I’m going to come back on this one and have a “oh-shit” moment ;-)

    • AstonJ

      I agree with you Georges! And the last bit you put is what I actually I meant in my original post – though didn’t really make it clear. Rails is closer to being perfect than the rest but still can be improved upon (as is what’s happening).

      Will look into an edit button – didn’t think they were possible on wordpress :/

  • http://Www.Calmera.nl Bongoman

    FIrst of all, this theme of your site is great? How did you do this? Is this site in wordpress or built with rails. If in rails I really want to learn how to do this styling in rails.

    Last week i managed to build my first app in rails and deployed IT on heroku. As a business analyst and trainer i had no prior programming experience. I could not have done this in any other framework. So rails 3 rocks.

    Now i would be glad to learn from others.

    So what are the next steps? Ajuinen has any tutorials to upgrade my knowledge to the next level?

    These are things I want to learn
    – the most commonly used plugins
    – how to convert your app to an iPad and iPhone app
    – how to add payment providers to your app
    – testing. Because i did not get this yet.
    – making your own plugins. Reusing your code.
    – styling your Apps like 37signals.

    My goal is to make my own Apps (together with other freelance developpers using rails) and sell them as a service to clients.

    So how can you become a netter rails developper?

    I want

    • AstonJ

      Hi Bongoman, thanks for the kind comments about the site. It is a custom design styled into WP – I’ll be moving it to a Ruby solution as soon as I have a new Ruby/rails-ready server (current one is PHP orientated).

      Re your other questions I would suggest tacking one at a time, by reading books that cover them.

      I’ll be doing a ‘best way to learn Ruby and Rails’ post in the future so you might want to pop back.