Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Don't Settle

Don't Settle

428167a3ec72235ba971162924492609?s=128

Yehuda Katz

May 06, 2014
Tweet

Transcript

  1. Don't Settle A Manifesto The status quo is comfortable, but

    if you stick with the status quo, you're just waiting to be beaten by someone else.
  2. I started Ember by working on SproutCore 1.5.

  3. My goal was to add data-bound templating to the application

    framework. Simple. But the existing community, entrenched in the status quo, fought back. Templates were too radical, too different.
  4. Tom Dale convinced me that radical was what we needed:

    abandon the legacy of SproutCore 1.x. We would call it SproutCore 2.0 and build the entire framework around data-bound templates.
  5. But "SproutCore 2" didn't work. We couldn't use an old,

    safe name to descrbe a fundamentally new idea. Ember.js it was! ! Initially, Ember was a view library, just like Angular.js or React.js is today. It's easy to forget, but we didn't even have a router!
  6. The wider JavaScript ecosystem rewarded small microlibraries like Backbone, but

    we noticed that the first Ember users were struggling with the same kinds of app problems over and over again.
  7. "Ambitious Web Apps" Instead of fighting with the status quo,

    for a slice of the jQuery Refugee pie, we built a community of people who believed they were building "ambitious web applications". ! As application developers ourselves, we refused to settle for the status quo that said that tiny, simplistic abstractions were the epitome of good design. We put out the call: let's build ambitious web applications together.
  8. After we built the first version of the router, I

    went to Throne of JS.
  9. Afterwards, I was chatting with YUIer Eric Ferraioulo. He told

    me that while the idea was good, the developer ergonomics were terrible. * It would have been easy to let the inertia of Router v1 brush off his critique.
  10. * Instead, we went back to the drawing board.

  11. Don't Settle We didn't settle, even though we were far

    behind and desperately needed to ship Ember 1.0. Today, "Router v2" is acclaimed as the crown jewel of Ember.
  12. Good Enough™

  13. Good Enough™ (not good enough)

  14. HTMLBars HTMLBars is another example of going deeply into "push

    the envelope" territory to achieve wins without compromise.
  15. Throughout all of this, we found (and find) ourselves constantly

    on the receiving end of attacks that we are violating the religion of Tiny Modules and hand-crafted, bespoke integrations.
  16. Most Surprising App on Home Screen: Operator ! “It’s a

    custom-designed, one-of-a-kind bespoke app I had built for my assistant and I to communicate and collaborate through.”
  17. Angular partisans love to show charts of skyrocketing Google Trends,

    as if total absolute usage was the only way to achieve success
  18. What is my metric of success?

  19. Building a thriving, growing community, indeed.

  20. Ember allows me to do things that I wouldn’t have

    even thought to attempt before, because the degree of difficulty was so high my brain just closed the door on the option. http://frontside.io/blog/2014/02/24/ember-and-the-future-of-the-web.html I consider myself successful when I am building a thriving, growing community of people building amazing things that they couldn't have dreamed of building before.
  21. Lessons

  22. Be Heretical SproutCore 2: Down with the status quo: Not

    always, but when you have an idea for something that is 10x better, like data-bound templates
  23. Build a Bridge to the Future HTML/CSS instead of a

    proprietary system. Focus the parts you build yourself on the parts that you can do 10x better than anyone else!
  24. Marketing Matters You need a way to rally people around

    your idea; to give people something to join. "Ambitious Web Apps" and not being embarassed of "Framework" made it clear what people were joining and who should stay away.
  25. None
  26. Be Heretical We didn't back down when people told us

    that we were "doing it wrong". We stuck to our guns: ambitious web apps need ambitious tools.
  27. Take the Tomatoes We were willing to accept that many

    people will be ready with rotten tomatoes every time we pitch the idea of shared community solutions at the app level of abstraction. We knew what we were signing up for
  28. Have Good Collaborators It's important to have collaborators who will

    keep you sane during these periods or you will burn out and give up. It's amazing how many new ideas flame out within 6 months. If it's worth doing, it's worth signing up to do for a while.
  29. Avoid Dopamine-Hit-Driven Development

  30. Learn from the Chorus Just because you're being heretical doesn't

    mean the rest of the world doesn't have a point * We got increasingly micro-library'y over time * We learned the importance of a super-easy starting experience from Angular, but never sacrificed one core principle: the getting started experience has to be a subset of the real-world experience, not a totally different one. * We spent a lot of time seriously considering React's approach, to see what parts of it people perceive as "simple", even though React's solution is a small subset of the "ambitious web app" scope Ember has. It's super-easy to ignore these kinds of things. * TL;DR We spend a lot of time looking at what everyone else is doing and saying, and even if we don't agree with the message, we look for things that work well or appeal to people.
  31. Ship and Iterate A lot of people say "ship and

    iterate", but then forget to iterate once "workarounds" are well understood by the community. ! (I consider proliferated workarounds to be a bug)
  32. Ship and Iterate but Don't Settle A lot of people

    say "ship and iterate", but then forget to iterate once "workarounds" are well understood by the community. ! (I consider proliferated workarounds to be a bug)
  33. None
  34. Idea Work Great You need to alternate between periods of

    thinking hard and periods of implementation and "contact with reality". ! It's easy to get over-focused on "Big Ideas" or "Just Ship It", so you have to push yourself to ship regularly as well as really think through what is happening.
  35. Introspect I like to think my secret weapon is introspection.

    I try to surround myself with people who share my big-picture goal but are willing to challenge everything all the time. * We seriously considered using React under the hood in Ember * We rewrote Router v1 from scratch * We ask ourselves constantly why people are confused or challenged, and don't accept excuses * Finding a collaborator and taking regular walks is an excellent way to avoid getting stuck in the intertia of decisions already taken.
  36. Lead Your Tribe The great thing about the Internet is

    you don't have to be all things to all people. If somebody doesn't like what we have to offer, that's totally fine. You get far more mileage out of being true to your principles and giving people a refined, focused solution to a problem everyone understands than prioritizing growth above all else. * Example: Ember has always been "embeddable", but we focus on people who want to build applications instead of watering down our message and documentation with a million ways to do anything.
  37. Current! Users Prospective Users Everyone Growth comes from opening the

    door to people peeking in around the edges, so some amount of adaptation is a good idea, but only in service of getting them to the same place. Embedding is a great transitional solution, but only for people who are ultimately interested in building an app.
  38. Current! Users Prospective Users Everyone Growth comes from opening the

    door to people peeking in around the edges, so some amount of adaptation is a good idea, but only in service of getting them to the same place. Embedding is a great transitional solution, but only for people who are ultimately interested in building an app.
  39. Ember allows me to do things that I wouldn’t have

    even thought to attempt before, because the degree of difficulty was so high my brain just closed the door on the option. http://frontside.io/blog/2014/02/24/ember-and-the-future-of-the-web.html We're Building Amazing Things: Personally, I am interested in working on tools and technologies that help people build things they couldn't imagine building before. Not everyone is interested in pushing the boundaries, but there are enough people like that to keep people like me busy.
  40. Don't Settle There are so many excuses you can give

    yourself to abandon your principles in search of some temporary gain. Instead, strap yourself in and commit to push the envelope and never stop trying, no matter what anyone says. Don't Settle.