Many computer science programs begins with high-level languages, and quickly move on to using frameworks. Students don't know what those frameworks are doing - it's all just magic incantations. The frameworks are massively inefficient, and bring in zillions of dependencies, because they are such generic "do anything" tools.
Looking at a browser app: putting a character on the screen requires an insane amount of computing power: server side running Spring (or whatever), client side running React (or whatever), plus the browser interpreting insanely complicated CSS.
The benefit of frameworks is that they enable low-ability developers to create stuff without understanding the nuts-and-bolts of what they're doing. Eliminate the frameworks, and you eliminate probably 90% of the developers out there.
> Many computer science programs begins with high-level languages, and quickly move on to using frameworks.
Is that really true of any universities? At the intro to CS course at my university, right after teaching loops and assignment statements in Python, they demonstrated basic algorithms like bubble sort and binary search. I've heard that the focus on frameworks comes more from those coding bootcamps that focus on getting trainees hired ASAP.
I strongly agree with this point and believe there's a generational aspect at play. For newcomers, the knowledge required to avoid being labeled a "low-ability developer" and to write your own frameworks is significantly higher than it used to be. I'm fortunate to have learned in a simpler era, without many of today's bloated frameworks. However, my equivalent challenge is that I find much of what compilers and assembly do to be "magic incantations."
Two notes: one is how much a surgeon need to know about molecular biology to properly work, a construction workers about the concrete chemistry, a bus driver about mechanics and so on. The other is that in the past "frameworks" was just the OS, with accessible sources, easy to be explored and end-user programming in mind. There was some, like Smalltalk from Xerox Workstations (take a look at a modern Pharo demo to see them or this https://youtu.be/M0zgj2p7Ww4 old commercial demo) or LispM (for instance https://youtu.be/RQKlgza_HgE to give a bit of eye candy) etc.
Now if students start high level in these systems well, they do learning digging as much as they want a bit at a time, nothing hidden. Instead we have pushed for commercial reasons a gazillion of "isolated layers" of crap just to been able to sell bits a bit more. Do you imaging more realistic today students learning ASM to be run on CPUs now complex enough to have a full OS inside or coming back to a single app-OS-framework like in the past? As a hint: look the evolutionary path from widgets GUIs to WebUIs, from visual menus to search&narrow, NotebookUIs, "prompts" etc.
There will be an immense amount of work to do of course, something that can happen in FLOSS world backed by academia and large research labs, definitively not by some even giant enterprise, but we are anyway going there, the quick we realize the less damage, pain and waster works we will make.
A framework is just a tool like any other and has its place. I could write my own UI using the browser canvas, but alas, I don't get paid to write code. I get paid for delivering features.
> The benefit of frameworks is that they enable low-ability developers to create stuff without understanding the nuts-and-bolts of what they're doing. Eliminate the frameworks, and you eliminate probably 90% of the developers out there.
This is sort of meaningless though, isn't it? The frameworks exist, and will continue to do so. The developers who rely on them occupy a niche – a big one, probably.
These developers are out there growing the pie, the appetite for software. Either it's good enough, or, sans anticompetitive forces, someone with a niftier solution comes along and outcompetes them. As we should all be aware though, there's more to building software than just knowing how to code.
Looking at a browser app: putting a character on the screen requires an insane amount of computing power: server side running Spring (or whatever), client side running React (or whatever), plus the browser interpreting insanely complicated CSS.
The benefit of frameworks is that they enable low-ability developers to create stuff without understanding the nuts-and-bolts of what they're doing. Eliminate the frameworks, and you eliminate probably 90% of the developers out there.