I come from the django camp, but I feel this article applies to both frameworks. I teach high school math and science, and I have started teaching python to interested students. It has been very satisfying, and now students who didn't think themselves capable of learning to program are interested because they are watching their friends have fun with it. They enjoy writing programs that output to the terminal, and some students are developing gui-based programs.<p>This has led me to consider whether I could teach them to build web apps using django, or rails, or any other framework. It quickly becomes a daunting proposition for anything nontrivial.<p>You can follow tutorials, books, and videos all you want. But when it comes down to it, every good web app is developed over time through iteration and troubleshooting. Those are two areas where you simply have to understand what is going on under the hood to be successful. It's nice to work with data through an abstraction layer, but when you do something that doesn't work well with the abstraction layer you need to be able to do some manual twiddling with your actual database.<p>Frameworks make it easier for experienced developers to build meaningful projects quickly, which they are then able to maintain based on their deeper technical understanding. Frameworks may help inexperienced people play with a simple web app. But frameworks don't let the average person build and maintain complex web apps.