Ask HN: Is back end dev generally easier than front end?
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 ] threadMaybe 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.
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.
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.
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.
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/)
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.
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.
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.
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.
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.
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.
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.
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.
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
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 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.
The testing frameworks are also pretty good, helped a lot by the frameworks being built properly (inversion of control :drools:).
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.
* 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.
I haven't joined any FE interviews,but I understand they're structured in a similar way.
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.
It's not as simple as just looking into your developer tools, and adding some CSS to it.
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-...
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
But the UX seems the 20% of the system eating 80% of the time, yes.
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.
To most people, the UI is the application.
https://blog.codinghorror.com/the-user-interface-is-the-appl...
> 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.
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. ;)
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.
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
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.