I have spent the last three weeks studying the Ember.js guides and API information on the website. The walk-thru was fairly helpful but it felt like a rabbit hole - I was able to complete everything, I felt like I really started grasping concepts, but then at the end when I went to build my own Ember app I realized I was only able to complete it because of the guidance given.
So I spent time playing around and googling various questions. StackOverflow answers seemed great until I realized most of the questions are out of date and most of the solutions are either deprecated or the jsBin’s they show are broken from changes.
So I spent more time studying the guides and API but the learning curve seems high and I wanted to share my thoughts on why and see if anyone has any advice to offer -
1. The guides use basic terminology but have over-simplified it without giving explanation.
The guides use terms like ‘Route’ and ‘Resource’ all over the place without giving a better understanding of which to use and when. They go into a lot of detail about the controllers, views, and other things that are provided by convention but after three weeks I am still struggling with how to nest templates inside of other templates because resources and routes are improperly set. When I goto SO.com and look at answers most are from December 2012 - March 2013 and don’t work or display deprecated features.
Templates seem fairly easy to grok on their own but when nesting them the guides jump around between templates, views, and partials without giving a clear explanation of why you would use one over the other and distinctly showing examples of their usage in full. The guides show what setting up templates and views looks like but not their actual usage.
What would I suggest to fix it? As a heavy user of Knockout.js I always point new devs to their tutorial walk-thrus @ http://learn.knockoutjs.com/ and tell them go through each one three times before you ask me a question. Giving some sort of live tutorial like jQuery and Knockout that doesn’t tell you what to do but gives you suggestions would be AWESOME, showing not just how to build a single Route/View/Controller but go on to more advanced topics like nested routes. Just cover the basics one would need to build out a simple ‘view’. Also, and more importantly, go back through all old but highly voted SO.com questions and answers and update them so people find valid answers
2. Too many answers point back to StackOverflow.com questions/answers that are no longer relevant
To build a community the community members should be a part of enhancing said community. While everyone here embraces the technology the truth is it needs to be adopted more widely to continue to grow and prosper. (that is an opinion of mine obviously) To get more people to adopt it it must be easier than it currently is to grasp. It’s the learners paradox - it is hard to learn / search for things when you don’t know what it is you are trying to learn. As I pick up more concepts I realize how simple it was in hindsight but by then it was already a touch too late.
3. Too many answers to questions all around the net are ‘You just can’t do that in Ember’ or ‘that’s the Ember way’
While both those statements are proper ways to end an answer they aren’t good ways to start them. When giving someone assistance or help it gives no real aid to provide code showing them exactly what to do, it gives little help to point them to the guides to ascertain why their question relates to the specific page you are linking, but it does wonders if the person giving the answer can give some code hints, possibly a working small example, and explain ‘the reason you should do it this way is because…’ and go on to give a brief description of the idiomatic way it is achieved and why void of condescension
4. Ember needs to divorce Ember-Data from the guides
Including an optional persistence library like Ember-Data makes Ember seem heavily reliant upon it and also gives the feeling that learning Ember means learning other libraries. One of the biggest turn-offs to the Angular.js tutorials that I saw and went through almost a year ago was that they all started out like this -
- Get Angular.js
- Open your text editor and add a dependency on Angular.js
- Install node.js and create a small server to serve up JSON, make sure ports are opened and the server is serving up the JSON properly
WHAT?!??! Now in addition to learning Angular I need to take a node tutorial and set my environment up for that as well?!?!
All of this is just my $0.02. Feel free to look me up on GitHub (pwkad) and SO.com (pwkad) or anywhere else, criticize my background or knowledge base, and tell me why I am wrong about the above points.