Strangely, I see so many new developers rushing toward the front-end, which seems much more complicated in many ways than just building solid web API services, analyzing data, etc.
Strangely, I see so many new developers rushing toward the front-end, which seems much more complicated in many ways than just building solid web API services, analyzing data, etc.
WPF, XAML, iOS, Android, Qt.
None of them suffer from the same craziness of the web world.
I used to do web and don't miss it. Actually it was my experience in Web projects that changed my mind that web should have stayed HTML/CSS.
After a few years with a framework, for all it's worts, you know it inside and out, limitations and all, and you can work around them. For web stuff it feels like everyone excuses having a million and one solutions by shrugging it off and saying "figure out your problem then find what works for those problems". The issue being there are N frameworks for my problem and I only know N/2 of them well enough to even start evaluating if they solve it, and if there are limitations a new feature comes up against, I'm back to square one in searching for another little tool for this new requirement.
There's something freeing about only having a few solid tools at your disposal, vs a million smaller ones with divided mindshare, even if it can be limiting.
If you have problems explaining why features need their time, it's not about your frameworks, it's about explaining the clients in all honesty what happens. Or, if you want to get paid enough, you simply factor in some risks into your budget planning and up your budget. They don't have to know that you only needed 2h to get nearly everything up and running and 6h for that one sneaky feature. Use asymmetric information (https://en.wikipedia.org/wiki/Principal%E2%80%93agent_proble...) to your advantage. It's not about the toolset, it's about your mindset.
In other words, all of the time saved to get to 80% is lost, and then some, because the framework can't do what my project needs.
I've seen this time and time again, with every framework I have ever used.
But I've never experienced this problem on projects where I'm able to choose my tools. I use Django and Vue.js with webpack and I can estimate the time constraints for each feature accurately using that stack which is most important for me.
Maybe you've used too opinionated frameworks in the past. If that is the case, loosely coupled frameworks like ampersand.js or very flexible solutions like Vue.js will be a pleasure for you.
In regards to the Pareto Principle: The 80/20 rule means that you need 80% of your time to finish those 20% outside the scope of your framework, not 20%, so your observation fits with this.
If you do keep up, you'll get amazing job offers.
If you manage to really be on the edge, you can give talks as well, expose yourself as a consultant.
That's much easier in JS than with Ruby, Python or whatever else.
The new problems I'm working to learn to solve are with ML, NLP, etc. I'd like to step away from web services completely soon, and just live completely with data.
Backend can be hard as well when looking for specialized stuff like Elixir, OCaml, Scala, Rust, etc. On the other hand, pure Ruby - Python - Java - C++ that's fairly common and not as likely to fetch high salary, since you'd be competing with a larger talent pool.
I've found for FE work, esp for someone with good sense for the visuals, typical off-shore contractors in Asia do not provide the adequate skillset
"Easiest" area of programming to get a decent job and enter the industry. It's so much easier to find a job in big cities if you know Angular or React. As long as you keep yourself up to date in frameworks and tools you can theoretically stay employed for a long time.
That said, I have heard of plenty of people who had done the above getting burn out or bored after about a decade.
Don't find it surprising that the author intentionally makes his/her story more complex than necessary.
For example, you can use "Typescript+WebPack" instead and ditch all the blah-blah on Babel/SystemJs, but that wouldn't help the naritive much, now would it!
I was talking to somebody at a place where they're throwing away a big custom code base in favor of gluing together a bunch of aaS stuff. Four years ago, the system was cutting edge. Then they had a big round of layoffs, and they only now can afford to do new work again. One of the big factors in the decision was just the cost of getting everything up to date. There was a bunch of failed flavor-of-the-week stuff that needed to be rewritten. There was a bunch of technical debt from using cutting edge stuff (e.g., library versions pinned to particular GitHub hashes, forks of libraries to get that one feature or work around that one bug). And there was just the proliferation of different technologies picked because they were the "best" for the local problem, but definitely not the best when you account for operations and maintenance cost.
I'm hoping that the roulette wheel eventually stops spinning and the JS world settles on something, anything where I can be confident that somebody can come back a couple of years later and be able to extend it without having to throw everything out.
What is worse, a lot of employers have already decided that if your app isn't written in React + Redux + whatever-is-hot-today, it isn't worth doing. I like to keep my stack fairly simple, and my approach apparently doesn't work.
I still do a fair bit of front-end development, but only when its on my own terms.
The front-end is harder IMHO, but as another poster mentioned, the opportunities are tremendous.
And in 2015 you would have been just fine learning Ember or Angular 2.
And in 2014 you would have been just fine learning Angular 1 or Ember.
And in 2013 you would have been just fine learning Backbone and Ember.
And in 2012 you would have been just fine learning Knockout and Backbone...
In nearly every circle of developers I know, they insist you learn plain, vanilla JS first. Jumping in Angular without knowing what a JS object is, understanding how closures work, understanding callbacks, or understanding how JS's "this" works in detail. All things someone should be fluent with before they go jumping into Angular and React.
Also knowing there's a HUGE difference between Angular (which is a full MVC framework) vs. React (which is just the View part of an MVC framework) is a small, but important detail for someone just starting out.
I would actually recommend React over Angular for a beginner, because (assuming Angular 2 here) they're going to have to learn Typescript too. That's a big undertaking.
A beginner could also use plain old ES5 with a JSX transpiler right in web page with React.
VueJs might be a better choice than both of those, but much more limited job opportunities.
That's totally fair and then I would completely agree with your comment.
From a pure computer science perspective, I feel the data structure, algorithms leveraged on the backend side has greater complexity potential.