Stay in backend or build some frontend competency?

10 points by silentsea90 ↗ HN
Hi! I am a long time backend engineer (~7 years now). I recently joined a startup where I have come to work on heavy frontend changes. I am a noob at frontend changes and my state switches from despondency to regret at having left my big tech job, and at times brief hope when I make some progress before I inevitably get stuck.

For people who have dabbled in both, is it smart to endure and gain competency in frontend (react, redux etc) or should I try to stick with backend with the occasional frontend task that keeps me growing but not despondent hopefully. Ultimately, I want to grow in the management track whenever I get there.

12 comments

[ 4.0 ms ] story [ 49.2 ms ] thread
Building a competent perspective on different areas of the "stack" can help you appreciate the problems that your peers and reports might be coming across. It also opens a new angle on problem solving and the ways to shift the solution across the stack to suit the context and purpose. I'd definitely recommend you to get atleast some hands-on with the frontend. You do have options with low learning curve these days to quickly build your understanding.
Agree with this as somebody who does the inverse. I like front-end much more than back-end, but knowing at least some back-end helps me understand how things fit together, how to make things more efficient, etc.

If nothing else, learning about the front-end is a good lesson in how illogical and subjective humans are, and helps you keep in mind the end-user of what you're making while you're making it. (Like how learning back-end helps me keep in mind that whatever we're making has to work for/with machines and not just people.)

Thanks! Plan to do a 2 month project on the frontend and will play by ear thereafter
Having done both for 20 years, I would recommend staying on the back end. The whole front-end ecosystem is a mess in so many ways, save yourself frustration and consider learning something new that you think you might like instead.
Exactly, would agree as well! Guess it is still a huge benefit to know frontend as well. Even if for some reason you would have to take care of both sides.

I think the worst is when frontend and backend is mixed with node js for example. Then there is no way out..

Ha! Agreed. Nodejs is tolerable with typescript (hopeless with js), but gosh, I just hated python (even with mypy) with django for server side dev. Django has way too much magic.
Thanks! Plan to do a 2 month project on the frontend and will play by ear thereafter. I agree with you so far though.
If you are building internal apps for delivery over a fat pipe to known clients, consider advocating for a much simpler front end that can dramatically reduce the complexity.

You don’t need SPAs when virtually any client has a guaranteed 10Gbe connectivity to the server room one floor down… basic MVC with server round-trip will provide indistinguishable performance for basic data-entry CRUD apps. And you can sprinkle Vue into those parts where you need on-the-fly context switching without losing what’s currently being worked on.

Plus, if it’s more of an industrial environment with thin clients and low-end mobile devices, a non-SPA front end will likely prove to have superior performance anyhow, as these kinds of devices won’t have the oomph to effectively lift an SPA anyhow.

I'll absolutely advocate for spending some time on the frontend to see if you like it. In addition to other roles in the past, I built a SaaS company as the founding engineer where I covered all parts of the stack, including primarily backend for a while. Nowadays I work almost exclusively on the frontend, because I enjoy it!

I think there are pros and cons of being in a specialized role at any part of the stack, but some of the things I like about the frontend nowadays is:

1) The feedback is rapid. You can immediately see and interact with the result of your work. Mocking backend data is a possibility, but when you're working on an API or other backend stuff it can be hard to imagine how it will work for the person at the end of the line. Rapid visual feedback on building stuff is satisfying!

2) It is now way easier to build maintainable applications that are easy to understand and hard to break. By using react and typescript (...and mostly writing pure functions with clean interfaces and unit testing them...) you can create tons of functionality with very clean code that's easy for others to understand and modify.

3) CSS is funky sometimes, but with things like flexbox and css-in-js (or even just less/sass) you've got powerful tools for working with it.

4) It used to be that making everything work across all browsers took a ton of effort and was the most frustrating part of FE programming. Nowadays it's pretty easy.

5) With Electron (and perhaps React Native, although I can't speak to that), frontend skills are more useful in more contexts than they ever were before.

6) Although there may be something "oncall-ish" at your company for FE engineers, being on call for backend stuff means you get paged much more and will have much more work to do, and it will likely be due to stuff outside your control. You will get paged much less for FE problems, and you will be able to do something about it.

I think also that the role the frontend has played has gotten more complex (more state, more data, bigger codebases, more stuff users can do), so I've felt that a background in backend work is advantageous when it comes to working on the frontend and can lead to great work, since backend people are often strong in core concepts like writing and testing functions with good interfaces, doing a good job managing state, interacting with networks and dealing with errors, etc.

Thanks for the detailed response! This makes so much sense. In addition to your points, for me personally (similar to your founding engg experience) I feel frontend knowhow unlocks the ability to create side projects. So far, I have struggled with the frontend portions of these while having no trouble with the backend. I am yet to get css down and design is totally out of my wheelhouse, but I hope that I will get more fluent on the former and at least mediocre at the latter eventually.

I plan to do a 2 month project on the frontend at work and will play by ear thereafter.

I'm going to echo what the other commenter said about web front end being an absolute mess. I stayed away from web front end development precisely because of all the stress that it entails. However, there's value in understanding how the clients consuming your services need to structure their requests and the responses that they receive.

I would recommend doing native mobile app development if you really want to have some idea of how client applications are built. And on that note, iOS' technology stack is so much more stable and coherent than Android's, which takes after patterns of web development, and so, Android is just as much a mess as front end web development, with too many options that will unnecessarily overwhelm you.

Thanks! I plan to undertake one project spanning a couple of months purely on the frontend and if I continue to hate it, I will stick to backend. I agree it does appear quite messy.