It's a lot
Non-technical folks often underestimate the breadth of knowledge required to pull off working as a full-stack engineer.
Advances in technology, fueled by Open Source and the free-sharing of information on the Internet has led to quite the proliferation of technology stacks and platforms.
I remember when most enterprise software packages were backed by one of three primary relational databases: Microsoft SQL Server, Oracle, IBM DB2.
Through from different vendors, and each requiring specialized installation and management, they at least shared a common language: SQL. Well it was somewhat standardized---each vendor had their own proprietary extensions.
These days data is commonly stored in one of the popular Open Source relational DBs, like PostgreSQL or MySQL, or in a vendor cloud DB, like Amazon's Aurora, or in one of the many other non-relational data stores, like Redis, MongoDB, ElasticSearch or---oh there are so many. Check out this list of 135 of them.
https://db-engines.com/en/ranking
And let's talk about front-end technology. At one time it was good enough to know HTML, CSS and Javascript---the underlying core of all front-end web stacks. But these days we're often asked to embrace one or more higher level frameworks like React, Vue, Angular, Ember...and the list goes on.
I personally disliked Angular when working with it a few years ago and chose to instead focus on React over the last few years for front end work.
I think it was a pretty good choice, and I've grown accustomed to working with the patterns, and became much more familiar with using Javascript in a functional programming style. But am I more proficient today writing front ends than I was 10 years ago using standards-based HTML, CSS, and Javascript? I don't think so. It didn't me more productive, though it kept my work interesting.
If keeping the work interesting for developers is the end goal, then introducing new frameworks each year is a positive pattern. But if the goal was to make development more efficient, or less time-consuming, then the goal is missed.
I'm not even going to mention server-side coding, but just know many options exist there as well.
Consider the the cloud stacks. AWS alone can keep a developer busy for hours a week. So many tools, so much configuration, and so many options. I've standardized on AWS and use services like EC2, S3, ElasticBeanstalk, RDS, and Route 53 on every project. But suppose tomorrow I'm tasked with a project that must run on the Microsoft cloud?
Holy smokes. I'd have to transfer over 10 years of AWS cloud knowledge and context somehow before becoming productive again. Yikes!
Yes, it's a lot. How could we make it better? With solutions that probably won't see the light of day anytime soon. If I were an all powerful developer God, this is what I'd do.
- Move everyone toward a common programming language.
- Move everyone toward common frameworks.
We need diversity of ideas, but less diversity in tools. At least if we really care about productivity.