My name is Stephen Fluin, and I’m a Developer Advocate on the Angular team at Google. I have the privilege to work with thousands of developers and companies each year, including a visit to Japan this year to participate in the amazing ng-Japan event.
From talking to thousands of developers, it’s clear that building great applications quickly is a key challenge. To empower employees and partners via line-of-business applications, and to engage with customers successfully requires the ability to build experiences at scale across the organization.
Angular is a platform that understands these problems, and so I ask almost everyone I meet why they use Angular. These are the top 5 reasons I hear.
Angular is Opinionated
Throughout any development process, there are thousands of decisions that need to be made, from making decisions about product features to the technology decisions that will affect future agility of the codebase.
Angular is opinionated, giving developers defaults for things like network connectivity, state management, language choice, build toolchain. These defaults are continually tested and validated with each other to ensure that the Angular platform moves forward at a steady and reliable pace. These opinions and defaults have been designed with freedom in mind as well. There are a lot of different organizational needs, so Angular lets you swap out these defaults wherever appropriate. A great example of this is our Material Design library. Material Design was built to take advantage of the latest and greatest of Angular, but Angular allows companies to build or pick any UI Library that meets their needs.
Angular is Scaled
Angular was created at Google to solve Google-scale problems. To Google, this means millions of lines of code, thousands of engineers, widely varying project schedules, requirements, and workflows. The platform is designed to enable you to build and manage shared code, and to divide work among appropriate roles. Many teams have separate designers, engineers, quality assurance, and other roles. The Component model used in Angular was designed to separate these concerns, and to allow a greater number of developers to collaborate.
Maintainability is another concern for most developers. Angular addresses maintainability in two main ways. First, Angular developers use TypeScript, which allows developers to find bugs and mistakes earlier in the process. TypeScript also allows developers that are new to a codebase to more quickly get up to speed due to their ability to more quickly see the types of data moving through the application. The Angular team built Angular with TypeScript for these reasons. Finally, Angular focuses on testability. Dependency injection is a core part of Angular that makes tests easier to write. Angular also includes support for end to end testing with Protractor.
Angular is Trustworthy
The Angular team is committed to evolving Angular in a careful and planned manner, with a publicly announced a release schedule that allows companies to understand and plan for future changes to the platform.
Because Angular is a Google product, it is able to take advantage of Google’s testing infrastructure. Every change that is made to Angular is validated against every Angular project within Google. This means that before any public release, the framework is already in use across hundreds projects, maximizing the chance that there are no unintentional breaking changes or regressions.
Angular is Familiar
Developers who use Angular mostly come from one of two backgrounds. The first is developers with experience in AngularJS. These developers are already familiar with declarative templates, dependency injection, pipes, services, and many of the concepts that are core to Angular. For these developers, there is a level of familiarity that makes getting up to speed faster. Enabling migration from AngularJS to Angular was one of the design goals, and ngUpgrade allows companies to slowly and incrementally move from AngularJS to Angular.
The other common background includes developers coming from Java or C#.NET. Both of these languages rely on typing, and have a centralized concept of an application that is very similar to the architecture required by Angular. Angular applications are broken into modules and components, and developers have the ability to import and export subparts of their application as needed. This is a very familiar mental model and also helps developers get up to speed more quickly, and it helps them architect their applications successfully.
Angular has a strong Ecosystem
There are thousands of reusable tools, libraries, and code samples across the internet for Angular and AngularJS, and a huge number of these tools have either been updated to work with Angular, or are already in the process of being updated. Developers such as VMWare, Teradata, ag-Grid, NativeScript, and others fully support Angular.
The Angular ecosystem also includes companies providing public and corporate training like Oasis Digital, Thinkster, Galvanize, and Thoughtram. There are companies providing consulting where the majority of their business is Angular, such as Rangle, Nrwl, or Ideablade.
I want to end by thanking the whole ng-Japan community and thank YOU for reading this post because YOU are the people that make Angular awesome.