Adopting Angular 2: Day 1
Interest in Angular 2 has spiked as it has recently entered the release candidate stage. I want to share about how we settled on Angular 2, and how we plan to progress forward. To begin, our decision to adopt Angular 2 has some back story.
At work we were in the midst of planning out a platform for a suite of web applications that would be built in the coming months/years. We’ve already built out two such standalone applications. These two were built on Angular 1 and shared many basic things like tooling and some components. That gave us some general requirements for things we wanted to simplify by pushing common things to an abstracted platform.
Our needs are actually fairly simple.
- The design should match Material Design specifications. To date we’ve been using Angular 1 and Angular Material.
- The build tooling needed to be abstracted so we didn’t end up with a dozen slightly different build processes.
- Code style and architecture should be consistent across all projects, and enforced with some tooling.
We have other needs, but this summarizes the primary goals. We were already set on using a version of Angular so that would help lay the foundation for architecture, design patterns, and so forth.
To Angular or not Angular 2
We’ve already prototyped some of this platform in Angular 1. It is fairly well understood by our team, we’ve built many applications with it already, and it was fairly easy to reason about building a platform.
So why did we decide to switch to Angular 2? There are a number of reasons
- It’s a challenge. We were looking for something that would expand our skills as individuals and as a team.
- Opportunities to contribute. The Angular 1 ecosystem is heavily saturated, but Angular 2 has room for contributions.
- Future facing. Angular 1 will be around for a while, but we are in a position where we can set the standards for the coming years.
- We have time. Our timeline is fluid at the moment, and we’re in a fortunate position where we are ahead of things and can take some time to iron out our platform with Angular 2.
Essentially, we decided the future is Angular 2 so we should push forward full steam using it. Luckily we’re in a good position to leverage it right now without immediate pressure to deliver a platform in a very short timeline.
We switched to Angular 2 because we expect it will provide us the greatest long term benefit over Angular 1.
Our first day with Angular 2
After making the decision, we set out to start tackling a few basics.
- We needed to setup a foundation for this platform, wire up dependencies, and all that fun stuff.
- We had to evaluate current state of Angular Material 2 and figure out the gaps.
- We needed to train up more on Angular 2 as a team, and understand how to abstract components and services properly.
Even one day into this project, we’ve got a functional base that could be pulled into external projects, base styling setup, a foundation for documentation site, and have made progress porting a couple custom components from Angular 1 to Angular 2.
May the (Angular 2) force be with us
It’s not all sunshine and roses with Angular 2. There are some notable hurdles for us to address in the coming months. We will be working with rapidly changing dependencies, discovering best practices and patterns, and still expected to deliver meaningful return in the coming weeks. We recognize right now there is short term pain in order to adopt Angular 2.
The fundamental decision we had to make was if we wanted to endure this initial pain to build a better platform. We are also quite energized by the opportunity to learn and contribute, that we’re possibly in a honeymoon phase of the project.
I’ll continue to share details about our progress on a regular basis, including both the technical and emotional struggles we may face in the coming weeks and months.