I do love front end development and it is indeed complex. I agree with Tommy Hodgins that our abstractions have made it difficult, but I will add that good, usable UI is a very complex thing. Why do we have hundreds of libraries and languages and tools that are dedicated to it? Because its a hard problem to solve and there are lots of people trying to make it easier, but after all of the work - it's still hard. Even with the best tools, it's hard. It's hard to not only write the code, but to design it so that users 'get it' and are able to use it in a way that makes it easy but at the same time powerful.
I love UI work because its the closest you can get to the end user of an application. The work you do will be clicked on and dragged and dropped by the actual end users. Humans. You can make their day or piss them off. It's really cool in that way. When you build people something that solves a problem for them, and they love it, and they tell you they love it - that's a cool feeling.
I'll be honest with you, I don't like it - but it's necessary in web development to have at least some rudimentary front end skills even if you are a back end developer. Firstly because you will find yourself wading through HTML and JS at some point even if you are a backend developer, and secondly because you won't always have the relevant people with the relevant skills at hand. Right now I am working on kickstarting an internal system for a shoestring startup, and I am currently the only developer on the team.
The important thing at the end of the day is to be product minded, not technology minded - so whether you learn more of one or the other should really be lead by what is required of you at the time. Right now I'm learning far more front end than back end while I working on integrating a new VueJS based interface on their legacy system, and then later I will have my head buried deep in either Elixir or Go while I replace the backend.
The notion that one should learn one thing more than other is really only relevant when you're talking about curiosity and interest, or when you are new to an area of development and you need some skills to get your foot in the door. After that, it's really a case of transferring skills between technologies you've learned as and when you devise solutions to solve problems.
P.S. I hate that I can't type in Markdown in Hashnode any more ;P
Tommy Hodgins
CSS & Element Queries
Frontend development is complex because people make it complex. In reality, the way we work, store data, retrieve data, and build things out of that data has been made up of the same pieces for decades, it's only the abstractions we use to manipulate that data into the structures we want that keeps changing.
It's possible to write things simply, and it's possible to over-think things, or over-build them. Think about ship-building. Cruise ships are MASSIVE floating cities, and when you need a floating city they are amazing wonderful feats of engineering. However if all you require is a canoe to cross a river - building a cruise ship would be overly complex and probably not meet your needs very well. People do the same mistake with websites and web applications all the time!
Make sure that you're developing solutions at the right 'scale' for the size of the problem you're solving, and it's always better to bet smaller and find out you're wrong and replace it with something a little bigger than to build it way too big and just get lost in the complexity. It's harder to take something too-big and refactor it to be slimmer than it is to extend something too-small to suit bigger needs.
I think it's a human tendency (self preservation?) to overbuild for our current needs if the resources are available, and when the resources are digital, people get REALLY greedy because the resources are free - but your time isn't free, and that's where too-big solutions quickly start to cost. It's tempting to build entire virtual cities and spend time finessing the sewer systems and electric grid, focus on the details of city planning to build the perfect society when really your needs only require you to build one house. To succeed you have to have a vigilant grasp on project scope.