Sunday, September 23, 2012

Beginning the Ember.js Journey

Use of image generously granted by fellow Ember-curious developer Wayne Glassbrook.

I'm not starting this blog about Ember.js because I'm an expert.  I'm starting it because I'm not.

The Current Situation

Me

Not only am I new to Ember.js, I'm also new to JavaScript and jQuery, so I'm having to figure out a whole lot of stuff at multiple levels of the development stack all at once. This is incredibly daunting, but it means I'm in a position to communicate effectively with others going through the same experience — and with the recent growth in the popularity of and demand for client-side apps, there are a lot of people out there like me, especially in the Rails community (my preference for the server-side).

Ember

The Ember.js framework is very young (just under one year, not counting it's predecessor, SproutCore); it's actively changing on a daily basis, and has yet to reach 1.0 (1.0-pre is the latest release, dated 2012-08-03). There is a great deal of inconsistency and out-of-dateness, not only in the fan-made blogs, tutorials, and presentations, but even in the official guides and API docs. This adds a great deal of noise and confusion to the process of comprehension.

All in all, it's not a pretty picture, productivity-wise.  But it's fertile ground for a blog of exploration and discovery.

Core Themes

The two prominent descriptors that come to mind regarding what I expect my approach with this blog to be are thus:

Empiricism

With my extreme lack of experience in this domain and the sparseness/inconsistency/out-of-dateness of the existing coverage, I've started a habit of using a tedious, brute-force, try-every-variation approach to gaining insight on what the truth of Ember is in a situation. I think it's a great way to shine a light on and clear all the cobwebs in a particular corner of your mental model of what Ember's doing.

Conceptual Extraction

When you first begin learning a framework, all the various details in a tutorial or guide are mere context-less trivia. You have no mental model to graft them onto, so they float about for a short time in the very limited unsorted inbox part of your memory until they fall out hours or days later. A few bits may remain, especially if they were used right away, but they're like individual frames of a movie.  You can remember it as a picture, but you can't say what it means or connects to.

I hope to extract and communicate conceptual understanding as often as possible from my experiences. Once you have a strong mental model of what a thing is, why it is that way, and what it's intended for, you're set. You can always fetch the necessary trivia from the references on-the-fly while still staying in the zone and being productive. You can also start to see ways of using and assembling those things in ways not necessarily intended for. You may even develop better conventions and patterns, and eventually find yourself contributing back.

That's the journey.  Next up, we make a quick stop for supplies.

7 comments:

  1. I look forward to following your blog-- I am also just getting started with Ember.js and jQuery, having last developed a 'web app' in 2001. Needless to say, thing's are a lot different now. The whole JS scene seems over-saturated with projects doing more or less the same thing, makes me wonder what could be accomplished if people merged their efforts. But I digress... good luck and I can't wait to read about your journey.

    ReplyDelete
    Replies
    1. I think we're in the middle of a JS framework bubble, which is a good and inevitable stage. Obviously, I'm betting on Ember.js being one of the strongest contenders. I'm no expert on the space — everything I know about the others are from reviews, not personal experience. It seems like AngularJS is the only other project with the same level of ambition as Ember, but the good parts (such as targeting bleeding-edge HTML5 and platform features coming down the pipe) will likely be adopted by Ember anyway, because the core team is rational.

      And that's the biggest draw for me. I like the individuals involved (like Yehuda Katz), and the roots in the Ruby community, because those are the people who's philosophies and mental processes I most identify with and trust.

      Delete
  2. Its great that you decided to document your journey. I am new to Ember as well. I hope you continue posting here and hopefully this will motivate Ember experts and core team to produce more tutorials and documentation specially for people new to web application development.

    ReplyDelete
    Replies
    1. I definitely intend to continue for the foreseeable future. As for the core team, I wouldn't hold my breath. :) I'm sure they have their hands full with evolving/testing the framework itself, and while it's frustrating for us noobs, that's probably what they should be spending their time on right now. I'd expect things to improve quickly on the docs/tutorials front after 1.0 is out the door.

      Delete
  3. While sometimes I wonder if making more blogs and articles contributes to the problem more than it helps, I appreciate what you're doing here. The combined productivity/power of StackOverflow.com + jsFiddle.com + github.com blows my mind sometimes (it is so much easier to work together now). However, one thing that they don't always do well is help someone with no experience. Hopefully your blog here can act as an aggregation point and help new users get oriented. I hope to master EmberJS as much as I can in the next year, and if you want, I'll share little examples that I make during my own journey. While it's exciting to be on the "early adopter" side of things, it's not very time/money efficient to try to learn w/o a teacher or complete documentation.

    ReplyDelete
  4. Agreed. And feel free to share anything relevant in the comments, including linking to your own blog if you decided to start one.

    ReplyDelete
  5. A really good and meaningful post. You pretty much summed up the same feeling I have for Ember. I intend to do my graduate project with ember and node at backend. I feel like diving headfirst into a problem and trying to keep at it is good way to develop a sense for a framework like ember.js than simply trying to 'learn'. That said, this is a good place to start http://www.adobe.com/devnet/html5/articles/flame-on-a-beginners-guide-to-emberjs.html

    Please kindly share any such links and tutorials for noobs like us. I am strictly from OOPS background with no javascript,rails or any other concepts used in web predominantly.

    ReplyDelete