A decade ago it was possible to be a true full-stack developer that kept up with both ecosystems. Much, much more difficult to do nowadays. Hence the explosion of “frontend engineer” positions.
Back in the day we had client server architectures and it was exactly the same thing. Even more tiers would sometimes be added and there were frameworks for all of them. We didn't get source code. The frameworks were full of bugs. There was no stack overflow. Documentation usually consisted of a few trivial examples. You just had to hack, hack, hack and figure out how it worked. I remember when Swing came out and being very excited about being able to work on something that wasn't completely insane for client stuff (that's how bad it was ;-) ).
This is just the life of the computer programmer. If you like learning new things, it's never a dull moment!