I've been a software engineer for over 10 years. Most of my life has been spent working on backend systems, RPC services, workflow based systems, the last 5 years have been building infrastructure for FAANG companies. I understand backend development, when I say I understand, I mean I understand the actual challenges and my brain interprets these challenges as fun.
Every couple of months I have to make small changes in an already existing webapps and I'm able to copy the style of the code and I get by.
Recently, I've been trying to learn more about Frontend and started exploring a React project at work. Between the framework, the state model, and how things are actually wondered, I was just bewildered. Many years ago, stuff was simple, HTML, with Javascript and CSS. You could serve JSON from the backend and your JS along with CSS could style the page, or you serve the whole thing.
Given my experience with this archaic pattern, I've now started exploring HTMX with Golang. This seems more my speed.
But, I want to build beautiful web applications, but I don't get CSS. Like is it supposed to be this hard to build a UI? I've been reading about some frameworks (for e.g. - https://picocss.com/)
Are there books or blogs that you'd recommend I read, so I can understand the beauty and challenges of frontend dev? It seems very manual to me. I obviously appreciate beautiful apps that are easy to use, intuitive and performant. I'll also pay for apps that have a great UX. So the excellence of it isn't lost on me, but I just can't figure out the grind.
Yes. It is hard to build UIs that are accessible, intuitive, and robust to a wide range of user inputs, interactions, and devices. It's a different kind of hard from backend / infra work.
I agree with what many others are saying here - to get started, you can strip away the complications of React, state management, CSS libraries and just learn basics. Tinker around in CodePen. Create a minimal HTML / CSS / JS static page and serve it with e.g. `python3 -m http.server` or `npm install -g http-server; http-server .` Read through e.g. MDN docs [1].
Find someone - maybe a coworker, maybe a friend, whoever - that knows frontend development better than you do. Pair, ask questions, get some peer mentorship. Ask them to review your frontend code - maybe at work, or maybe throw a Github repo up with a personal project and send them a link.
Find examples of good UI / UX, the kind you appreciate. Pick a small part: maybe it's a specific form field, or an animation, or a data visualisation, or even just a layout. Try to build a simple version of it yourself. Start small, start simple. Even if you don't build the beautiful version, now you might see what small details are lurking in that beautiful version.
Don't forget: you've been a (mostly) backend engineer for ~10 years. How long did it take you to really grok the beauty and challenges there? It will take time and effort. It will also pay off: you'll gain a clearer understanding of what others around you are doing, and how your work fits together with theirs.
[1] https://developer.mozilla.org/en-US/docs/Learn