Ask HN: Why are front end developers (esp React) in such high demand in 2022?
What's made frontend developers be in such high demand in 2022? And particularly React developers?
Rates are up and companies are finding it difficult to hire people. Why this year?
40 comments
[ 5.2 ms ] story [ 96.5 ms ] threadIn comparison, Backend can turn bad sometimes, but a well designed, small Backend component can produce endless value and easy extensibility. I've never seen anything similar in Frontend.
While on Frontend from the beginning, specially i you are working with a team, you will have to make a lot of small decisions that can cause all kinds of trouble down the line:
- How you build the project, javascript transpilers and all that mess.
- Decide a CSS framework, or not use a framework and then decide on an internal style guide.
- Decide on a component library.
- Decide on how to handle state.
Or you can skip those above and use pure HTML+CSS+Javascript, but those usually end up as very spaguettified and idiosyncratic projects, I rarely see anyone even considering it unless it's a personal project. And for a good reason, the structure provided by component and state handling libraries reduces a lot of the inherent chaos that is structuring frontend web project. But each of those also comes with its own bag of new problems, and complexity that requires the developers to handle a lot of disparate information in their heads while working on a project.
This is absolutely not my experience. Every company I've worked at has had some long running back end tech debt, trying to swap out old tech.
Every problem you listed for the FE has a BE analog. Is it just that there are a lot of choices for FE tech? IMO that's a strength and not a weakness. There's also a clear leader in the tech for each part of the stack to choose to get something running quickly.
> Or you can skip those above and use pure HTML+CSS+Javascript, but those usually end up as very spaguettified and idiosyncratic projects, I rarely see anyone even considering it unless it's a personal project.
This is like saying you're seeing BE devs consider writing all their DB queries in raw SQL in a production system rather than use an ORM. Sure, it's done sometimes but most of the time it makes sense to use an abstraction layer.
Again, it's mostly whether or not engineers have the time to plan ahead and also update old code.
I have yet to work on a React + Tailwind codebase in the wild where the margin/padding metrics aren't hardcoded and repeated across tens of different components. We've traded the elegance of well-written SCSS for improved developer ergonomics and faster build times because webpack is so slow at compiling stylesheet changes.
If you want to practise proper DRY for spacing, typography, etc. in a React app, you'll just end up nesting tons of components that ultimately result in needless complexity.
My job is moving completely to JS stack. The number of steps to build, number of packages to install, the cryptic errors… it is just depressing. Not to mention the resource hogging - we had to upgrade to 32GB RAM just to be able to do the basic stuff.
Maybe there are better ways to do JS that doesn’t suck this much. I dunno. I just wish I could write just backend code. Python, PHP etc have their shortcomings, but none of them are as annoying as JS
A backend from a decade or two ago can still run fine, because it defines what it runs on. It doesn't matter if CentOS 5 deprecated a feature the apps needs, we can run it on a CentOS 4 VM (not that anyone should).
Frontend feels like it has more churn because it can't define it's own runtime. If Chrome deprecates a feature, frontends have to adapt to that. Because frontends have to adapt to their runtime changing, it becomes important to use a framework that's currently supported. You can't keep running on Java applets, because browsers won't run them anymore. You can't keep running on RandomJSFramework if it stops getting updates, because features may get deprecated in the browser.
I think it has less to do with the average frontend vs backend dev, and more to do with the environment they operate in.
1- Companies understanding that a good user-interface is a must for their product. HN crowd are known for being anti-JavaScript, but modern web-apps are incredibly powerful and useful. This means you can't make your back-end developer glue together a JSP and call it a day anymore. So front-end overall is in high demand.
2- React helped standardize the way we do front-end. Yes Svelt, Vue and Solid are all great. But the ecosystem and the ability to hire from a large pool of talent without needing to train developers on your niche stack is a huge benefit.
3- React is easy to start, hard to master. When interviewing you'll likely be seeing a 10:1 ratio of boot-camp grads vs developers who have dealt with complex React apps at scale. This means an experienced React developer can ask for a higher salary.
From my experience the better you can compose your components, the happier you'll be. And there's nearly always a dead simple way to design something even if from the outside the functionality seems very complex, like this for example: https://codesandbox.io/s/react-text-highlight-2h0kvu?file=/s...
My work involves more FE than BE nowadays and I do think FE is more challenging at the moment.
But it's mostly because all these problems are very new. FE never used to store a lot of state. Now that interactivity is expected, we do. Users expect polish so we add transitions. As we add more things, performance becomes something to keep in mind, and so on.
In a decade or so, I think these issues will be very trivial to solve. Standardized solutions will emerge. Browser support will get better and JS will improve (hopefully). We'll be solving entirely different class of problems.
It's what has happened to BE. Nowadays you can expect an ORM, a cache layer, and queue systems among others to be standard to any BE installation/framework. The traditional RDBMS in itself is a sight to behold. Imagine working on BE before these things became the default.
Many things are abstracted and a lot of people aren't even aware of them. For example, I don't know when's the last time I heard about SQL injection. They are all automatically handled.
No. Are you saying e.g. TLS is not stateful? I don't even know where to start to give you more examples. Sorry but that came off really ignorant when you're trying to sell the idea that frontend is hard.
Though that did remind me, if you're doing websocket stuff I suppose there could be a considerable amount of 'state' to handle on the backend.
Another reason: The trend today seems to be to offload most of the data processing to the client side, only using the server as a glorified database pipe. Naturally, this results in a higher demand for frontend development.
Folks are building products with great UX -> Clients use these products, want the same thing in their products -> Demand for frontend increases, repeat.
In practise this rarely is the case. I have yet to use a React app that consistently respects Cmd+click as my intent to open something in a new tab, has sub-100ms draw times for any UI action, and doesn't need to load multiple megabytes of JS to bog down my CPU for basic CRUD stuff.
But users demand them anyway on the web so here were are.
- Respect the UI conventions of web browsers and not override standard behavior
- Respond immediately to user input
- Not take up hundreds of megabytes of RAM
I have yet to use a React app that doesn't immediately "feel" like it's using React. There's some weird added latency that I can't really describe, but I don't feel it on Angular apps.
Unfortunately for the way we use the web, the frontend is not simply some two-way bound GUI, but is rather a remote folder browsing application that explicitly was initially designed with the page-load (or reload) as the only explicit mechanism for synchronization of state between the client and the server.
One company built an SPA in React, even though they have a handful of internal users and the app runs inside the corporate network.
There is an ultrahigh velocity of software rot in the FE/JS ecosystem.
Imagine Facebook releasing a next big WebAssembly+Rust-based framework, and now everyone will be either stuck with React, or will need to rewrite.
The market chooses the path to inflict the maximum damage/loss.