So I ask you: if a platform is so complicated that it simply doesn't support new developers, can it survive? By analogy, is Rails turning into the C++ of web development?
Beginning programmers should not start with large frameworks. Period.
"So I ask you: if a platform is so complicated that it simply doesn't support new developers, can it survive? By analogy, is Rails turning into the C++ of web development?"
This is so tough to answer. From my perspective, the question is completely absurd. It's like asking "if a semi-tractor-trailer is so complicated that a new driver simply can't drive it, can it survive?"
Programming is conceptually difficult. Even with the best tools we have today, and probably the best tools we have tomorrow, programming will remain a challenging task. As the problems become bigger and more complicated, so do the tools. Rails is large, so there is a lot to learn. The notion of a framework is that we should avoid solving the same problems over and over again. People are often frustrated that it can take a year or more to really learn the Rails framework, but it would take orders of magnitude more time to solve all the same problems Rails solves if writing from scratch.
The more relevant question is, "What problem are you trying to solve, and does the Rails framework help you do that?"
A garden spade is fine if I want to plant a few daisies, but if I want to build an inter-continental pipeline, I'm going to need something a little more robust. I'm also not going to stick a 16-year-old driving permit holder at the helm of a multi-billion dollar tunnel boring machine.
Yet every time I need to look at Rails, I run screaming because of the huge, steaming mess that learning it has become.
The point about C++ was real. It's exactly the same feeling I get when I bump into boost nerds who honestly think template metaprogramming is the path to the future.
I do web dev daily, so rails is great for me, but whenever I have to deal with someone's chef deployment setup my head starts to hurt. But they do devops everyday and chef makes their life easier so they get a lot of value out of it.
You want dead-simple, single-page web development in Ruby? Check out CGI [1]. Once you get in to Rails, all examples are completely incongruent, because you're dealing with a large(ish) framework. When you compare Rails to a framework like Symphony or CodeIgniter, the learning curves and tool stacks begin to compare a little better. I don't know what version of PHP ships with OS X, but I know the web is full of HOWTO articles explaining how to get a more sensible stack of PHP version x.x.x on OS X. Many PHP devs are how using Nginx with PHP-FPM, which isn't there by default. Then there's the question of versions. Does a version manager for PHP even exist? What happens if you need to run an old PHP 4 application?
Those questions are rhetorical. I'm sure they all have answers, but that's not my point. My point is: you end up with the same problems on a different stack once you move past trivial examples or start dealing with other people's code.
IMO, Rails scales downward just fine. A new developer shouldn't jump right in to Rails development. MVC is too complicated for someone who can't handle basic tools If you're uncomfortable with tool chains like XCode, Terminal, RVM, and Bundler, then you have some learning to do. You don't get to be a doctor without understanding anatomy, and you don't get to be a programmer without understanding the fundamentals.
1 - http://www.ruby-doc.org/stdlib-1.9.2/libdoc/cgi/rdoc/CGI.htm...