It's kinda like if you want to build a rocket to get to space, you can tinker with propellant, metal, and fire, and be a hobbyist that eventually you build a rocket to go to space. Or you can be a physicist and calculate everything on paper. To get to space you really need both those people, but the physicist can learn to build and the engineer can learn theory.
So is this why frameworks exist? To abstract away the theory that proves something more "performant" or "sufficient", and allow the builder to do their thing?
A good framework will stop beginners from making critical mistakes, decrease the amount of code its users have to write, and offer professionals well-constructed ways around its handholding as needed.
Particularly helpful I would say is a solid idea in programming language theory and I can't recommend the MOOC by Dan Grossman from the University of Washington highly enough. As he said, even if you never get to program in the languages used throughout the course, you will become a much better programmer after finishing the course.
CS was born out of a time when computers were very limited. How do you write a word processor with a spell checker, when the dictionary alone won't fit on a floppy disk, or fit in memory?[1] How do you draw rounded rectangles on your GUI when they take too many CPU cycles to draw?[2]
CS people managed to carve out paths through problem spaces that could be done on the computers of the day. These days, you put everything you need into a hashtable and it looks up in microseconds and you don't have to care anymore.
[1] https://prog21.dadgum.com/29.html
[2] https://www.folklore.org/StoryView.py?story=Round_Rects_Are_...