I hear this question enough that I want to put some coherent thoughts together on it. There are so many reasons I like it, but it’s really the result of 20-ish years of experiences so my answer ends up feeling too big and most of the time I think, “because, obviously.” I realize this doesn’t really work for my outside voice, though, so I’m going to try to clarify.
Over the lifetime of many projects, I found myself doing some things over and over:
- setting up project file scaffolding
- figuring out a testing strategy
- integrating a design language
- routing
- hours in meetings, talking over every one of these things in painful detail
- finding out that a dude on the project decided to “rewrite everything last night” and spending weeks trying to work through that
- debugging everyone’s code to figure out which engineer’s “style of doing things” was making everyone else’s stuff break
- writing tons of project maintainer documentation (only to have it become obsolete when the new guy on the team convinced management we needed to greenfield the project entirely)
Before Ember, I was convinced that the way things were was just the way the world of web development/application engineering worked, and there was nothing to be done about it. I could leave, of course, but I didn’t want to. I love to write code! Plus I’m a little stubborn- most of my life has been doing things that people have told me I can’t/couldn’t do. So I stuck it out.
I came to understand that at its most basic, my desire was that my code reflected the person I was on the inside, really- some things about me have changed over time, but I can be counted on. I am determined, I am reliable, and I have grit. I can bend but not break. I keep in mind what I could be, but still want to love what I already am.
When I started to use Ember, it was at first just a “oh that’s convenient.” When I went looking for things, they were in the place where it made sense that they would be. When I thought, “I wonder if Ember does that?” I was delighted to discover that it (mostly) did!
Here are some of the things that Ember provides that I value:
- a way to escape the endless bike-shedding of non-essential details
- a command line tool that gives me what I need to move forward, quickly
- a path forward to embrace new things
- a way to be successful today, and dive deeper when I’m ready
Ember seemed to just get that for the day-to-day of shipping business value, there were parts of the development experience that could be standardized in such a way so as to have minimal overhead on spinning up a new project. The first time I typed 'ember new my-app'
into the command line, a huge smile spread across my face when I looked in my code editor and the project scaffolding had magically appeared. As I looked through it, it all seemed purposeful. Better yet? It’s where I would have wanted most things to go. I cannot describe the feeling of knowing that I was about to get to opt out of the “where Steve thinks this directory should be nested” conversation for the rest of my life. Exhilarating. A burden was lifted.
The exhilaration grew as I got to know about templates– handlebars just make sense to me! and they’re useful! and oh my god look at this, there are already useful helpers! Then into routing, what a sensible approach! This also makes sense! Oh my god, this testing story! It’s here! It’s all here! All the things I need are here!
I’m a few years in and the exhilaration hasn’t gone away. Behind the very sensible approach to developing web apps, I also found an incredible community. A community that will teach you how to do things that you don’t know how to do yet. A community that supports women in tech. A community that uses these shared standards to create addons to contribute to an even richer experience. An incredible annual conference. Learning resources and community-produced tutorials, videos and even complementary blogs that build on one another. And if you have an idea for how something that already exists could be improved, or for something new that doesn’t exist yet, there’s an RFC process.
I could keep going on and on- and maybe I will, some other time. I hope this is enough of a story to intrigue you, dear reader, to come see what this gem is all about.
It might just be an escape from the churn that you’ve been looking for!
Authors note: This article is only why I like it. Take what I say – well, what any person says – with a grain of salt. I can only speak from my own perspective and experience. I’m not telling you what to do. I’m excited about this solution, but that doesn’t mean yours is wrong, and none of this should be interpreted that way. You should figure out what’s most important to you- evaluate the available solutions and then try them out!