ng-conf 2015

Last month I sent out a survey to dozens of the top developers in the Angular community. The feedback I got was tremendous. Thank you to everyone who participated. Below is a summary of the results.

What do you think Angular 1.x does better than other frameworks?

Top answers:

Easy to get started Community Fully integrated framework Testing Designer-friendly templates

My analysis:

One thing Angular nailed out of the park from almost day one is making it easy for beginners (#1) to get started. I believe a lot of this comes from being able to work in raw HTML with plain JavaScript objects. That is why developers coming from jQuery as well as back-end developers that don’t use JavaScript often and even designers can quickly get up and running with Angular.

The Angular community (#2) is large, but I don’t think that is why many responders mentioned it as a distinguishing factor. The size isn’t nearly as important as the strong culture of openness, sharing and helping each other. This tweet says all you have to know about the Angular community:

Daniel had just written a scathing anti-Angular post but Igor sought him out at the GDE summit to mend fences. During the ng-conf keynote Igor and Brad talked about the importance helping each other and working with the React and Ember communities. I think most of the Angular community has taken that message to heart.

I thought some of the survey responses about the importance of Angular being a fully integrated framework (#3) were interesting. It seems like there were two parts to this sentiment. First is that some developers seem to prefer frameworks that have most of what they need to build a web app. They don’t have to worry about piecing together many different libraries. The second part, though, is the specific way in which Angular integrates everything. For example, it is really nice how hooks into ngAnimate are built into many other core components.

What else do you like about Angular 1.x?

Top answers:

Two-way data binding Working with plain JavaScript objects Dependency Injection Code organization Declarative code in HTML

My analysis:

It is interesting that two-way data binding (#1) was the number one response but it will not exist in Angular 2. It is also interesting to note that while working with plain JavaScript objects (#2) is a selling point, it is also the source of most Angular 1.x performance issues.

The responders mostly talked about Angular’s code organization (#4) relative to jQuery spaghetti code. While Angular’s module system has helped a great deal in that regard, there has been a lot of debate within the community the past couple years over the best way to organize your code. Recently, a lot of those different opinions have started to coalesce into a component-based design pattern that aligns with the ideas in Angular 2.

Why do you continue to use Angular 1.x despite its gotchas?

Top answers:

I know how to work around the gotchas, so they don’t bother me The good stuff far outweighs any bad parts Angular 2 addresses all of my concerns

My analysis:

The first answer was checked by every single responder. I am not surprised by this. I wrote last year about how a lot of the Angular performance gripes were overblown. tl;dr is that Angular 1.x has flaws, but most of them are relatively easy to avoid and/or work around.

What excites you most about Angular 2?

Top answers:

My analysis:

On paper it seems like Angular 2 will address all of the common criticisms about Angular 1.x, but it remains to be seen whether all of this promise will be fulfilled. Will things be as good as advertised?

Over the past couple months I have been helping with the Angular 2 server rendering effort. I am not sure how everything will turn out, but I do feel really good about the way things are going (both with server rendering and Angular 2 in general).

Why do you think developers will choose Angular 2 over React?

Top answers:

More complete framework Ability to use different types of data objects Community More familiar to enterprise developers Preference of HTML templates over JSX

My analysis:

The reason I included this question in the survey is that React has a number of great ideas that don’t exist in Angular 1.x but do exist in Angular 2. Things that were major differences in 1.x between React and Angular are now much more subtle and nuanced with 2.0. So, since many of the concepts between Angular and React are now aligned, why would someone chose one over the other?

Probably the biggest difference between Angular 2 and React is that Angular is a complete client-side framework (#1) while React is just the view layer. As mentioned earlier, some developers prefer to rely on one primary framework instead of piecing together their front-end from many different libraries.

The ability in Angular 2 to use different data objects (#2) is really interesting. I mentioned earlier that developers love using plain JavaScript objects, but sometimes that comes at the cost of performance. The new change detection system, however, allows for different types of objects to be used. While React apps generally stick to only immutable data, Angular 2 developers can use the appropriate type of object for a given situation. Plain objects are great for beginners and small apps. Immutable objects are great for large, highly performant apps. Observables are a perfect fit for reactive apps.

The idea that Angular 2 is more familiar to enterprise developers (#4) comes from the fact that when you combine TypeScript with decorators and a class-heavy codebase, Angular 2 starts to look really familiar to someone coming from a Java or .NET background. One of the survey responders predicted that Angular will continue to rule the enterprise world while React will rule the startup world.

I believe a developer’s preference for HTML over JSX (#5) goes in the personal taste category. For example, I strongly prefer the way Angular 2 inlines HTML within components over JSX, but I can’t give you a reason other than it just feels right to me.

Wrap up

Would you answer these survey questions differently? Do you think my analysis of the results are off base? Make sure you either leave a note here or hit me up on Twitter @jeffwhelpley.