I've been trying to learn Angular2 recently, maybe I'm not a good developer (but I faired ok with Erlang :D), but it really is such a struggle. Documentation is lacking, and what is available is often wrong or outdated. It doesn't help that half the tools and libraries are still in 'beta' and breaking changes are seen as a way of life.
This post really sums up my experience, and I've done plenty of Javascript before (I just haven't kept on top of client side frameworks):
If I were to hire someone to work with me, I would try and find someone who has experience with Angular2. Angular2 vs JavaScript are effectively different technologies compared to Ruby vs Rails.
I'd actually say for someone completely new (e.g. locked in a basement doing C or Java for the last 20 years), learning Erlang would be far easier than learning modern JavaScript and Angular2.
Angular2 is a special case, in that a lot of the frustrations you're feeling are probably not far off from the frustrations that Angular1 developers are feeling.
The decisions they made going from Angular1 to Angular2 are a big reason I've never really bothered with Angular.
Just on a base level, if a system isn't properly documented, that does make a case for finding someone with indepth knowledge.
But a company using a system that is very poorly documented as their core technology is a big red flag for me.
Some tools are "simple and powerful", other tools are "complex and powerless"¹.
The first set is normally seen as "hard", because it is very easy to shoot oneself at the foot with them, and because experts tend to be attracted by them. The second set is often seen as "easy" because the complex features are normally there to stop novices from harming themselves.
The unexpected thing is that "simple" is much easier to learn than "complex", independently of what other adjectives come bundled with them.
1 - Yes, the other 2 combinations exist. "Simple and powerless" does not make the headlines, and "complex and powerful" is very, very rare.
Angular (prolly the same of Angular2) is that it's magical hiding the underlying browser mechanic, DOM manipulation. It's is hidden below layers of fancy syntax. Whereas with reactjs you have a kind of steap learning curve in the sens that you have to grok an ecosystem of diverse communities (ex: gulp, flux, webpack) but for Javascripters that's almost part of the regular shore when you are used to build you own framework. AND ReactJS reuse most concepts from vanilla Javascript and DOM.
Well yes, Erlang is pretty well-thought out, has a decent standard library, decades of serious production use, and couple of community-blessed books you can learn from.
> I'd actually say for someone completely new (e.g. locked in a basement doing C or Java for the last 20 years), learning Erlang would be far easier than learning modern JavaScript and Angular2.
I suppose that might be the case. It feels incredibly counter-intuitive, but it's not inconceivable that the JS frameworks stray that far from "normal JS".
Were I in this situation as a employer (and co-worker, necessarily, not only in a managerial position), I would probably make the decision to use other technologies and compile to JS, in that case. There's very little to gain from using a framework that by necessity is tied to a crummy language if I can skip using that as a source language anyway, and then I'd just go with something sane like Elm instead.
(Bear in mind, this is coming from someone who doesn't actually work with front-end development, so take it with a grain of salt.)
The AdWords team could have chosen any of a fairly large number of technologies to develop their new front end, but they chose the Dart version of Angular 2 to do so.
CircleCI chose to use ClojureScript and Om instead of using React directly. NoRedInk chose to use Elm instead of writing JavaScript directly. Others have chosen ScalaJS.
It's not popular in the startup world, but plenty of companies chose (and continue to choose) to use GWT to build their in-browser user interfaces. I worked at one of them back in 2010. I had huge doubts about the Java-to-JS compilation process. I'd mostly only seen ugly GWT apps cobboled together from the UGLY base components GWT shipped with. As it turned out, we were able to created our own good looking components quite easily. So long before Angular or React existed, we were able to create a nice an easy to understand component based web app, with business logic split out into services and wired together with dependency injection. It ended up being a sane choice that enabled us to continue developing safely and sanely as the app became larger, and it performed very well on both desktop and mobile browsers. GWT wouldn't be my first choice (or second, or third) in 2016, but it ended up being a pretty good one in 2010.
I'm not saying that choosing a compile-to-JS language that has very different semantics than JS is necessarily sane and practical. But I think that plenty of real world successes demonstrate that this choice can be simultaneously sane, practical, and successful.
Impractical how? I'm curious. Writing JS strikes me as impractical from the get-go. Writing in a managed language that will compile down to JS and give you an escape hatch for when you really need it strikes me as far more practical in the long run.
To clarify, what I mean is that someone who can't learn Elm, PureScript, Bucklescript or the like, very likely isn't a very inquisitive person and isn't someone I'd like to work with. On top of that, someone who can't see why you'd want to write in any of those languages instead of JS very likely isn't someone who I would want to work with, for fairly obvious reasons.
This post really sums up my experience, and I've done plenty of Javascript before (I just haven't kept on top of client side frameworks):
https://hackernoon.com/why-learning-angular-2-was-excruciati...
If I were to hire someone to work with me, I would try and find someone who has experience with Angular2. Angular2 vs JavaScript are effectively different technologies compared to Ruby vs Rails.
I'd actually say for someone completely new (e.g. locked in a basement doing C or Java for the last 20 years), learning Erlang would be far easier than learning modern JavaScript and Angular2.