Ask HN: Is back end dev generally easier than front end?

111 points by tropicalfruit ↗ HN
I've been a "front end" guy since 2007. The pool of jobs I can fit gets smaller every year because I'm not a very good modern front end guy.

I'm not good at animations, responsive layouts, pixel perfection, es6

The simplest task now so complicated, many edge cases.

Things get deprecated (or sunsetted) so fast.

When I open the chrome inspector there's 10 new features which I ignore. It's too much.

I spend so much time googling obscure npm error to fix my local dev environment with each OS or package update.

I lost confidence to apply for jobs because I don't have the will to study the things they will test me for.

Has anyone made that move from front to back, do you feel it's easier?

178 comments

[ 6.0 ms ] story [ 226 ms ] thread
My job now is in localisation. Basically all the real front end work done by the main company and i'm a contractor just tweaking basic things.
I personally found CSS harder to learn than backend (retrieving things from DB, adding few lines to expose it as API). Putting things in certain places on the browser screen is still tough for me.
You can't learn things? I don't think "since 2007" is that long to be honest. I'm a bit confused how you can't be "good at ES6" in a way where you wouldn't struggle with gradual advancements in every other programming language.

Maybe you just don't like frontend development, and would prefer backend, but I wouldn't say one is easier than the other. Backend development can go through churn and change and unreliability all the same. It has its own annoying problems to work through.

Don't be mean. It is perfectly normal to be overwhelmed by missing knowledge, if there is no clear learning path that lets you understand things one-by-one. There are knowledge-dependencies between different technologies.
at some point, one becomes exhausted from learning things that are so short lived that they're effectively useless the next year.

There's a fatigue in knowing that what you're working hard to master today will be laughed at tomorrow, it makes you cynical, or at least tired..

It's not like that with most things in the world, learn math, the new stuff will only gradually creep in, the foundational concepts and ideas don't shift overnight. Even medicine, with constant advantages are not replacing huge amounts of ideas every year, only adjusting and adding some.

Learn C, and you're good to go for the next 200 years. Learn JavaScript, probably too. Learn React or Angular or whatever, and you'll have, if you're lucky the next two years to polish and make use of that knowledge before it goes out..

Don't get me wrong, advancement is good, but most of the frontend stuff we see coming and going is just grind, not advancement.

> Learn React or Angular or whatever, and you'll have, if you're lucky the next two years to polish and make use of that knowledge before it goes out..

This is just a meme. React and angular aren't going anywhere. Especially React is too big to disappear. Even if it falls out of fashion, there would be 1000s of apps built in it that need maintenance.

Whatever DOES end up replacing React is going to share more with it than not. Data-driven UIs that are a pure function of their state ain't going out of style.

well, I didn't read it anywhere, just my personal experience from being in the industry, so if it's a meme, it's probably not without a reason. Also, I've personally suffered through multiple frameworks, anything I've learnt have been a waste of time, I have nothing to show for it, but some applications with outdated UIs, you're welcome to blame me for "chosing the wrong ones, just tell me a modern, currently popular UI framework that's existed for more than 10 years.
It's not easier, just a very different environment to work with, it all depends on the technology choice to be honest.

I've worked for some larger-ish tech companies the past 6 years and the choice for backend technologies is simply more mature than the hodge-podge of changes in the frontend, there has been some consolidation on backend frameworks/technologies/patterns over the past decade that has helped me a lot.

I think you can say that backend engineering with some technologies is much more mature than the current environment on the web frontend. Not easier, just that you don't have to care about swapping major parts of your build infrastructure every 3 years anymore.

I find it easier, simply because backend is typically the one language. It's easier to understand when there are fewer layers to everything. All I have to do is ensure the routes correctly serve/receive JSON and that's where my worries end.

Honestly, if you're resonably comptent in JS you can make the jump to backend, or even systems programming. Linus Groth is the second-in-command of SerenityOS, and he has come from only writing JavaScript to writing parts of a JS virtual machine. (ref: https://linus.dev/posts/my-journey-with-serenityos/)

i have experience with php. so was thinking maybe php with a focus on wordpress.
try to focus on the things you are good at and enjoy doing. It seems that you don’t enjoy the more design side of things (animations, layout, pixel perfect) and perhaps nor the infra part (setting up es6 libs), but what do you enjoy? Do you like the actual code part? The more core javascript bits, building business logic? Then standard backend might be a fit for you, if not, there is still much more areas you can go to, share with us what you enjoy doing
As a front-ender I also have this feeling. The key to overcome this feeling of being overwhelmed is to specialize.

Some people like building whole thing from scratch and gluing a bazillion of technologies, but this is not for me. I prefer to own a small area and specialize in it.

There's many sub-specializations in front-end that are not about UX/tweaking UI/animations/architecture/mashing up libs: internationalization; performance; accessibility; build and deployment; security etc.

Those specialized jobs happen mostly in bigger companies though, small companies simply don't have that much resources and prefer do-all people. And of course doing a specialized thing for too long can wear you too.

I'd say, yes.. Backend can be as little as one or two languages on one well-controlled platform, with a primary focus on maintainability and performance.

Frontend is three languages on multiple slightly different platforms (browsers), in addition to maintainability and performance, it also has to look subjectively good.

I'm a backend dev.

There is a bias in software: if you can see it visually it’s worth less.

That bias has generally resulted in lower compensation for front end work irrespective of inherent technical challenges. The result of that bias impacts hiring and trust which then dictate approach and implementation.

It's the other way around. What you can't see is harder to sell.

However, because people like to see things, there are more people wanting to do frontend and hence the compensation is lower.

The same with game developing. This is definitely not easier than frontend or backend, probably harder. But still paid less, because it's so popular and many people want to do it.

In web development the average wage for frontend work was lower because the skill level required was lower. You don't need a lot of knowledge to be effective at building websites with HTML/CSS/Photoshop and a sprinkling of javascript/PHP.

During the same time wages for people building frontends which needed more engineering knowledge (early mobiles, WinForms, those horrible old Java frontends) were higher because there were less people capable of doing the world.

In 2021 web development has moved on to the point that we're often building websites in fully features programming languages with heavyweight frameworks (React/Angular). They are paid well. You still see people who work with HTML/CSS/Photoshop and they are generally paid less.

See: Quality Assurance and the different between people who can test manually and who can automate their work.

I think this could be reformulated: the result of backend development has less immediately visible consequences, thus more potential for catastrophic errors hence requires more testing and planning in advance (whereas UI testing in the limit is difficult).

Also, if anything, the last couple of years have shown that front end development, and web dev in particular, is highly prone to churn. Hence managers might be tempted to think of a front end as a throw-away component that needs to be redone anyway a couple years down the road when no web dev wants to touch legacy code not using the latest and greatest tech stack, and the relative difficulty of UI testing adds to that. Now why there's so much churn in web dev is another question. One hypothesis is that it's a field seeing lots of freshman; as such, the wealth of frameworks we're seeing is left as a trail of those younger devs learning to make sense of webdev ;) But maybe it's simply that requirements and expectations are changing all the time.

Personally, I'm not at all of the opinion that frontend coding is or should be less valuable than backend.

(comment deleted)
I would suggest that you try out for yourself. Try to follow a Django tutorial from beginning to the end, and if that's something you might enjoy doing.

Backend work is not "easier" than frontend, it's a different world where you have to learn to deal with other type of problems.

But I'm surprised that you think your job pool is becoming smaller, there is multiple magnitudes way more demand for frontend work now than in 2007. And it doesn't take much to learn about responsive layouts and React/Vue/whatever if you already have 14 years of experience working on frontend projects. Have you considered looking for a developer group with people who could help you get started with npm and other more modern tools? Nowadays you can get access to a lot of support by joining a Discord server, people are generally supportive and can ease your learning.

Depends on the backend I guess.

It can be very easy: Call an API/ORM, validate, format then return a JSON.

As everything, it can also be more complex: SQL optimisation, DB schema migrations and rollbacks (liquibase is a good start), micro-services, CQRS, DDD, kafka, monitoring, observability etc..

Both frontend and backend can be easy or hard.

I've done both, though not lately. I don't think one or the other is easier, but they definitely have different challenges.
I think that backend can feel less chaotic. It has its complexities but my personal opinion is that the things you use are less prone to deprecation. Ways of doing things change and that can require you to learn new things. Some examples of change are:

A few years ago I had never heard of Kubernetes, but now it’s one of the most in demand things. Cloud formation was the cool kid at one point and then it changed to terraform and to a lesser degree cloud formation SDK

But that still feels more stable to me than what people deal with on the front end where people can’t even agree on a framework to use (how many are there now for JavaScript?) lol

While frontend always deals with the visual aspect of stuff, backend can mean different things to different people.

For some cases, backend is simply to load an object from a DB, convert to JSON and send it the client.

But backend can also mean "provide a list of movie recommendations against what user has already seen and convert that list to JSON".

I've tried native mobile dev, web frontend and backend dev. The nuance of frontend dev is that you need to pack a lot of things into one process, so it requires more sophisticated coding skills. reactive patterns or stream based approach is a good-to-go knowledge to have. backend is easier to code, however the nuance is to split and scale it once you getting more traffic, proper configurations, dependency management, deployment etc. based on my subjective perspective obviously, there are far more things to consider. in general, do what you love ^_^
The is only true at a small scale. The frontend is often like the tip of the iceberg - it hides an enormous amount of complexity.

I've worked on a lot of systems in my career and I have found there to be a lot more complex and interesting problems in the "backend" than in "frontend".

With backend development, there are very real consequences for making mistakes, and you have a high chance of being punished for making them. When I have front-enders moving down the stack I have to invest significant effort into this. Particularly around secure development, proper automated testing etc, they are fairly uncommon in the frontend but absolutely vital in the backend.

I do get more enjoyment - more feeling of having "made" something when I've worked on the frontend. There's just something about being able to interact tangibly with your work which gives me a big sense of accomplishment. That, and if you're working on a game/native code then the optimisation work is more immediately rewarding.

Oh: and I must say that modern frameworks have made frontend development much easier than it used to be. With Angular, Vue, React you can actually apply the good engineering practises to structure your code in a way that makes it more manageable than it was in the past (with JQuery + server-side templates).

The testing frameworks are also pretty good, helped a lot by the frameworks being built properly (inversion of control :drools:).

definitely, frameworks are great for a lot of use cases. I was as well touching a little bit mobile dev, which is still in some sense hard. You need in each app write a little "browser engine" with websockets, rest api with http cache, image caching and a lot of other things that the classical browser environment gives web developers for free.
Definitely backend easier than frontend. On backend you just write code and only machines interact with that. On frontend you are building interfaces that are accessed by thousands of different devices with different screens, different components and different users which may require different accesibility options.
If by backend you mean web backend. I would say that backend development is slower moving in terms of changes to technologies and frameworks used than front end.

But you'll need to understand what's going on at a deeper level (Data design/Caching/SQL/scaleability etc) so there will be things to learn - but they are much more transferable across technologies than the front end, and at the start you can rely on tech lead/senior devs to have that knowledge for you.

The part of it being slower moving is definitively true from my point of view. Things I learn 10 years ago is still useful and relevant today, and I can easily build "backend" application knowing what I learn in 2011. Sure there are updates, better patterns, and new feature, but the JavaScript frameworks we used then are obsolete, legacy or unmaintained.
As a backend developer I think it's easier than frontend, but at the same time my company can (over time) hire frontend developers, but good backend developers are basically impossible to hire, at least here in London.
Why so?
It's a combination of:

* Less applicants for backend positions * The applicants we do have, for whatever reason don't pass interview at the rate frontend developers do * The backend devs that do pass interview, ask for too much money.

We know where the problems are, and that third point especially is causing our hiring manager no end of pain. But convincing our execs to significantly up the budget of the probably-already-most expensive department in the company is a tough sell.

What do your interviews consist of for backend and for frontend devs?
First stage is a chat with a technical manager, second is a 1-2 hour technical interview with some live coding, then a final chat with our CEO.

I haven't joined any FE interviews,but I understand they're structured in a similar way.

I'd say the opposite because of responsibility. A bug in the BE can cost a lot of money and time to your business, not so much (usually) in the FE.
Wouldn't that mean that both have the exact same responsibility? A bug in the FE, would essentially render the BE unusable, and therefore would cost a lot of money and time as well.

For example; if Amazon's checkout button somehow broke, and prevent users from checking out, it would also cost a lot of money.

EDIT: to give a more visual example, if Amazon changed their checkout button to a different color and style. It could potentially cost them millions, because it might not entice users to click it.

Much easier to fix a button then dive deep into why your algorithms which should work, don't work.
(comment deleted)
How so? If that button is part of a complex frontend, with multiple stylings who might inherit from each other, it could be quite a task to fix it correctly.

It's not as simple as just looking into your developer tools, and adding some CSS to it.

Backend context is more in your control Frontend context not so much.

A backend engineer usually does not write code to run on multiple different versions of CPU. A frontend engineer has to support multiple browsers. A backend engineer worries about scale, a frontend engineer not so much. https://ashishb.net/tech/server-vs-mobile-development-where-...

If you remove all unnecessary complication, then front-end is probably easier in general. But, front-end is usually rife with complication.
I simply don't understand why there are 500 tools for everything and why FE jobs want you to know their specific stack as if it's impossible to get up to speed with if you already know JS.
Non-techs really emphasize specialists because they think it will save them money.
Easier in some ways, harder in others.

Easier:

+ You don't need to write a thousand edge case code to cover different devices

+ There's less "trial and error" trying to figure out what sequence of CSS properties is needed to adjust some of the simplest of designs

+ More choices of languages available (should Javascript / Typescript not float your boat)

+ More consistency in that you only need to worry about your backend language and maybe SQL (if you're not using an ORM -- which frankly developers shouldn't imo)

+ Easier to write unit tests

Harder:

- Lazy code becomes more than just an annoyance, it will have performance impacts on your servers thus directly costing your company more money

- You can no longer rely on other people to deal with security for you. Mistakes aren't just going to be rendering bugs

- You don't have something immediate that you demo if there isn't already a UI mocked up

- You need to rely more heavily on unit tests

And if your back end developers are also doubling as DevOps then your job will get exponentially harder still as you then have to manage infrastructure as well. But a lot of places will have dedicated infrastructure guys.

Personally I much prefer backend development to frontend development. I (personally) find it more predictable and easier to reason. However a lot of people prefer frontend development if just because you get to see instant results of your code

Back End owns more of the infrastructure, including the admin, pipeline, and networking chores.

But the UX seems the 20% of the system eating 80% of the time, yes.

That is the ratio thank you! From the 5+ years experience I have, BE tasks always consume less time than FE tasks. One of the reasons for it is that, BE works get commented by technical people and technical people easy to get along well and understand each other and the decisions. However FE works get commented by a larger audience either technical or non-technical. Each comment delays the acceptance of the work done. And mostly it is harder to persuade a non-tech person about the limitations of the current technology.
Totally agree.

This has also been my experience having recently transitioned from FE to BE.

Even if FE is easier to demo, there's less appreciation for the underlying complexity.

I was once doing good work at a dysfunctional company. We had a good application backend with a poor frontend. Another team, rivals, came in with a great frontend and barely enough backend to support it. They won so much support and mindshare with their prettier UI that our project was canceled, and they years working on backend features we had from the beginning.

To most people, the UI is the application.

https://blog.codinghorror.com/the-user-interface-is-the-appl...

thanks for the breakdown.

> You can no longer rely on other people to deal with security for you. Mistakes aren't just going to be rendering bugs

this is the one that concerns me most. i was thinking maybe php with wordpress to leverage my existing skills but even then is that really backend or maybe not.

Programming is hard. Learn to do both - don't pigeon-hole yourself. You will be drowning in job offers after 5 years.
I made the move from pure back-end to full-stack some years ago. I find that backend paradigms tend to not evolve as quickly, so perhaps this pace suits you better.

The consumer of a back-end is either a front-end under management, or via public APIs, and both usually live a lot longer than most JS frameworks and website designs.

Still, if you don’t mind drawing things in browsers and just don’t like the pace of things, you could pick a front-end framework designed to have a low rate of sudden changes, e.g. Elm.

Either way, if you’d prefer not to have to learn too many new things, learning how to make back-ends with Node and ES6 probably provides you with most value in the shortest time. Just say no to new dependencies all the time. ;)

> you could pick a front-end framework designed to have a low rate of sudden changes, e.g. Elm.

React barely changes at all. The last major change was 3 years ago when they introduced hooks, which was not sudden. Even then they didn't deprecate the old way of doing things. You can write React today the same as you did in 2018 if you want.

React is a prime example of fast-change (even though not so fast as angular did). Since 2014, they changed their main programming paradigm 3 times (mixins/make*, real ES6 classes, now hooks). Then there was state management; first Flux, later Redux, then MobX became fashionably while today I start React projects without any state library and just use the stable context API + hooks. And let alone the plentheora of major changes in ReactRouter, which only became somewhat stable at version 4.
> Then there was state management; first Flux, later Redux, then MobX

Redux and Mobx are not part of React. The Flux pattern is still valid and is an inherent part of writing React code?

> ReactRouter

This is also not part of React.

> today I start React projects without any state library

Is this a hot take? The creator of Redux literally said "Don't use Redux until you have problems with vanilla React." https://twitter.com/dan_abramov/status/699241546248536064

Not sure if you are trolling or just not long enough into the game, but pre-hooks/stable context era you'd hit the problems with vanilla React pretty quickly. From my experience back in the day, everbody was using some sort of state container and to some extend today, still is right from the get go.

Yes, I know, none of the libs are part of React and react is not a framework, but by now everybody knows that and uses React as a synonym for the React ecosystem. I have yet to see the enterprise project that didn't use either a state container or other parts from the react ecosystem such as react-router, react-intl, material-ui, CRA and the likes. Like it or not, React is an ecosystem, and fast changing one if you are in the field.