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?
- Easy to get started
- Fully integrated framework
- Designer-friendly templates
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?
- Two-way data binding
- Dependency Injection
- Code organization
- Declarative code in HTML
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?
- 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
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?
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?
- More complete framework
- Ability to use different types of data objects
- More familiar to enterprise developers
- Preference of HTML templates over JSX
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 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.
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.