Grow your CSS skills. Land your dream job.

A few questions about Backbone.js

  • # May 12, 2012 at 9:56 pm

    Hey everyone,

    Recently I was introduced to Backbone.js and I was wondering about this…. The thing is (without going into a full discussion on what’s the exact difference between front-end and back-end), I consider myself a front-end developer first and foremost. HTML, CSS, Javascript, jQuery, browser compatibility, WordPress customization, UX/UI design, etc. is the stuff I like to do and (think I’m) good at. I know my PHP and MySQL basics and a little more than that, but I am definitely not an expert back-end developer.

    So I’m looking into Backbone.js and my initial reaction is “eh, that looks a lot more like back-end programming than I’m comfortable with!“. The back-end developers I work with, say that it’s still front-end, that it’s the future and hence that I just have to go with it cause it’s the evolution of my work.

    But really, when I read something like “If you noticed the get/set mutators, have a cookie! A model’s attributes can’t be read through your typical object.attribute format” as the first real example in a tutorial, I’m wondering if I’m just too dumb to understand it right away, or if this is just not my area of expertise.

    In my opinion, Backbone.js wraps some front-end parts of a project in a back-end structural model, making the work for back-end devs a lot easier, but for me a lot more difficult and (unnecessarily?) complicated.

    So in essence…am I overreacting, should I just bite the bullet and get used to it? Or do I have a point and a good reason to be worried that my work will become more difficult, be more expendable so to speak?

    Thanks for your opinions!

    # May 12, 2012 at 11:26 pm

    I think your concern is very real and well thought-out, but perhaps doesn’t paint the full picture.

    Backbone certain deviates from more traditional and simpler front-end architectures, but often for the goal of organization and scalability that is otherwise impossible to achieve. When any project grows (front-end or back-end), spaghetti code can turn into a rat’s nest. Applying a framework like Backbone from the beginning of a project certainly comes at the cost of a learning curve and requires a bit more planning, but it can certainly pay off ten-fold in scalability.

    Front-end developers often scale by adding tools such as build scripts, script loaders, etc. Object-oriented frameworks such as Prototype or Ext go a step further and promote better organizational strategies. The main difference between these and Backbone is that Backbone is inherently modeled on MVC. MVC is a well-proven programming paradigm and is certainly worth learning for coders.

    All that said, I believe strongly in taking the right tools to the job. If you’re building a tiny site, it’s likely not worth your time to use a Javascript framework. If you’re working on an incredibly complex page, Backbone isn’t even enough by itself. It takes time and experience to really nail down whether Backbone is right for you.

    # May 12, 2012 at 11:44 pm

    I guess Backbone could be complicated to learn for front-end developers who only do web stuff.

    Backbone will be easy for front-end developers who do kind of Android, iOS, Flex, Qt, or any GUI toolkit based development.

    MVC framework is necessary for interactive realtime web app development. Otherwise, it’s gonna end up with terrible spaghetti.

    View is to be show users what kind of data it has.
    So when data is changed, view should be redrawn. There are setters is for that reason.

    # May 13, 2012 at 3:08 am

    Have you explored http://angularjs.org/ ? Angular will give you all the mutation observation of backbone, but without all the intrusive model wrappers (getters/setters) + lots more. Best of all it’s an extension of HTML syntax so it’s great for web developers/designers.

    # May 13, 2012 at 4:45 am

    The skill set required by a front-end developer is constantly evolving. When I started my career all that was required to call oneself a “web developer” was a rudimentary understanding of HTML.

    Nowadays the proliferation of frameworks, Content Management platforms, and programming languages has dramatically added to the complex nature of front-end development. Today a front-end developer is often expected to be an accomplished programmer, not merely someone who can slice-n-dice a Photoshop file and add a few hover states to buttons.

    It is easy to feel bogged down by the pressure to keep up with all these new technologies. When I hear about Backbone or Node or whatever is the flavour of the month, my first thought is “oh no, here we go again”. But I remind myself that I initially felt the same way about the tools and technologies I now consider essential.

    I don’t think you should feel pressured to adopt technology X just because all the hipstergrammers say it’s the next big thing, but in most cases it’s worth investing a day or two to wrap your head the around new languages, frameworks and techniques, at least the ones being widely embraced by the community. That way, you’ll have an idea whether they are a good fit for your own practice.

    Returning to Backbone, I would venture to say that for most websites it isn’t a good fit. Why? Because it is designed for Single Page Applications (SPAs). If you are building a traditional page-based website then Backbone is most likely overkill. On the other hand, if you’re developing a true desktop-style web app (Twitter, Rdio) then a client-side Framework such as Backbone will almost certainly make your life much easier. 

    SPAs blur the distinction between front and back end development, delegating much of the server-side business logic to the client. Rather than a thin layer of client-side JavaScript, a large proportion of the application is written in JS. From what I have observed many web developers still use JS simply to add a little visual spice to their UI, but developing a Backbone application requires a far more robust knowledge of JavaScript. 

    # May 13, 2012 at 9:07 am

    @jnicol: “Today a front-end developer is often expected to be an accomplished programmer, not merely someone who can slice-n-dice a Photoshop file and add a few hover states to buttons.

    This is part of my problem. Just because I’m not too excited about Backbone, doesn’t mean that the Photoshop and hover states thing is all I (can) do. It’s sad that many back-end developers still think that’s all that front-end devs do (I’m not calling you out, it’s a generic thing I keep seeing). And it’s definitely the sentiment I got when I voiced my reservations from some co-workers, as if that’s all I do at work (it’s not).

    Thanks for your opinions and views so far. Keep them coming!

    # May 13, 2012 at 10:38 am

    I’m with you in level of expertise with backbone… But I have an employee who took on a backbone project with my company for a client of ours. He didn’t know anything about it at first and was terrified. He almost gave up and we almost sent the project back to the client. But, he powered through and now knows JavaScript, backbone and underscore…

    He loves it. Because of the MVC thing. It’s the best way he says to store data, etc., like everyone above is saying.

    But what *I* learned in this process is that there is something different front what you always thought of as a front-end dev and a back-end dev. It’s a front-end Developer with a capital D. This is the person who writes JS to create logic within an application. A developer friend of mine explained it this way: gmail was written entirely by a front-end Developer (again, capital D).

    So they really are different roles, IMO… Internally, I’ve started referring to these roles as UI developer, front-end Developer and back-end developer. There is also a more backers developer that wha we’d typically call back-end. Instead of focusing on PHP, ASP, Ruby, etc… This person focuses on business logic and would call PHP, etc., front-end.

    So all our roles in the development world are relative. Do I think the rest of my team needs to learn backbone? I hope not, because then I’d have to pay them all more! It does really expand our capabilities because now this employee can write a full app by himself with what he’s learned. But do I still see the value in an HTML, CSS, jQuery developer? Absolutely. There will always be a need for designers who can deliver templates.

    I hope this helped. Great question!

    # May 13, 2012 at 7:26 pm

    @jdgraffam I like your separation of “UI development” and “front-end development”. Not to say one person can’t do both, but using two distinct terms helps to underscore that it’s two distinct skill sets we’re talking about.

    @Senff I didn’t mean to imply that your own skills are limited to slicing PSDs – I was probably somewhat flip in my characterization of the front-end developer skill set! I was trying to say that the definition of front-end development is now very broad, and can extend into territory that was traditionally the domain of back-end developers.

    # May 16, 2012 at 6:43 pm

    Frontenders – heres a vid giving an overview of how backbone works: http://www.youtube.com/watch?v=vJwgIth1I_w&feature=plcp

Viewing 9 posts - 1 through 9 (of 9 total)

You must be logged in to reply to this topic.

*May or may not contain any actual "CSS" or "Tricks".