There’s been a lot of commotion lately over the subject of frameworks. You’ve most likely already read them (but there’s the links just incase), and I figured I might as well add my two cents to the mess.
Now before I start, I want to say that I have a very high respect for all of these people. They’re better programmers than I am in my dreams, which perhaps is why many of them don’t find frameworks as valuable as the masses do–they don’t need them. But even so, I’ve got my own opinions and experiences to share. That is, after all, what I’ve got this blog for.
Understanding what goes on under the shed
Jonathan Snook brings up the point of knowing the framework and the language behind it:
Frameworks in any language can be a very useful thing but I’d never recommend using one without understanding how it works. All software is opinionated. In other words, if you use other people’s code, know why things behave the way they do.
But what about common.js files? Remember those? Some common things one would find in these would be an addEvent function, a toggle function, some array handling, etc. So basically, people put together their own frameworks. Did they know how everything in there worked?
In all reality, what’s the harm of a designer adding a few effects by the help of a framework? What’s the harm in a programmer wanting to speed up the process?
It works, doesn’t it?
Definitely we need to know what these do and how to use them, but I really don’t think it’s necessary to bury yourself in the code for weeks learning the ins and outs of how it does what it does. It does, and much of the time that’s what matters. This wasn’t that big of a deal with common.js files, so why with something like Prototype? It’s not a big deal with WordPress or Movable Type, so why Rails or Django?
The learning curve
It’s been said that when you’re using a framework, it’s like learning a whole extra language. You have to learn Django or Rails before you can use it. Some even skip over the language itself and dive right into the framework. Many serious programmers see this as a bad thing…but why? Because somebody was able to get what they wanted faster and easier than used to be possible? Because they cheated?
I really like what Wilson had to say:
The “oh shit” moment for designers with frameworks is realizing that we can actually build something that doesn’t fall apart AND doesn’t feel like matchsticks and airplane glue duct-taped to the top of a Hot Wheels car.
We open up the box, stick some pieces together and go “WOW THIS IS AWESOME!” A construction engineer would look at what we made and think it was ridiculously childish and limited. “You’ll never build a skyscraper with that,” they’d say.
But that’s the point. We never wanted to build a skyscraper, and we never wanted to be engineers. We don’t know anything about laying foundations, or construction codes, or structural integrity, and we don’t want to. We love frameworks because we don’t have to.
Frameworks are nice for real programmers because they cut out a lot of the routine, boring or complicated parts of programming that they don’t want to deal with. As a side affect, they’re really appealing to designers because they cut out a lot of the parts of programming that they don’t know HOW to deal with.
Yes, if you’re building some huge app for Google, you probably don’t want a framework. Or if you do use one, you’re really going to have to know that thing. But for everyday usage…why not? It’s there to help you, so if you want the help take it. If you don’t, then don’t.
Into the future
So what will the future hold for frameworks? Will they be better than ever, or will they be looked upon as a great counterpart to FrontPage?
Who knows. But for most of us, I don’t think that matters right now. If they help you get your job done, then by all means use them. Yes, they might be obsolete in a couple of years. But so might the language itself. Heck, we might not even use HTML in a couple years. That’s what’s so awesome about the web–it changes so fast and there’s always something new.
So if something helps you get your job done better, I say use it while you’ve got it.