I feel like frontend work has some unique characteristics as opposed to hardcore backend one, at least for me. I feel like the parts of the brain that deal with visual and the analytical are not overlapping much so if I alternate between the two I can do a lot more hours of continuing work, resting one while the other centre is busy. Definitely can't do that doing hard algorithmic work, where I would clock out in just a few hours.
But I think there is something else though - frontend work is usually less abstracted and more menial - a lot of repeating various tasks, moving stuff around, fine tuning it by eye etc.
When I encounter something like this on the backend I would step back and spend time actually automating that with a function/library/package/framework and only then come back to the task at hand. Thus my time is usually more "concentrated" with making decisions, logic and calculations.
But frontends are usually so vast and complex pieces of software that its harder for me to abstract and automate away ideas, and its easier to just plow away through some visual task rather than step back, distil the logic into an abstraction and then go and use that abstraction effectively. That does happen but at least for me a lot less often than backend logic.
I would aim to distil the backend code down to its business logic and almost nothing else where possible, grinding away replication, but I (and people I've tended to work with it seems) don't seem to strive for that on the frontend for some reason, at least not in the same degree.
Which ultimately makes this environment quite a lot less mentally challenging to work in. You can "zone out" doing something and let muscle memory do its thing, whereas if I ever start to feel that working on the backend code, I have an alarm in my mind shouting "something's wrong! there's a missing abstraction!"
But I think there is something else though - frontend work is usually less abstracted and more menial - a lot of repeating various tasks, moving stuff around, fine tuning it by eye etc.
When I encounter something like this on the backend I would step back and spend time actually automating that with a function/library/package/framework and only then come back to the task at hand. Thus my time is usually more "concentrated" with making decisions, logic and calculations.
But frontends are usually so vast and complex pieces of software that its harder for me to abstract and automate away ideas, and its easier to just plow away through some visual task rather than step back, distil the logic into an abstraction and then go and use that abstraction effectively. That does happen but at least for me a lot less often than backend logic.
I would aim to distil the backend code down to its business logic and almost nothing else where possible, grinding away replication, but I (and people I've tended to work with it seems) don't seem to strive for that on the frontend for some reason, at least not in the same degree.
Which ultimately makes this environment quite a lot less mentally challenging to work in. You can "zone out" doing something and let muscle memory do its thing, whereas if I ever start to feel that working on the backend code, I have an alarm in my mind shouting "something's wrong! there's a missing abstraction!"