You can use arrow keys to navigate in the map.
The platforms,environments and devices become more and more diverse and complex during the years.
The number of frameworks and their rate of proliferation makes it impossible for anyone to keep up with them while still doing any actual work.
More and more webpages and applications process an ammount of code, including libraries and frameworks that is not necessary for they to properly work.
It is not "unnecessary," because graphical application interfaces are essentially large trees of nested state and must accommodate nuanced, interrelated, cascading change over time.
Representing and managing such change is an incredibly complex endeavor.
World Wide Web was meant for hyperlinked documents, not web applications. NCSA repurposed the web using CGI to run command line programs over the WWW browser. After commercialization of the web, various companies repurposed CGI to run their business interface over WWW browser.
tooling and abstraction has made workflows extremely personal unstandard and preferential
software development is immature, unprofessional and driven by fads. It's the geek equivalent of evolution of a peacock's tail: an opportunity for a class of developers to show "prowess", even if it means adding unneeded and costly complexity, and to be rewarded for it, creating a feedback loop.
It failed to standardize on low-level primitives. Instead of multiple derived architectures competing on their merits, we've standardized a monolithic architecture which tries to support all use cases, and which fossilizes bad design decisions for fear of "breaking the web".
This is indeed how technology moves forward. A lot of web projects don't need advanced technologies but some of them do. Those of which, wouldn't be possible without the "over-complicated" programming.
Some of 'best practices' agreed upon by most developers are questionable: using CDNs, avoiding page reload when following links, rendering on client, using rocket science build tools, using NoSQL, using async I/O on server. Blindly copying approaches of social media giants (Facebook, Twitter).
Lots of business add popular cliches to website requirements: look a-la "silicon valley", page transition animations, infinite scroll, various popups, lots of icons, fancy fonts, material/iOS look on mobile. Undecorated static pages with text/photos are sufficient to virtually no one.
programming on any popular platform is getting complicated. Just look at Gradle (raging android devs on the background) - allowing one click build after coding down hundred lines. Modular project structure is ok though, I think.
The business influence on the web has created an unsustainable set of non-features that influence the decisions of language designers and frameworks in negative ways.
The web is getting complicated because it grows, it's not unnecessary. People who have problems with catching up maybe should try to specialize more, because as the field grows it's increasingly harder to grasp all of it. Similar situation is with biology; it branched to biotech, molecular bio, etc.
Web development started with just one language (HTML)
So much has been tacked on it has become a frankenstein environment.
Now for modern web pages you need at the very least 3 (HTML, JS, CSS) together with some Image Editing skills. It then grows from there for dynamic content (DB+Backend langs)
The level of complexity is the prerogative of the developer that chooses their tools, not the existence of the tools themselves. If a tool or its complexity is "not necessary" it is the programmer's fault for choosing the wrong tool for the job.
Years ago it was a simple script tag and you were up and running but now it takes too much time to set up a project structure that must include transpilers, modules and build tools. This complicates deployment and file handling at the end of the development process.
frameworks are needed to allow us to create more powerful apps without building things from scratch each time, therefore after many years we now have lots to choose from, lots of learning curves and lots of overhead
All coders want to create their own APIs and it soon becomes a clutter. Try coding webpages in vanilla JS, HTML, and CSS and it is very simple. You don't need any API baggage.
WebAssembly, if executed correctly, could present a generic bytecode that any platform can target and use as an interface between HTML and the browser, which is what makes front-end web so difficult to begin with. Additionally, this presents more opportunities for isomorphic platforms.
Common web development languages (Namely JS and PHP) lack any kind of static typing, making traditional OO design impractical, necessitating the use of large frameworks to make up for deficiencies of the language.