Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Moving to Front End Engineering after 10 years in back end, worth it?
42 points by sidcool on May 29, 2017 | hide | past | favorite | 37 comments
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"?



I ended up on a frontend project recently and I am doing my best to get out of it. Its a nightmare.

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.


That's a pretty silly opinion. The fact is that writing interface code is actually hard, and it tends to have many moving parts that are hard to fit into any abstraction. Have you tried writing, say, iOS interface code? It's a bloated monstrosity, although autocomplete is a tiny bit better. There's a reason that so many companies ship electron and react native based apps, even though they have worse performance. It sounds like you've gotten into a field that you always held a misplaced disdain for, you've discovered that it was harder than you thought, and now you are blaming your tools.


The reason is that they can hire from a massive pool of developers and target Mac, Windows, and Linux all with a single application and UX.

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.


I've written frontend apps in C++ with Qt. Please don't take my hate of frontend Javascript personally -- I really do hate it though.

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.


"Hard" or just frustrating? I have found the latter to be true. You're not solving difficult technical problems; you're fighting your tools and figuring out the quirks of the hundreds of abstractions and third party libraries you rely upon to make widgets do their thing.


Hard isn't the right word. Unnecessarily complex is more accurate.

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.


> That's a pretty silly opinion. The fact is that writing interface code is actually hard, and it tends to have many moving parts that are hard to fit into any abstraction.

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.


After completing a tiny project in VueJS+Bulma where I was not 100% happy with what I'm delivering, I was playing with Google Cloud Platform "console", and oh boy, do they get their interactions right.

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..)


I just looked into Angular4. the command (ng new new-app, yes it has its own cli). creates a tree with the following: 3098 directories, 21504 files everything it does is printing "app works!" well to be fair to angular4, the problem here is the cargo cult of js/ts and to get a full experience they just pack everything (which you might need) together.


With the rise of single page applications there is immense demand for the rigor and form that seasoned back-end developers can bring to front-end teams.

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.


You should take the advice of this comment. The reason there are many moving parts is that the space is retooling to push the limits of what is possible. If you enjoy learning and solving problems, it's great.


They hardly make anything that was not already possible with PHP and its tooling 10 years ago.

Well, maybe there is more animations, more tracking and slower initial page loads.


Thanks! This is super useful and inspiring.


If you have 10 years of experience and still think of yourself as "a backend guy", you're doing something massively wrong.

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.


I have no clue what you're talking about re docs - i went from zero front-end experience to having a working spa with router and redux and material components in like 2 weeks after going through the react training tut and abramov's redux videos on egghead - maybe you're the one that's not good as you think. people dramatically exaggerate how "messy" the react ecosystem is. you can figure everything out by using chrome dev tools with the react and redux extensions and a little chatting on #reactjs. but whatever more full stack jobs for me I guess.


you needed

- 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.


Gosh, you sound like there's nothing to learn on backend.

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.


Frankly asking here about frontend is a bit pointless as it's too fashionable to bash it.

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


From my very limited view in my opinion it's not worth it. There is an abundance of new frameworks and libraries and everybody wants to go for the "new cool thing". Things break a lot, things change fast and you need to always learn new stuff which are not necessarily better. It seem annoying and overkill to keep up with everything in the front-end world. Plus, there are no interesting problems to solve there.


"Plus, there are no interesting problems to solve there."

This is laughable and short sighted.


Why give throwaway advice? "I don't really know the space, but here's what you should do..."


Did I say I don't know the space? Does it sound like I never did front-end development? You should learn how to parse properly. I tried it, it sucks, and that's why.


I should warn you that employers tend to look at front end skills as an excuse to pay you less.

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.


Terrible idea. Stay away from that.

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.


Should you gain more experience with front-end, especially Javascript? Yes.

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.


Is it worth it?

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.


Front-end is fast moving indeed. I don't have any definitive answers for you, other than to say that in the front-end vs. back-end equation, front-end is lot less stable and is going to require more time keeping up with new developments.


Indeed, there's a new shiny framework every other week.


The demand for skilled Front-end engineers have gone up. Looking at the responses from this post you can see that a lot of back-end engineers find it hard to tame the beast that is Javascript & this mis-understanding has slowly turned to hate. Thus while they run away from it, this leaves an large opening. Let's face it the bulk of services we use now live on the web and Front-end is going to be around for a long time. Someone has to take on this task, this is why over the years I've personally seen front-end engineers earn the same as back-end engineers I don't have the statistics but I know folks personally. As people run away from JS this creates a demand for front-end heroes willing to take on the ever changing landscape turbulent but necessary. For crying out loud you are reading this comment on a page.


Sure, it's also what we call a fullstack developer ;)


+1 to this.

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.


A bigger question would be are you willing to take a step back. In your previous role you were probably fairly senior developer. Moving to the frontend you'll probably be more junior are you okay with that change?


I've never understood the split between front end and back end.

Whenever 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.


This is like saying you never understood the split between a carpenter and a welder, when both are involved in producing the finished product of say, a cabinet.

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.


Difference between knowing it and being good at it. Knowing how to do a join query does not make you a full stack dev


ITT: Lots of front-end bashing and humour.


I'm a back-end Java/Scala dev too with a bit of experience in front-end tech (mostly for our internal data management web app) and honestly, I find front-end stuff awfully tedious and messy.

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: