4 ms·
You're right that there's a big 'inferential gap' [http://wiki.lesswrong.com/wiki/Inferential_distance http://wiki.lesswrong.com/wiki/Inferential_distance] betw
by aeorgnoieang 13y ago
You're right that there's a big 'inferential gap' [http://wiki.lesswrong.com/wiki/Inferential_distance http://wiki.lesswrong.com/wiki/Inferential_distance] between the basics and everything else. And that's probably at least partly because everything everyone does after learning the basics and grokking everything else is embarrassing.
To really understand the 'everything else', you have to face the same problems that led to those things being created. Once you've spent hours writing, and then maintaining, a bunch of boilerplate code for interfacing a database with your application's set of objects you'll understand and really appreciate what an ORM does (and also how they're necessarily limited). Once you've tried writing and maintaining an app with a large number of JavaScript files, you'll appreciate what AMD and CommonJS provide in terms of managing dependencies among those files.
I also found Rails particularly difficult in fully understanding. Part of the problem is that it's intended to solve so many different problems; problems that you, and other just-beyond-basics programmers would be well served running into on your own (and trying to solve on your own too).
Another part of the problem with Rails is that it is comparatively opinionated, i.e. where other tools and frameworks are relatively agnostic about a lot of somewhat-but-not-directly-related issues, Rails picks sides and you just have to live with it. And there's no way (?) to know why those sides were picked other than finding references to the historical design decisions.
The other significant problem with Rails, and really every other not-dead-simple tool or framework, in any language and on any platform, is 'magic', i.e. the programming black boxes for which you don't understand how they work at all, even in principal. Luckily, this issue can be solved by you, relatively easily – just read the source! I'm serious. I remember being mystified about ActiveRecord in Rails (which, by the way, covers the 'M' in 'MVC' for Rails apps); I understood that it was acting as an ORM but I didn't get why I didn't need to tell it (via configuration files, or 'fluent' configuration code, etc.) what the columns were in each table. Then I looked under the covers and saw that it was basically just parsing the name of the attributes being accessed, and using some 'magic' in the form of code that ran when code attempted to access a not-previously-defined attribute.
As for mentors, find an IRC channel with friendly programmers; then you can ask questions and get immediate feedback. I'd offer to help, but I've got a newish baby too and I don't even know if we share a timezone (or similar work schedules).