Live data from Hacker News

Rails Is Not For Beginners

horsesaysinternet.com

21–30 of 79 posts

Re: Rails Is Not For Beginners

#21
I usually say this about the types of webframeworks they are:

Rails - > great for intermediate people who see benefits it brings. Great for pretty straight forward projects for beginners that can follow a book.

Sinatra -> Great for beginners to "just get something working". Not great if someone needs everything decided for them. Awesome for advanced people. Awesome for non-standard projects.

Padrino (Why don't we hear about this more?) -> kind of the sweet spot between the two. I honestly think that Padrino should rightfully start taking mindshare. I don't know why it hasn't.

Re: Rails Is Not For Beginners

#23
the fact that rails is not for beginners is true (and main developers say so), but suggesting for beginners a smaller framework that gives you less and hence requires you to do more, know more and make choices that rails has done for you is simply nonsense.

Re: Rails Is Not For Beginners

#25
This article rubs me the wrong way. Rails is good for beginners because it has more tutorials than probably any other web framework ever. That's the main metric that matters for a true beginner.

The fact that Rails has a ton more features that will take longer to understand than Sinatra is neither here nor there. If you don't need those features than Sinatra is the obvious choice, if you do need them then Rails is the obvious choice. This is orthogonal to the user's experience level.

Re: Rails Is Not For Beginners

#27
If you optimize a framework for beginners, you're optimizing for learnability. That's great for the first few days or even weeks of learning. But once you're past that, it's not so great. What you care more about is the usability of the thing once you know it. There are plenty of cases where learnability and usability are in conflict. Letting learnability win is a short-term relief.

If you on the other hand optimize for usability, for making things simple and easy to use for someone who understands the basics, you'll often end up with something that has great learnability as well. Maybe not as much as could be achieved as if that was your only goal, but plenty still.

The other aspect is whether you as a framework designer are designing something for yourself and your peers or if you're trying to dumb things down on behalf of beginners. In other words, designing for what you think beginners might find easy in their learning phase. That's really hard to do. Most technology I've seen designed in such a master/apprentice fashion sucks.

Finally, when you're comparing complexity, it's generally more helpful to look at the complexity involved with completing an entire task. Comparing complexity of "hello world" tells you little about what the complexity is going to be like developing a complete, modern web application from database migrations to XSS/CRSF protection.

That's where learnability and usability are again in conflict. Yes, it's harder to learn a framework that has answers for things like "how do I migrate a database once I have data I care about", or whatever feature you want to focus on, but once you hit that problem, you'll be glad that it's there and find the solution less complex than stringing something together from tons of separate parts yourself.

All that being said, I think Sinatra is wonderful. So what if it's not a fit for building a whole Basecamp or Github? It's great for teaching someone the basics of how HTTP works and it's great for smaller surface apps or for smaller, isolated parts of bigger apps.

Re: Rails Is Not For Beginners

#28

Although Rails code can be straightforward if you stick to the conventions, many real-world apps call for something more than that. So in practice, it's usually necessary to perform at least some level of metaprogramming, or at least some more exotic configuration. Also, if you're using Rails library, you'll notice the hipster aspect of the Ruby/Rails community, which is to say many libraries are active for 1 or 2 ye…

I Disagree. I've built many real world applications. Very complicated ones and not just your average CRUD apps. I never had to do exotic configurations or metaprogramming craziness. If a popular gem is replaced, I see many times, that the API of the gem, mimicks the old one, or detailed migration tutorials will be delivered. So a new gem is often similar to a major version bump.

I don't know if labeling rapid evolution as "hipster" is quite fair, but the underlying point is true. Have you gone back to a update a Rails project that is 3 years old or more? I have, and it's significantly more hassle in general than going back and updating a PHP project that is 10 years old.

Personally I think this is a small price to pay for a framework that stays up to date and still releases forward-thinking features on a regular basis (Rails modularization in 3.0 and the asset pipeline in 3.1 are amazing features that an emphasis on backwards compatibility could have made more difficult), but let's acknowledge that it is not an unmitigated win in all aspects.

Re: Rails Is Not For Beginners

#29
post #27

If you optimize a framework for beginners, you're optimizing for learnability. That's great for the first few days or even weeks of learning. But once you're past that, it's not so great. What you care more about is the usability of the thing once you know it. There are plenty of cases where learnability and usability are in conflict. Letting learnability win is a short-term relief. If you on the other hand optimize…

On top of that, I actually talk to beginners all the time who are thrilled with the ease of learning Rails. They're building real apps they never thought they could complete on their own.

Naturally, there's some selection bias there (most people who give up are unlikely to write), but that doesn't change the joy for the people who did have a great and easy time.

Re: Rails Is Not For Beginners

#30
post #27

If you optimize a framework for beginners, you're optimizing for learnability. That's great for the first few days or even weeks of learning. But once you're past that, it's not so great. What you care more about is the usability of the thing once you know it. There are plenty of cases where learnability and usability are in conflict. Letting learnability win is a short-term relief. If you on the other hand optimize…

Like you said, I get people to use Sinatra for a while before getting in to Rails. It gets them in to MVC style apps while keeping things simple. Definitely recommend it as a stepping stone to Rails.
Post reply on HN