According to commit logs, it’s been around 10 months since the team first began fiddling with Ember JS, a Javascript framework for web applications. I bought a copy of Rock and Roll with Ember JS 2 months prior, to begin getting a hang of it, and so a year later, these are my thoughts on the framework.

The Good

My favorite thing about using Ember so far is probably the ember-cli, which makes it quick and simple to generate all the routes and components you add to your app. When you’re working on bigger projects, you’ll find yourself in some patterns of adding a CSS here, a JS there, a handlebar template somewhere else, each time a new part of the site begins construction. I like that the CLI throws everything into the correct place for me, with options such as --pod even making components a beautiful and self-contained folder.

Speaking of components, I really like the way these things are structured in Ember. I think my favorite tasks are the ones where I get to work on a new component. Working on the structure, properties (be it static or computed), and then being able to just call it to stick it anywhere on the site is quite enjoyable.

Routing is also something Ember really nails down in my opinion. I like the way they approach the URLs, history, and templating when it comes to creating an application. Once I understood how the `` worked, nesting became so much more clear.

The Bad

I think my number one gripe with Ember is this: learning Ember is hard. Even after all these months, I feel like there’s so much I still don’t understand, more nuances for me to discover, and just an underwhelming amount of “aha” moments to make me feel like I’m progressing. Even with the Rock and Roll book, or the other Ember 101 book I used to help learn it, there’s a point in the book where I begin to stare blankly and wonder: “Wait, how did that work?” The infamous “learning curve” is real. I’m sure it’s gotten a lot better since the early Ember days, and perhaps frameworks are just a little too intense for my mind to grasp with ease, but I still wouldn’t call learning Ember easy, by any means.

I repeatedly compare Ember to Meteor, seeing as how the latter was the first framework I really got the hang of (I had tried Angular before that, and also had trouble with it). Pumping out Meteor apps felt so much easier to me, and learning it definitely did not feel as burdensome. There are many differences between the 2 frameworks of course, Ember’s opinionated structure, for example, is a double-edged sword that helps keep code consistent yet adds another layer of things to learn before stuff actually works.

The Ugly

Debugging Ember issues isn’t particularly fun. To be fair, it seems Javascript isn’t as debug friendly as other languages out there, however when working with just vanilla JS I find it fairly simple to see where something went wrong, and why. Although Ember does link to some handy guides/posts with some of their error messages (like deprecation warnings), sometimes even using the link gives me no real understanding of how to fix my problem, or where it even arose in my code. Ember Inspector has come in handy, but also feels a little rough on the edges at times, especially when trying to dig deeper into components and what’s being passed (or not) through them.

Another thing that makes working with Ember slightly more painful is the performance on Windows. Node-based frameworks seem to have issues in general, as I can recall Meteor having similar issues early on (however, it drastically improved in later versions) but working on larger Ember apps now can be hard to work with when your application takes 2-3 minutes just to boot up. There are some tweaks available, but even then it seems like Linux/macOS are always going to be ahead in the performance game, which is a shame for all us Windows web developers.

Conclusion

Learning Ember has been an interesting journey. I don’t “love” Ember, but I also don’t hate it. Learning it has been a great experience, but I do wish some things weren’t so difficult. I’d probably not recommend it as a framework for beginners to take a crack at, but a developer with moderate Javascript skills should be able to handle the task. We’ll see what another year of it will do to my growth as a developer!