If someone wants to learn their first JS framework, should I recommend Ember?

I know a few people interested in learning their first JS framework and I get asked pretty frequently, “which one should I learn?”. I have personally worked with Backbone, Angular, and Ember and Ember is by far my favorite, but this is mostly because of my frustrations with the other 2. For someone who wants to learn a framework and hasn’t experienced those frustrations, what would you recommend? Does it depend on their programming experience level?

In my case, Ember was the first framework for SPA. I’m not pro in JS, and looking for well documented framework with strong community. It was so annoying at the beginning but after several month I was really happy with it. And Yes, you should recommend it, it’s awesome.

It is a good question. My hunch is that Ember is probably a good framework to learn because as you dig deeper I think you will learn of other sophisticated Javascript. Using Ember CLI you implicitly get to learn a bit of Node JS and even some ES6 and ES7. So I think it is good vehicle to learn modern Javascript techniques and still be productive. In lot of ways starting out completely new can be an advantage because you don’t start off with pre-existing assumptions. As I learned Ember I had some residual baggage that I had to unlearn before I became more effective with Ember. Particularly around routes and ember data relationships.

Ember.js has messed me up. These days first thing I check when I see new JS framework is if its complete solution. Second thing I check is if it has CLI toolkit for building and testing. Third thing I check if it really has CLI toolkit for building and testing. :]

I’d probably recommend doing some sort of progression through vanilla JavaScript, to Backbone, to Ember. If for nothing else other than to see the problems Ember tries to solve (so that you won’t repeat them in future), and understanding how it works under the hood.

With vanilla JavaScript you’ll have no structure.

With Backbone you’ll have structure, but you’ll have to hold its hand through (re)rendering templates, managing child view hierarchies, and have no data-binding without resorting to more third party libraries.

Finally with Ember you’ll have awesome.

Backbone is the simplest from the list and I would go with that. Ember is not for beginners unless you’re looking for something as trivial as Hello World app.

Just to echo the above, I would definitely not recommend Ember as a first framework unless the person is very confident with vanilla JS. Ember is pretty awesome but it has a steep learning curve compared to something like Backbone so I’d spend the time trying something a bit simpler first.

As an added bonus, Ember 2.0 will be released by the time they have played with Backbone so they will also avoid having to recode around the upcoming deprecations as well as getting the new features.