How Ember.js made me a better developer in 2016

Martin Malinda
3 min readJan 2, 2017

Even though I wrote the first lines of code when I was 11 years old I am doing it professionally at most for two years and maybe three if I count making static sites for friends and family. It was roughly one and a half year ago when I had a bit more advanced project than usually and by building it with jQuery I soon managed to summon a horrible spaghetti monster. I quickly realised I needed a better tool for the job and after some research I settled with Ember. I was already familiar with the Handlebars templates and also MVC architecture so it was a good fit for me.

Avoiding the JavaScript fatigue

Even though I tried to build a little bit with other tools, in the end I always returned to Ember. Being new to version control, NPM, Bower, command line, deploying, CSS preprocessing, continuous integration and many more concepts, Ember was a blessing. After being tired with web development a little bit, suddenly it was fun again. I shipped interactive web apps for admin dashboards for the same price as before when I made them with PHP. And clients were happy with better speed and new features, such as saving data in the background so they never lost their work. I felt so productive in Ember I made small projects over weekends just to learn for my university exams. I used it to build a tool to collect and analyse my data for my bachelor’s thesis.

Learning from others was easy

Out of many good things about Ember, the most beneficial one for me, as a junior developer, was its emphasis on convention over configuration. Probably no new developer suddenly comes with the ability to write code that scales, with the knowledge how to best structure code, where to put which kinds of logic and how to reuse it in a smart way. Ember was not just a good tool for me, it taught me many good patterns to write good code.

Usually, digging into source code of different projects I soon became lost. This was different with Ember apps. Projects such as Discourse or Ghost were instantly familiar to me. And it was the same with the multitude of Ember addons. Most of the time I used one, I also checked how it does, what it does. I could always very quickly find the important file and lines of code, that do the most fundamental or relevant logic. I learned when to use requestAnimationFrame, when to add and remove event listeners and how (not) to access and change the DOM.

Thanks to the early adoption of Babel I soon grasped most of the important concepts of ES6. When I heard about SASS, all I had to do was to type

ember install ember-cli-sass

and I could start playing with it. Ember community takes great emphasis on testing. And not only that, Ember-CLI provides a very friendly testing environment. Had I not chosen Ember I wonder if I would get into testing so soon.

Different apps, different challenges

After nearly a year of experience with Ember I was employed by a company and because I was quickly assigned an Ember project I was productive the second day I was hired. The work overall felt familiar and I could reuse concepts and code from many of my previous apps. I was also able to quickly boot into other projects and help out when needed. That way I got my hands on multiple kinds of apps. Some had great UX requirements, others loaded very large datasets. I got to deal with various kinds of challenges and I am grateful for that.

Ember has of course it’s drawbacks and for some use cases, it falls behind solutions such as React and Vue. But still when I look back I do not regret the decision at all. Ember has taught me a lot and I would recommend it to any starting frontend developer.

Already in 2016 I wrote a few addons and landed some commits into Ember open source projects. Hopefully, I can contribute and give back more in 2017.

— — — — — — —

Support me on herohero

If you enjoyed this article you might want to subscribe to me on herohero where I often share code examples and other experiences from my day to day work. It’s a platform I’m building with Vue 3.

--

--