Oh Look A New Framework! My Experiences With the Process of Migrating from Angular 1 to Angular 4
I will preface this post first and foremost with this statement;
I'm not sure that this experience is the same for everybody. It is my opinion and other people points of view are valid.The reason I felt compelled to start with that is that anytime you start to talk in the tech world about using a new technology or framework that launches people into a debate of "oh that sucks..." or "this is the greatest...", I don't care about having the argument about the validity of of the tool I want to share my thoughts and experiences so far.
Recently, I have been starting to experiment with Angular 4 for some newer projects that I have been starting to work on. In the past the frontend tools of choice for me have been back in the day using Ember.js, AngularJS version 1, React and other tools and libraries. For me professionally since 2014, my main framework used has been Angular 1 (for reasons i wont discuss here - yes IE8) with Bootstrap as my CSS Framework and Gulp primarily as my build runner. It was great. It was a tech stack that treated me well for a long time and as my skills grew and understanding of the subtile features of the framework I began to be able to do more interesting this surrounding modular code and reusability. After many many years this was something that was becoming even more and more important, being able to have modular reusability with code. I know that seems like common sense but it took a little while to understand why.
In this journey as a primarily front end engineer writing JavaScript in Angular 1 suddenly in 2015 the news of a release of Angular 2 was announced and it threw me off. "Why would they need to release version 2 and why was it drastically different?". Those questions I asked myself day in and day out. The main thing that I could not wrap my head around was "why if there lives a perfectly fine framework that solves my business need here would I switch to something brand new and completely different?". These we tough questions at the time I could not answer. I knew that we had a deadline to build something and learning a new technology while trying to build would clutter up that. It wasn't just learning a new framework conceptually the framework from Angular 1 to Angular 2 was very different and it would have required a large learning curve to begin to work in Typescript and accomplish the task at hand, finishing our projects.
As the years pass, my feeling and strong resentment towards changing frameworks becomes to fade and more stability is brought to the new frameworks. Finally, I decided to take a look at Angular 4 which is the latest and greatest version of the Angular framework and my experience with it has been great so far. The main couple things that I would offer as advice to anybody thinking about upgrading to a new framework or changing how they build their software are these things;
- Understand why you want to use this new technology or framework
- Assess if you have the skills, knowledge, and resources to achieve what you are trying to build.
- Will this new technology or framework offer you or your direct stakeholders positive impact when interacting with your software.
An assessment of your skills and knowledge are key when using a new technology because in the cases where bugs do exist with the framework or library you are trying to use you can overcome some obstacles and contribute to the stability of that framework. Also the most important resource to consider in using a new framework is do i have enough time to use this to build what I need to build correctly and efficiently. If a library or framework was just started like some JS libs seem to come out everyday, it might not be the best thing to be the day 1 user and put that into production right away. Patience might be a great virtue.
Understanding value to you the developer and stakeholder will ultimately help drive these decisions. If you choose a library or framework to use and you can see a 3-5x productivity increase in your workflow and no degradation of the user experience that is something to consider implementing if the other criteria makes sense. Implementing new technology for the sake of implementing new technology is a bad thing.
Lastly, the biggest lesson that I learned from this is that you don't need to rush to change to the latest and greatest or hottest thing out there. Taking your time to learn why and how value can be added with this new tool will help yield better long term results. My journey in learning and transitioning to Angular 4 is just beginning but the lessons learn on the way about the process on how to assess new technologies will be ongoing.