A journey behind the scenes of Ember.js

Jen Weber
11 min readMar 20, 2018

--

Why do I spend my free time working on a front end framework that is 7 years old, that is not-React, and isn’t usually found at the top of surveys? Well, would you like a peek behind the scenes? Would you believe that the future might be promising?

Here’s the story of how Ember catalyzed my involvement in open source, what I found inside, and signs of new momentum.

Origins

I learned Ember in a coding bootcamp setting. I swore up and down that it was the worst thing ever, and I couldn’t understand why someone would want its abstractions when I could so easily write the same functionality in vanilla JavaScript + jQuery. And why weren’t we learning a more popular framework? My instructor said, “I understand you’re frustrated right now. But you are going to eat those words later.”

He was right.

I landed a job at a small startup called BioBright, which was using Ember to build demos that showed off their powerful API for scientific research. I specialized in rapid prototyping, going from ideas to working apps within days.

I learned what it means to be “in the flow” as a developer, and how I could accomplish so much, so quickly, with the right tools in hand.

The desert

Within a month or two, I knew about as much Ember as my coworkers, who had happily passed off the entire front end to me. This posed a problem. I’d ask them questions, and they’d say, “I’ll do my best to help you, but you’re the expert now.”

Most days, my help came from some resources referred to as “The Docs” and “The Guides,” plus frantic googling. I was incredibly worried that I wasn’t good enough for this company to hire me on full time, so when I couldn’t sleep at night, I read documentation until I fell asleep. This got me surprisingly far, but I still ran into walls because we were building some really unusual apps. I realized that I couldn’t succeed in isolation.

I needed other people to learn from.

Silence

I was afraid to reach out to other developers. I was such a n00b (and a woman), and I saw how Stack Overflow treated people like me.

So, I lurked.

I joined the Ember.js Community Slack (now retired — see the Ember Community Discord instead) and was amazed to find hundreds of people helping each other for free. Now, when I couldn’t sleep, I’d read their questions and answers. I tried googling the things that I thought I might need to know someday. I also went to meetups, but always just before the talks started, and left as soon as they were over.

One thing was apparent, though. Being a developer was different than I thought it would be. It was surprisingly social.

I thought that I couldn’t succeed in isolation, and then I learned that neither could anyone else.

The tipping point

Eventually, there came an unsolvable problem. I had followed a blog post’s instructions to upgrade our app version, and it failed catastrophically. I posted my errors on chat, and through some back and forth, discovered that I had gone about it in entirely the wrong way. The people I had come to admire for their expertise helped me without hesitation.

“How did you upgrade?” they asked.

“I followed this blog post.”

“Can you share what happened in the #-team-learning channel? We‘ll ask the author to fix the article. Here’s what you should do instead.”

Within 24 hours, not only was I through the upgrade (it was really easy once I knew what to do), but the article had been updated so that no one else would have my experience.

I was amazed to receive so much help from people who I could not possibly help in return. The best I could do to give back was maybe help some other new people. I wanted to be more like these experts, so I started trying to do the same things they did. I anxiously started answering questions here and there myself. I wrote a couple blog posts, and started planning a talk for my local meetup.

I certainly wasn’t alone anymore, and discovered that maybe I wasn’t as helpless as I had thought.

The invitations

I asked the local meetup organizer if there was room for me to give a talk sometime. I was terrified of being wrong or teaching “bad practice,” but he reassured me that he’d look over my slides and help me out. He encouraged me to stop worrying and start writing.

A month later, that same meetup hosted a panel of Ember core team members. I nervously approached one of them, asked a few questions about a library he had made, and mentioned that I was working on a talk. Later that night, he messaged me on chat.

“If you’re going to the trouble of putting together a meetup talk, you might as well submit it as a proposal for EmberConf. You still have a couple weeks before it closes.”

“I have no idea what I’m doing. I’ve only been programming for 6 months!”

“I’m not trying to pressure you… it’s your decision. But believe me when I say that we need talks at your level and I think you should do it.”

Imagine my surprise when, a few weeks later, one of the creators of Ember himself commented on my proposal, “This sounds pretty fun!” and then it was accepted. I couldn’t believe anyone would take such a gamble and let this unknown, new person talk to 1000 developers at their event.

By then, I had shared on chat that I was interested in helping edit some of the existing learning materials. One of the Learning Team members invited me to meet for lunch during the conference, and another suggested that I jump into some of the weekly team meetings.

Not only was there space at the table, but I was invited to join it again, and again, and again.

The team

The weekly Learning Team meetings were mundane (and they still are) — can someone review this PR? What‘s going on with that bug? Are there any volunteers to do this deprecation guide?

However, the fact that this was happening at all was anything but mundane.

A group of volunteers from all over the world were building something together, working as a unit, and fiercely, furiously driving forward with anything that would help others to succeed.

I didn’t have an app of my own in production, and I was still the lone front end developer at my day job, so open source became my training ground. I learned deployment strategies, the API, how to submit pull requests, the many forms that leadership takes, who to ask for help, how to help others effectively, and how crises could be handled with patience and care.

I saw the team make mistakes, struggle, and succeed. I was constantly learning from the kindest, smartest people I had ever met.

Responsibility

“I have a weird question, but bear with me,” said the leader of the Learning Team, about 6 months ago. “Are you interested at all in being on the official team?”

I grilled him on what was involved, what they wanted me to do, and escape routes if I couldn’t keep up. After all, I was working at an incredible pace for the startup, taking on more and more responsibility. At the end of each day, I arrived at home exhausted! How could I contribute regularly? What if I let everybody down? Could I justify the time and effort for myself and my career?

I said, “Ask me again in a month.”

I met a friend for dinner and laid out all my concerns on the table. I wasn’t sure which route I wanted to go down in my career: management and leadership, or technical expertise. I had been using open source as a sandbox for trying out different hats and skills, but I wasn’t ready to decide. I saw this opportunity falling in the technical bucket.

“Why do you need to choose? You’re a volunteer. Make it what you need it to be. It can change over time. You’re in charge,” she said.

The words of another friend came to mind. She said something like, “all volunteers help because they get something out of it. For example, it can be a sense of fulfillment, some new skills, or because they enjoy the company of the people they work with.”

I thought about everyone who had helped me, and how much I still wanted to learn from them. I said yes.

The learning curve

With my newfound GitHub powers, I broke things regularly— like the time I merged a PR on a repository that I didn’t realize would be auto-deployed… or the time I encouraged the launch of a new UI component before working out how I’d shoehorn it into every app managed by the team… or the time that I wrote some fragile RegEx and some people couldn’t reach the version of the API docs they needed. Oops.

It was great! I was learning the tough lessons of development and leadership while surrounded by supportive and forgiving people. What could be better?

I slowly built up momentum. I stopped worrying about being 100% correct all the time. Readership of my articles climbed from 400 a month to 4000. I took an active role in running the local meetup. I submitted a proposal to run a workshop at the next EmberConf. Some people I had invited to participate in open source were now doing amazing work as contributors and creators.

I also built up my own endurance, to the point where my involvement was like a perpetual motion machine. Give a little energy, get a little back.

The crisis

There’s something good happening here, I thought to myself. This is a small pond where I can help make a change — welcoming new developers, creating an inclusive community, encouraging diverse leadership. Across these metrics, it was already in a much better place than most other open source projects, but still needed a lot of work. Maybe if I’m strategic, I thought, I can help grow this thing. In a time when Facebook is king in so many arenas (*cough cough* React), there is something fun about rooting for the underdog.

What had started as an experiment in personal development had become so much more to me. I cared A LOT.

Meanwhile, my work responsibilities had taken me farther and farther away from front end coding. I trained others to work in Ember, and they took over what I had started. Increasingly, I was working more in the back end, DevOps, and project management.

It came to a head one afternoon, when I realized that I hadn’t built anything meaningful on the front end in a long, long time, and I wasn’t going to any time soon. Stressed out, depressed, sleep deprived, and crashing hard, I left work early. I messaged one of my mentors, the same person who had encouraged me to get involved in the first place. We met up within a few hours.

I pretended to be fine instead of deep in an existential crisis.

I tried not to cry into my coffee.

Was I wasting my time on open source? Should I be focused on learning other things? What would I do if the upcoming 3.0 turned out to be the last major release? Should I ditch engineering and go the product management route? Was I riding two ships to the bottom of the sea? What if I change directions and failed?

Safety

All these questions swirled in my mind to create a overwhelming, soul-crushing sense of doubt. I condensed them down into, “I need your advice. I am not sure what to do next. I see two choices ahead of me… Does this mean I should quit working on Ember?”

He listened quietly. He asked questions. He reassured me that few choices in life are binary, and that there was absolutely a third path. He reminded me that if I changed direction or failed, there were people who would support me, both inside the Ember community and elsewhere. He pointed out that if I had to step away for a while, I could always come back, and I’d find that things would have carried on just fine without me.

By the time we were done talking, I still felt deeply uncertain… but I felt safe.

Momentum

I messaged my conference workshop partner. I told him that I might be stepping away after the event, but that I was committed to doing the workshop well. I worked hard, thinking “maybe this is the last hurrah, so I’m going to make it good.”

I cleaned up lost pull requests. I gave stalled projects a little push. I connected people to each other, and challenged them to mentor others. I asked myself constantly, what can I do to make projects sustainable without me? I did those things.

Meanwhile, something cool was happening.

While I was distracted, busy planning for withdrawing my involvement, our projects grew wings.

When I joined the Learning Team, there were just a few of us at the meetings. Later on, we had to switch to a new video call platform because we maxed out Google Hangouts. My inbox was on fire with new PRs. The learning team’s chat channel, which previously went for days without messages, was dubbed the chattiest channel during an analysis of organization activity. The Ember.js Times newsletter surpassed 1k subscribers.

Ember.js released 3.0. Freed from some stale API and IE 10, a wave of new features was incoming.

Something new was in motion.

Resilience

This past week at EmberConf was the ultimate tech vacation. I finally met my “internet friends” in person — people who had been strangers the last time I was at the conference, but who were now close friends and trusted allies. They were the people who had saved me repeatedly, walked with me through highs and lows, and had built some kickass apps along the way.

In the opening keynote, the creators of Ember had a big reveal of an open secret. There were some awesome new features in store for us… and they were already implemented in beta and canary releases. In closing, Tom and Yehuda said:

Both of us really value the fact that our community is focused on finding ways to take advantage of cutting edge web technologies, but without losing sight of what really matters, which is building great apps that our users love over the long haul. Despite being 7 years old, Ember has never been more technically advanced than it is right now, and our community has never been more energized… whether this is your first EmberConf, or your fifth, you are part of something special. We have a really great lineup of talks for you this year, but this conference is really about the connections you make with other people in the community. We are really, really excited just thinking about all the cool things we are going to build together this year.

The future

I‘m headed back to work on Monday. Then on Thursday, it’s time for team meetings again. We’ll keep going. We’ll keep building. I’m not sure what will happen next, but one thing is clear.

The answer to the JavaScript hype cycle, churn, and burn is a community of developers who learn, live, and grow across many years.

Tech faces some major challenges around productivity, diversity, and sustainability. This community is alive and ready to meet them. Solutions to hard problems will arise from shared effort and experience.

There’s no way I am missing out on this ride.

Many thanks and much love to all my dev friends. You make me a better programmer and a better person.

Jen Weber builds apps for science at BioBright. She’s a contributor to Ember.js, an open source, front-end framework that comes with “batteries included” for better developer experience and productivity. She works to transform tech into an industry that welcomes new people.

--

--

Jen Weber

Huge fan of Ember.js, open source, HTML, and accessible, inclusive web apps. www.jenweber.me