Hacker News new | ask | show | jobs
by fullstackchris 1386 days ago
Of course it does. The entire concept of 'state' doesn't even exist on the backend (okay, outside the concept of a user session, but then that barely adds any complexity; perhaps you use the user's ID and that's it). Frontend you've got to think about async calls, which automatically brings three states: loading, success, and error. You may have multiple of these calls and each combination of all of them leads to some crazy complex rendering. It's turtles all the way down if you're a junior (or to be honest, just a lazy dev), it's very easy to make a mess and abuse a library as flexible as React.

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...

2 comments

I believe it's not really that frontend is more complex than backend. It's a matter of maturity.

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.

> The entire concept of 'state' doesn't even exist on the backend

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.

I'm speaking from an application level perspective (REST or GraphQL APIs and the like). Of course at deeper levels of networking there needs to be a concept of state. But the only reason I can think of somebody having to hand roll anything todo with TLS nowadays is that they are doing something very very specialized, or have gone down a very wrong path.

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.