Want to become a truly great developer? A real one-percenter?
Get in the habit of diving into other people's big, scary codebases when you hit a bug. Learn how things work, learn why they're breaking, and fix it.
Who has time for that? That's part of my point. Many people won't invest in their own capabilities in this way. But once you do, you get dramatically faster at it. Soon it's no big deal to jump into the guts of Rails or Ember and bend them to your will.
This is also the best way to truly be able to judge the quality and usefulness of competing projects. Instead of following the internet popularity contest, you can go to the source and see pretty quick how good the ideas really are.
Rejecting 'magic' and just reading the code definitely helped me to get to another level of coding.
This is exactly what I was trying to figure out how to type.
Right now ember is especially hard to learn since it is constantly changing and ember-data isn't done yet. As a result there are 5 different ways of doing something and when you get stuck you finally solve it by finding someone else who had the same problem and that is when you learn that the tutorial was for rc3, not rc5. But the huge problem is that it took you forever to get there.
I personally think Ember will win, and it will win hard, for the professional developer market. I think it will come down to Rails : PHP :: Ember : Angular, but in the mean time angular will get a huge head start.
Once people get used to those common single bugs that keep them stuck for hours, they will be far more productive for non-trivial applications than angular devs will be.
1.0.0.rc1 was released on February 15, and (to my knowledge) there has been _one_ backwards-incompatible change since then.
> ember-data isn't done yet
You don't need to use ember-data: http://eviltrout.com/2013/03/23/ember-without-data.html
The best success I've had for my modest web projects has been when I've used Flask and accompanying tools for server-side (I'm guessing Sinatra would work just as well), and Backbone for client-side apps. It takes a while to set up, but I understand everything that is going on, so I can easily fix problems as they occur.