Pro

What's wrong with frameworks?

They prevent you from seeing the bigger picture and close you in paradigms which are usually wrong

May 16, 2016

We got used to a division between front-end and back-end developers. As a consequence we call old web developers "full stacks". So I'm a full stack now and I really don't feel the difference.

I see application as a whole, with frontend as a major part that shapes the backend. In the world of ideas both are tightly connected and it's wrong to separate them. Nevertheless that's the trend now. Why? I'd blame frameworks.

We're closed in a box of a framework which is just a little land in the ocean of possibilities. When we realize the limits we are ready to change but usually we choose another box.

Unboxing framework

Framework gives you a promise of rapid development. It's based on loads of ready to use packages and built-in tools for methodology which is "The One True Way" of development. It also gives you a guidance which is especially important if you don't know what you're doing. This way you can deliver and feel good about your code because you've followed the rules.

Rails is a framework which was modern 6 years ago and is still super popular because of inertia. Take a look at the structure of Rails.

They say it's good because all Rails apps look the same so you know where to look. Really? Each feature is shared between these directories. Imagine removing a feature. You'll never know when you're finished.

I say a good structure reflects your application and you still know where to look. Because it's obvious. You don't need a guide.

Ruby on Rails had its day. Not because of structure or MVC pattern. It had modern tools for dealing with database, interface and user actions. It's kind of secret because there are still new frameworks appearing embracing Rails cons as main features.

Forgetting MVC

Six years ago we all were eager to build SPAs. We've been so deep in the box of our backend frameworks we just applied the same rules to the frontend. It was hard as hell to develop and maintain software since our code was doubled on both sides just in different technologies.

We go further into isomorphic frameworks and say let's write the code only once and share it between frontend and backend. It only seems clever because it ignores the core of the problem and limits you to the one technology.

Browser is nothing more than a user interface rendering engine. To work with it we need only a V of the MVC and we don't need the V anymore on backend. Nothing is doubled.

First React public release was like the invention of the wheel. Now we have a good tool to work with UI in a component based way. It's not in a package with some crappy framework. Finally you can think on your own and do programming. It had a huge impact on community, and in a year, tones of component based tools appeared.

It's natural to think of UI as a set of components. But I say it's more than that. Everything is a component. It spreads to backend and it can be composed of many different technologies and patterns. Each component is independent so you don't need to follow one pattern in the entire app. What you usually get is V-GMD (View - Give me data).

The key to good software is comprehension. You can't write good code without it and if you know enough you don't need frameworks. All you need are tools and the most powerful tool is your imagination. The second is language.

Checkout how to combine tools with Pro.



Last week I tried sharing my thoughts on twitter and the results are far from spectacular. I will appreciate if you follow me and share my article if you enjoyed reading it.



Do you want to get Pro tips?




CONTACT ME AT MAD@MANIAK.PRO. I NEED YOUR QUESTIONS.