Stay in backend or build some frontend competency?
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 ] threadIf 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.)
I think the worst is when frontend and backend is mixed with node js for example. Then there is no way out..
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 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.
I plan to do a 2 month project on the frontend at work and will play by ear thereafter.
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.