From: David Masover Date: 2011-01-10T05:34:08+09:00 Subject: Re: Is Rails for Beginners? On Sunday, January 09, 2011 01:37:19 pm Jose Hales-Garcia wrote: > On Jan 9, 2011, at 4:00 AM, Mike Stephens wrote: > > I really question whether people should assume they > > can download Rails, switch on the ignition and just drive off. > > I don't know how Rails has gotten the "it's easy" reputation. I think it's partly because of all the generators, and partly because it really is easy, considering some of the competition. Yes, there are a lot of moving parts, but that's really just the nature of the beast for web apps. If you understand them at all, you're building actual web apps faster than it would take me to install and configure a database on some other systems I've tried. I don't know whether Rails is a good platform to learn on, though I do think anyone learning Rails also needs to put a significant amount of effort into learning Ruby itself, outside of a Rails context. That's on top of understanding how to talk to your datastore directly (SQL for most people) and how it thinks (relational DBs for most people), all the frontend stuff (HTML, CSS, JavaScript), and all the communication stuff (DNS, TCP/IP, and especially HTTP). It's possible to do interesting things in Rails before you understand that stuff. Still, the difference between Hello World and an actual app, and the difference between a few minutes of debugging and an impossible problem, is that background. Do you know how to grab the HTTP headers out of your Rails app, and what they mean? Can you play with your app using curl from the commandline? If you don't understand these things, there are certain problems which will be much more difficult to solve, no matter how easy Rails (or anythng else) gets. In other words: http://www.joelonsoftware.com/articles/LeakyAbstractions.html "the abstractions save us time working, but they don't save us time learning." I think that's what I feel about Rails. I don't know if it's a good beginner language. Regardless, it's to save you time working, not to save you time learning -- although if it happens to be easier to learn than other platforms, that would be cool, too.