Post navigation

About Frameworks

I wanted to steam out of my system for a while. So here I go. As I’ve been talking to people about web development I noticed that lots of people are relying on frameworks to do their work. While there is nothing bad (nor good for that matter) in using a framework I think that it is important to know and understand the trade offs. Because there are.

Now, every popular technology has lots of frameworks that make programmer’s life easier. If you look at web development, the client-side part of the business, you know there are literally hundreds of frameworks. From the mighty jQuery to all the other small or big UI frameworks, highly specialized frameworks (like those for data visualization), and so forth. There are “frameworks” who help you overcome some of the pitfalls and verbosity of JavaScript (see CoffeeScript).

And this is a really good thing. As, at the most basic level a framework helps you to be more productive by not reinventing the wheel.

However, every time you pick up a particular framework (or most likely a combination of frameworks when talking about front-end development for web) you limit yourself. And this is exactly where the things start to fall apart.

Why am I saying this? As you grow used to some particular frameworks when you start a new project or maybe you add something to an existing one you tend to make the problem you want to solve fit the frameworks you chose. This means that you started with a problem you have to solve and (in theory) an infinite number of methods to tackle that problem. Because you insert the frameworks in these equation, you tend to limit your self a priori to a limited number of solutions (those provided by the framework). And this is how you tend to change the initial problem you wanted to solve, in order to be able to fit the framework. And this is bad, obviously.

In a perfect world you’d know all the frameworks and CSS/JavaScript/HTML so you can make the best choice for the task you have to complete. In the real world you end up using more and more the frameworks you know and to rely less and less on “pure” CSS/JS/HTML solutions. And this can bite you pretty hard especially when you move from web desktop projects to mobile web projects. Due to the lack of performance on these mobile devices, the browsers tend to be much slower. Thus the frameworks can perform poorly or even not to work at all (see SVG based data visualization tools and Android devices).

So what am I saying here? In a nutshell I advocate to spend at least the same time for polishing your HTML/JS/CSS skills as the one you spend learning and using frameworks. Because, remember, any framework introduces a new abstracting layer between you and the platform you are writing code for.

In practice, at least what I’ve seen is that most senior developers know how to find the balance between relying heavy on frameworks or writing their own libraries/frameworks perfectly suited for the project at hand. Junior developers tend to go all the way either for reinventing the wheel or using the same framework for everything.