I Still Hate Angular



I don’t understand the enthusiasm for Angular, but I try. I read Rob Eisenberg’s very in-depth All About Angular 2.0 hoping that I would finally understand what some developers find so appealing about the framework. Instead, I ended up just confirming the things that I hate about it.

Nothing against Rob or his post. He wrote a great overview of the changes in 2.0– I’m just still not sold.

Here are some of the problems I see with the new version:

1. Angular breaks stuff and makes it my problem

There also haven’t been any plans made available regarding a migration story for those who wish to move their Angular 1.x apps over to 2.0 when it becomes available. I think we can and should do work in this area. If that’s important to you as well, please make your voice heard. Be nice of course, but let the Angular team know that this is important to you and that they should be thinking about it and planning for it along the way.

—Rob Eisenberg, All About Angular 2.0

Seriously, a new version of the framework with many major breaking changes, without any plan for existing 1.x code? That’s a big middle finger to everyone who has invested in Angular.

2. The docs suck and the learning curve is a cliff

Let’s be honest…AngularJS isn’t exactly the easiest thing to learn. Yeah, you pick it up and you think to yourself “This is awesome. It’s really easy and magical!!!” Then you start building your app and find yourself going “holy…what!!?? I don’t understand!!!”

—Rob Eisenberg, All About Angular 2.0

Yep, and I have not seen renewed focus on improving the learning experience or documentation for 2.0.

3. There is no core Angular philosophy, only workarounds

A lot of this, once again, stems back to the original design and intent of the library. Originally, there were no custom directives, for example. They were all hardcoded. Then, an API to add them was made available. Originally there were no controllers, then…. You get the picture. This bolting on of features, many which are today considered core ideas, has resulted in a less than elegant API.

—Rob Eisenberg, All About Angular 2.0

Gee, I’m sure the difficulty people have learning and using Angular has nothing to do with the fact that there was no overarching design and every feature was “bolted on” to scratch one team’s itch.

2.0 is supposedly has a “brand new design”, but it also inherits a lot from 1.0, so I can’t help but imagine that concessions were made to current Angular paradigms.

4. Angular 2 is written in a language Google invented, and then compiles into another language Google invented

AtScript is a language that is a superset of ES6 and it’s being used to author Angular 2.0. … For Angular 2.0 the idea was to unify Angular and Angular Dart. … So, the team was able to make AtScript compile to both JavaScript and to Dart.

Emphasis mine.

Hey guys, there’s this great new language for writing programs for the web. It is called JavaScript. Seriously, you guys set up two layers of compilation through immature, non-standard languages? I’m sure nothing will go wrong. I’m sure debugging Angular 2.0 will be easy and carefree.

Before you say “You don’t have to use Dart and AtScript is only for Angular internals.”, ask yourself: What do you think will happen when people want to author extensions or plugins? I think in practice they’ll have to understand some AtScript and Dart.

5. While you are inventing two new syntaxes, might as well create your own lexicon

The only terminology you must understand to get started with Angular 2.0 is: AtScript, TypeScript, metadata annotation, RTTS, Traceur, Dependency Injection (lazy and … not lazy?), Child Injectors, ProtoViews, ViewPort (not the ‘browser window kind’, but a second definition), Directives, Component Directives, Template Directives, Decorator Directives, Child Routers, and Screen Activation. I hope I didn’t miss any. That’s on top of the standard vocabulary of the industry — MVC, Routers, one-way and two-way binding, etc.

Yeah. I don’t think I’ll be making the switch any time soon.
More Posts by Robert Prehn: