I think the worst part of webdev is that it is so fragmented. I mean all of it. The technologies, the tools, the software, etc. You can't do anything simple any longer... You basically have to be an expert in every aspect of the system in order to make sure that you aren't opening yourself up to attacks.

Example of the absurdity: Do you want a self-hosted website? Be prepared to know how to set up a firewall. And the webserver needs to be able to serve static files when appropriate, and PHP/Python/JS/Whatever when appropriate. Don't mess up your apache or nginx configurations!!! Most modern frameworks require you to know from the start all of you HTTP verbs. You can have HTTP/1.1/2/3 support... if you can figure out HTTPS and your DNS records (for HTTP3). Oh, and make sure that UDP is configured in your firewall for H3. You're writing something commercially? Better stay away from GPL-licensed libraries. How do you check on the libraries for your software and the dependency tree? Good luck. We haven't even decided on a backend framework yet, much less the front end! But when you get to the front end, it needs to be Accessible, lest you get sued. And it needs to support mobile. And you have to have GDPR cookie headers (why? again, so you don't get sued). SSO? If not SSO, how do you securely store passwords? Plain text? noobish and irresponsible. Hashed? also noob. Salted and Hashed? Out of date. Salted and Hashed with a variable cost cryptographic function? Better, for now. There's plenty of other things I can hit on.

LEGO is fun, but nobody can compromise your security simply because you put a block in incorrectly. In webdev, if you do something wrong, you can open yourself up to major security issues and potentially civil and criminal liability.

To put it another way, it's the Unix philosophy of "writing small, single-job tasks that can then be combined in amazing ways" versus monolith programs like Excel. Sure, you can do calculations in the command line using awk and sed, but you can also really mess it all up, even accidentally overwriting your data files if you write '>' instead of '<'. There's a reason that big programs exist: they are successful in bundling functionality and flexibility.

I started as self-taught full-stack developer using Drupal almost two decades ago. It was complicated then, and it's even more complicated now. That being said, I loved using Drupal because, as long as you stuck to their APIs, the security was in place. Drupal enforced patterns for extensions, and if you followed those patterns, you could do amazing things without worrying about the possibility of shooting yourself in the foot. Your forms were handled correctly. Your site could be multilingual. It had good SEO out of the box. Everything more or less just worked, and it was still flexible enough to build amazing things with it! (Yes, I know that there are security issues here and there, and you must update when a CVE is discovered, but that's true for any project.)

And yet, even Drupal has moved away from the simple (yes, I'll call it simple back in the 4.5, 4.6, 4.7, 5.x, 6.x, and 7.x days) to a more complicated ecosystem where I'm not entirely sure that I've set up everything correctly.

But what can we do? I don't want to be involved in the politics (project as well as societal) of many of the languages and projects today. In fact, I actively distance myself from those things now.

I miss the old days of writing software that I loved and that I could share with others. I just want to make cool stuff again!