DEV Community

Discussion on: Why You Shouldn't Use A Web Framework

Collapse
 
rhymes profile image
rhymes

I don't really agree. I agree that people should know the basics sooner or later but I don't agree with everything else.

Your post, I might be wrong, has an undertone of "look at me how amazing I am because I write compilers in Brainfuck" and it's one of those elitists traits that are damaging in the industry in the long term because even if you don't mean that either generate anxiety to new learners or make us look we're some sort of gods on the mountain top.

You don't need to know everything about everything to be a good developer.

We developers think we are special but for many people it's just a job and that's perfectly fine. I do not think of my CPU cache or about the speed of light everytime I do something on my computer. We build abstractions because they improve our lives.

Should we dig deeper at some point? Sure. Should we know how to write a http streaming parser? Unless that's your business, who cares. Image processing is the perfect example. Should you know the difference between lossless and lossy? Sure. But that's mostly it. Just check the result works for you.

We wouldn't have most software if we started from scratch all the time.

I think your post is a little misleading, especially for newbies who just want to learn a trade.

Collapse
 
gypsydave5 profile image
David Wickes • Edited

Your post, I might be wrong, has an undertone of "look at me how amazing I am because I write compilers in Brainfuck" and it's one of those elitists traits that are damaging in the industry in the long term because even if you don't mean that either generate anxiety to new learners or make us look we're some sort of gods on the mountain top.

Oh believe me, I'm no god on a mountain. I just want to give a good kicking to the golden calf of the web framework. Not because I'm clever (I'm really not), or have mountains of computer science degrees or such. I'm genuinely annoyed that developers think that frameworks inevitable in their work, because I think they're more trouble than they're worth both in terms of using them and in term of the ignorance they promulgate.

And that's juniors and seniors both.

As to other abstractions - they're not my target. But I think that a web dev should be able to do what they need to do with HTML, CSS, JS and a server language of their choice. I think it empowers all devs to get more done.

Collapse
 
kungtotte profile image
Thomas Landin

I get your point and I mostly agree with it, but you've tagged this with #beginners and so I think it's wise not to speak in such definitive and harsh terms.

One of the most important things to stimulate the learning process and to keep people wanting to push forward is seeing results of what they do. It's why Hello World is the first thing we show usually with no other explanations than how to compile/run it.

So let's say we have a beginner wanting to learn webdev and they have an idea about the thing they want to make. Can they make it in vanilla html/css/js? Of course they can. If they know those languages inside and out. Which they don't. Because they're beginners.

So what if they take a simple framework and get their new thing out there? Does the world end? I'm all for people understanding the stack and not being trapped by a lib/framework's way of doing things, but there's a way to express that point without making beginners feel stupid for not being able to do without one for now.

Thread Thread
 
quii profile image
Chris James

Why is there always such a rush for a beginner to create a fully fledged website quickly?

Why is this always seen as so important? It seems to be the case because most bootcamps seem to start you off with rails or an equivalent.

Beginners dont have to rush in to make an amazing fully-fledged website. They should have the maturuity to realise that maybe it takes time to learn software development and running a few rails commands is not actually learning.

Thread Thread
 
rhymes profile image
rhymes

I can't argue with that but again it seems to me that the issue is not Rails, is the industry that's trying to churn devs that are not fully formed or teach them they just need to read a tutorial.

Maybe that's what we should rant against 😛

Thread Thread
 
quii profile image
Chris James

:)

I think that's maybe the tone missing from OP but certainly what i get from it is that new developers would be better served learning the basics and making "simple" websites at first, rather than diving into a framework where the knowledge you learn is far less portable and sometimes quite harmful.

Thread Thread
 
jdhines profile image
orangehat

"Maybe that's what we should rant against."

That hits a nerve with me, because I think that's what happened to me. I raised my hand at work one day and said I'd like to help design and develop a new SPA, having only done one static site before. There was no one else I could learn from, so I went to a framework because they wanted the project (of unknown complexity) done in a certain amount of time. I needed a shortcut. Now, being that I didn't know JS, build systems, etc etc either, it was hard at times when I was stuck to know whether I needed to search SO or the framework docs, but the benefit as a new developer was the conventions and organization that the framework brought. Since that time 5 years ago, I've learned a LOT more about JS, and frameworks are somewhat easier to use. I think they are valuable when you have SPAs to build and low-maturity devs. And my opinion is that if you have a project of any complexity, and more than one developer, you will create your own conventions and your own system and unless everyone really knows what they're doing, it will be a Frankenstein framework anyway, so why not use a a framework like Angular, React, or Vue that already has established conventions and decent documentation, and then senior devs can help juniors identify where vanilla JS is the better option.

Thread Thread
 
vitalcog profile image
Chad Windham

"So let's say we have a beginner wanting to learn webdev and they have an idea about the thing they want to make. Can they make it in vanilla html/css/js? Of course they can. If they know those languages inside and out. Which they don't. Because they're beginners."

That's kinda the point though. If you don't understand the basics enough to use the holy trifecta to make something. YOU NEED TO LEARN THEM!!! Why? Becasue all those frameworks and libraries use them. And adding another layer of abstraction on top of something you don't understand well is very difficult. I graduated from a coding bootcamp and knew React pretty darn well by the time I graduated. And now I work for a company building stuff in Angular 2+ all day every day. I find the thing that helps me grow the most as a dev is building complicated things with nothing but the basics. Learning to do that helps so much in equiping you to jump from framework to framework.

Collapse
 
jfilipowicz profile image
John Filipowicz

This is how I took it, more of an empowering "You can do this" rather then condemning to people who use frameworks (myself included)

Thread Thread
 
gypsydave5 profile image
David Wickes

I'm glad you said this - it's what I was trying to get across (badly).

Thread Thread
 
kungtotte profile image
Thomas Landin

If that's the point you're making I'm fully behind it :)

I just try to put myself in the shoes of a beginner and understand how they will read a post like this. "You don't need a framework, anyone can make a great site without one" is a very different tone from "Frameworks are terrible and they make you a bad developer".

Imagine how you'd feel as a beginner if you struggled with something and someone experience told you that you were bad for choosing a certain tool?

Collapse
 
onecuteliz profile image
Elizabeth Jenerson

I share @NotARealDeveloper's sentiment - empowerment.

I'm actually going to look into the CSS variable thing - didn't know it existed... sass is what I know and like.

I will be a "master" when:

  1. I can assess if a framework is needed based on project complexity.

  2. I can tailor the frameworks - because I have better than decent knowledge of the underworking a and am comfortable to do so

This article is a nice reminder to deeply learn what's going on beyond the "yes it works" stage.

Collapse
 
rhymes profile image
rhymes • Edited

I'm sure non brilliant developers exist, as I said it can be just a job, not everyone is in it to be a published author or recognized guru.

I also agree you should know the basics but I don't agree on the general assumption that ditching frameworks make you more productive. Ditching the wrong ones does so maybe we should teach juniors how to evaluate them.

For example: can you write a SPA without a framework? Sure. Should you? Please don't. Should you know how to evaluate the available frameworks despite the hype? Definitely.

Keep in mind that most frameworks are born in the same way: one or multiple devs tired of the options create a bunch of abstractions on basic code to be MORE productive.

You can spend a lot of time chasing quirks, I agree with that but choosing the wrong abstraction doesn't mean all abstractions are a bad idea.

Thread Thread
 
gtanyware profile image
Graham Trott

I'm sure non brilliant developers exist, as I said it can be just a job, not everyone is in it to be a published author or recognized guru.

They sure do. I should know - I'm one of them. I don't like frameworks because my little brain finds there's too much to take in. However, I can speak 2 foreign languages so there must be something between my ears. It's the way I'm forced to think like a machine that I object to.

As for SPA, there's absolutely no reason why a framework is good. Wikipedia says "A single-page application (SPA) is a web application or web site that interacts with the user by dynamically rewriting the current page rather than loading entire new pages from a server".

You don't have to restart your browser every time you want a new page, so why should a web app be any different?

OK, so let's load parts of pages as they're needed. Good old AJAX. Load On Demand is so simple compared to building everything into a huge framework; even if you preload the entire thing all it really needs is a map where you can call items by name. Code as well as content, of course, so it works even better if code is supplied as high-level text that can be compiled on the fly. There's absolutely no limit to the size of website that can be handled in this way.

Thread Thread
 
rhymes profile image
rhymes

As for SPA, there's absolutely no reason why a framework is good.

But those reasons exist, there's evidence that frameworks can be helpful to build SPAs. We could argue about which is the best way to do it until the end of time but saying "framework = wrong always" is wrong in my opinion, because we can both easily find people who benefit from them. Maybe even just to build MVPs, who knows.

What we should ask ourselves is the cost of these frameworks and that has been debated a lot in this and other threads.

Sometimes it's worth it, sometimes it's not, sometimes unfortunately the worth or lack thereof will manifest itself later on. Sometimes it's even impossible to know. If someone builds a successful company or product and they do it with a framework and they manage to have mantainable code forever, should we care? If the company or product fails, is it because they chose framework X or because they were unlucky with time to market?

OK, so let's load parts of pages as they're needed. Good old AJAX. Load On Demand is so simple compared to building everything into a huge framework

A SPA is not just AJAX by the way: it's routing, browser history, app state, dom manipulation, probably SEO and maybe websockets if needed.

Can this all be solved by using libraries? Sure. But it's perfectly understandable why people end up standardizing around frameworks or popular libraries instead of doing it from scratch everytime.

There's absolutely no limit to the size of website that can be handled in this way.

Sure, but a lot of frameworks that are trendy now exists exactly because big companies had to find a way to standardize source code around huge code bases :D

It's always a question of worth vs cost.

Do I believe frameworks are always worth the cost? Absolutely not but I think this should be the argument, not "frameworks are bad and that's it" :)

We should educate people to make their own choices, telling them "bad framework, bad" is as damaging as picking up whatever framework is popular now and using it just because other people say it's cool without knowing the possible costs

Thread Thread
 
rhymes profile image
rhymes

BTW

I'm sure non brilliant developers exist,

this was definitely a poor choice of words to explain a concept, it was bad on my part, I apologize

Thread Thread
 
gtanyware profile image
Graham Trott

No need apologise; I for one know my own limitations. That's one of the reasons I avoid complexity wherever possible, and to me frameworks heap complexity onto what is already a complex 'language'. I use the quotes deliberately as in my view JavaScript, Python and the rest aren't really languages at all; it's only the lack of a suitable name that causes us to reach for a term that is actually very misleading.

A true 'language' in the traditional sense of the word would have no need for either frameworks or even libraries in the sense we usually mean. The language would be sufficient in itself, just as English is to those who conduct business, law and a thousand other activities in it daily. Each of these domains has its own agreed meanings and 'extensions' that do the job of a library or a framework.

I've had a Damascene conversion. Inspired by HyperTalk from the 1980s I wrote a compiler for a source language comprising simple English sentences, and with this I'm able to take on any job I'm asked to perform. The details of things like browser history, DOM and the rest are encapsulated in extra vocabulary which domain experts instantly recognize as their own language. OK, there might be some cases that would cause problems but I can only speak for the ones I know.

My conviction is we're in a phase that will soon end, stuck in an endless loop furiously inventing and re-inventing frameworks when there's a black swan event coming; a whole new paradigm that will sweep them all away. I'm not smart enough to invent it but there are others out there who will.

Thread Thread
 
rhymes profile image
rhymes

That's one of the reasons I avoid complexity wherever possible, and to me frameworks heap complexity onto what is already a complex 'language'.

I agree on that, but basically everything adds complexity. What I don't like it's complexity for its own sake. Not everything can be simple, complicated things are fine, it's just that a lot of this complexity we're debating is a byproduct that shouldn't exist and I wonder if it's because we're marketing tools as a "one for all" when in theory they should be tools only for certain situations

A true 'language' in the traditional sense of the word would have no need for either frameworks or even libraries in the sense we usually mean. The language would be sufficient in itself

You should take a look at what the designers of Dark are trying to accomplish: What is Dark? and How Dark deploys code in 50ms - they are trying to work around this whole complexity thing that's slowly killing us :D

My conviction is we're in a phase that will soon end, stuck in an endless loop furiously inventing and re-inventing frameworks when there's a black swan event coming; a whole new paradigm that will sweep them all away. I'm not smart enough to invent it but there are others out there who will.

I agree in general. It's funny because most server side languages have been more or less stable for decades, it's not like frameworks don't exist, they live longer. The frenzy is mostly on the frontend side right now

Collapse
 
quii profile image
Chris James • Edited

Your post, I might be wrong, has an undertone of "look at me how amazing I am because I write compilers in Brainfuck"

Disclaimer: I work with David.

A point he possibly didn't illustrate very well is that you dont need frameworks for most websites you'd ever build.

It's not showing off, it's trying to point developers in a direction where by just using the basics they can still make websites and in the long run the knowledge they learn will still be useful.

It's easier to avoid the temptation of frameworks and you certainly dont need to learn "low level" stuff. When making websites, if you learn the basics of HTTP, CSS, HTML and Javascript you will get extremely far. That's not low-level, its just without all the noise of frameworks.

Collapse
 
rhymes profile image
rhymes

Most websites though are basic CRUD, exactly what server side frameworks are made for. You still need to know the basics of Http, you still need to know CSS and HTML. I don't agree with your point because it looks like a blanket spread too wide to be actually relatable. Frameworks exist to save people and companies time, they are definitely not perfect but the article is a little too generic and bitter against them for me to actually relate, even if I can see frameworks pain points.

Are we talking about the issues of using ORMs? Let's talk about that. Are we talking about templating languages? Are they so much of a pain to deserve this post? I don't think so. Are we talking about MVC? As you said most websites are basic so MVC is not a big deal for them.

My feeling is that the rant started from a dislike of the proliferation and explosion of JavaScript frameworks and it took off from there eheh.

Again, learning the fundamentals is important but you can do that whilst using a framework nonetheless.