Ask HN: Moving to Front End Engineering after 10 years in back end, worth it?
Have been working with Java, Scala and Ruby backend with some front end experience (Basic JS, HTML CSS). I now have an opportunity to work in depth on front end engineering.
The front end landscape has always seemed quite messy and fragmented to me, and honestly a bit scary too. I am fine with taking the leap of faith, but wanted HN community's opinion on whether it would be an enlightening experience. Is there something like "too late to move to front end"?
40 comments
[ 3.7 ms ] story [ 85.9 ms ] threadWhenever I've assigned web work to developers I assign in terms of functionality and they write front and back. I think this is quicker than trying to communicate between two teams.
But to answer the question, why not. Then you're a full stack developer.
Sure, for simple enough projects a single person can do both, but doing that severely limits your potential scope.
For more complex projects, it's more convenient to have someone who specializes in carpentry provide the specs for what the welder needs to provide.
The reason the fe/be distinction exists is mostly management, accounting, and legacy, not the actual work. These days the engineering itself can be interchangeable across the "ends", depending on the toolset you're using.
If you can handle the fragmentation of unix environments, you can handle the fragmentation of frontend frameworks. You probably won't find any enlightenment though, unless you dive into gpu programming or such.
The upside is that they're much more transferable between companies. Everyone wants to hire experts in their current back end stack, but everyone needs CSS & JS.
Where I am from "Front End" is still seen by HR as the guy who slices PSD templates into HTML layouts and they pay accordingly.
Calling yourself front end is doing yourself a disservice especially since you have all those years of experience in back end.
Immense state trees, webworkers, asynchronous changes, tiered caching, pre-emptive fetching, modularization, optimistic rendering, validation, behavioral analytics, testing and more.
This is all without even getting started on actual presentational aspects.
The pace of the ecosystem in recent years and the immense amount of legacy code (10 years+) that doesn't scale to growing teams/projects is a problem everywhere you look.
The good news is companies looking to bring their front-end up to date are facing the same foreboding sense you have that comes with the unfamiliar.
Fragmentation is coalescing around major frameworks and fringe features from a few years ago are standards today.
It's not too late, understanding the tooling is critical (end-to-end IDE through to the browser and beyond) and will provide you with a solid basis. Follow this up by reading the APIs of major frameworks then pick one (any one, it doesn't matter) and build something with it.
Well, maybe there is more animations, more tracking and slower initial page loads.
This is laughable and short sighted.
Imagine a scripting language that you have to compile into another scripting language. Lessons from decades of shared experience completely ignored, terrible IDE support, framework descriptions that are more snakeoil than technical documentation, the worst dependency hell there is with minor updates breaking APIs, and an unhealthy worship of Google and Facebook.
No offence intended to Javascript programmers -- I just don't like frontend development.
What I've seen in js mirrors a lot of what I saw in php 10 years ago. JS is now the easy language to get into, and so it has the most inexperienced devs with the least access to greybeards to at least show them what to avoid. The result is people who don't quite realize how insane the whole toolchain is. I've got a setup at work that makes make seem like a friendly dev requirement.
I always found writing Cocoa-based code to be surprisingly elegant. The only thing that ever felt weird was having to switch back and forth between Project Builder and Interface Builder.
In any case, there are a lot of things that are hard to build and also have great, coherent sets of tools to build them. Erlang comes to mind.
It sounds like that you have not much experience outside of Javascript and somehow think that what I see as a massive mess is somehow acceptable in 2017. It really isn't.
I've written interfaces in Java, C# and Python applications and they were not at all difficult. The hardest part is the business logic behind the GUI, not the GUI itself.
Every little component to do a new configuration is compact, clear, cute, and intuitive. They seem to think about minimizing mouse movement all the time.
I feel like starting my project from zero and copying a dozen solutions from Google. (But they would be painful to replicate, so no..)
Should you change career paths to front-end? Absolutely not. Front-end is just that; web development. With Java and Ruby experience, you're not stuck to just web development but can branch off into other fields much easier.
Everything is changing every year, pushed by young people who have no clue what they are doing and don't care about hours and work conditions.
Meanwhile, companies exploit them as much as they can to make new products and get all the returns of their work.
You have access to a much broader set of jobs with Java and Scala.
No offense. Your skills should be applicable across the board. You either have a confidence issue or haven't developed skills that are in line with your experience.
There's no reason for you to not be able to " move to front-end ", although I don't get why anyone would want to do that. It's an undocumented mess, dominated by hipsterish framework cults.
This is going to be offensive to the front-end crowd, but if you need a new framework every other month, at some point you have to realise that the underlying technology is garbage and needs to be replaced.
I've gone through the react tutorial multiple times and I still don't get it. I don't get how to build it (webpack info npm or whatever), I don't get how to do things because there is no documentation. And that's not because im slow. Yesterday I picked up ethereum from scratch, evaluated three of their languages and deployed my first smart contract on a 4 hour train ride. And ethereum isn't exactly well documented either.
But try googling react api and enjoy the non-results. Impossible to understand unless you're part of the cult. Requires full immersion. Front-end seems to have gone full retard and citizens of the internet know to never go full retard.
Nothing compares to the mess that is front-end development.
- the react training
- abramovs redux videos on egghead
- chrome dev tools
- chrome react extension
- chrome redux extension
- a chatroom full of experts
that kind of confirms that the docs suck.
i'm not competing for "full stack" jobs. enjoy 'em.
Seriously, maybe more humility will help you improve. Frontend is super easy to learn for beginners (anecdotal evidence of me and like 4 other friends/guys I know). And MDN is vastly superior to e.g. python docs I've encountered so far, or heard/seen from my python friends.
From a financial standpoint, it depends. The range that is front-end covers a vast range of talent. A person could be labeled front-end while theming WordPress websites, while another person is also front-end working on a large product where engineering practices are important. In that range, the pay is going to greatly vary: $30k - $250k.
From an enjoyment standpoint, it too depends. If you enjoy solving user facing problems, then front-end is your thing. It isn't just about how to you retrieve the data, but how does the user interact with querying and then reading the results.
The front-end landscape does appear scary, but you need to realize that you are seeing a much wider landscape than you are with Scala and Ruby. Compare the front-end landscape to the data storage landscape. You got MySQL, MS SQL, Oracle, Redis, Mongo, Solr, Active Record, Datamapper, Hadoop, etc. If you tried to master all of it and follow every new library that came out, you would go mad. So you focus on a certain area while occasionally looking around. Do the same thing for front-end. Do you want to be working on large-scale applications, then focus on things like React and TypeScript - things meant to solve large-scale issues. If you want to make brochure websites, then focus on jQuery and CSS.
It seems to me to be a spaghetti nightmare of brittle frameworks build on top of a teetering stack of already brittle frameworks and badly designed languages (looking at you JS), made worse by the almost hipster-esque obsession with jumping on new frameworks every 6 months that seem to offer nothing but a reinvention of the wheel.
And don't get me started on Electron.
From my own personal experience I think learning a bit of front-end stuff is valuable, but I'd stick to being primarily a middle/back-end developer. That's where all the interesting stuff happens anyway.
It'sof course not too late, actually situation is now pretty stabilized ... There are 4 major frameworks (React, Angular2/4, Ember, Vue) with lots of traction, the "mess" everyone is talking about is just pointless obsession over HN/reddit news, I never got what are these people talking about. Actual (you know, the ones that do it instead of "trying it" and then bashing it forever) frontend developers don't switch frameworks often. If they're skilled enough they can branch out, because concepts are very similar (ok React is a bit more ... different) and field is of course young so what was great 6 years ago isn't favored today. But situation from 3 years ago (Angular1, Ember, React were the biggest ones IIRC) was actually quite similar ...
Of course it depends on your priorities, and you haven't stated many of them. E.g. I like super quick prototyping and testing stuff on frontend, something hardly achievable with Java / C++. But maybe I'm just unaware of some tools, I just "tried" it, as many people here "tried" frontend :D