Let us take a case where you have an app on production. The app uses some framework and a new version with major architecture changes in the framework is released. Do you upgrade?? Or continue with the old framework version. This problem becomes even more complex if,
- The product is in early stages, which essentially means there would be a lot of changes, with a very less turn around time.
- The framework itself at the first place is relatively newer to your team.
This exactly happened with me. Thought, I will share my though process and how I made the decision. It may help somebody perhaps!!
My company excels in Ruby, Ruby on Rails & Angular. Recently one of our esteemed client threw a technical challenge on us. They wanted us to build a MOBILE app using the Ionic framework to complement the Web application we were developing. We had never done this, did not have any in-house expertise, so we were reluctant and pushed back. But, given to the client’s faith and confidence in us, we gave it a thought. Given that we had Angular expertise, this was not completely off the track and took up the challenge.
The team had a learning curve for Ionic-1, but we got the first version out to production (Google play) in 3 months. In next couple of months we had more versions released. But, a product has a life cycle!! We had redesigned the UI.
The catastrophe – by this time Ionic-2 (which uses Angular-2) was released.
It was time to decide whether to continue with Ionic-1 OR switch to Ionic-2. Any one in mind would say UPGRADE (There are many blogs that do a descent comparison). But this wasn’t an easy decision to take –
- The team had just learnt Ionic-1, now time to learn Ionic-2, huh??
- The bigger problem, need to first learn Angular-2. It has a completely different architecture & scripting language.
- The app is on production and in dire need for an UI upgrade.
- The product had just entered the marked so timing was the key. Any delays could have extreme impact, to the extent that we may lose business and most importantly our reputation.
- We did not know if all the plugins (e.g. cordova-plugin-sms, razorpay-cordova, cordova-plugin-push etc.) would work out of the box. And if they do whether the way to use would be same or different.
- The UI was so different that it made no sense to change the existing code but redevelop the UI (Views ONLY). If we live with existing framework, the changes to controllers and models (Angular term) would be negligible. But, this would go haywire if we use Ionic-2/Angular-2 as it would then be completely new architecture of components & providers. Essentially, it would mean more time spent and thus MONEY!!
- New framework supports Android 4.4 and above.
- Stable build of Ionic 2 was still not out. The community was hoping it would be out soon but….
The thought process: Key considerations
- Ionic 1 would soon be deprecated and so the related libraries. Surely wanted to use Ionic 2+Angular 2 for being latest technology and leverage its benefits, like performance, code maintenance etc.
- Technically we needed to decide which one we should go for and understand the differences between Ionic 1+Angular 1 and Ionic 2+Angular 2 and evaluate technically which is better.
- Cost benefit analysis –
- How much time we need to understand Angular 2 and Ionic 2.
- This involves understanding the new scripting language
- How to design the UI components.
- How do the UI components interact with providers and in turn how to call APIs.
- Critical changes to architecture that will need converting controllers & models to providers.
- Essentially, how much extra time will be needed, i.e. how much cost of development goes up!
- Is the team willing & capable of taking the pressure?
The entire development team was very excited to learn the new framework and ready to put in the extra efforts to learn and mitigate the risk of running way out of schedule. So I went ahead and did a detailed estimation, figured out that the upgrade would cost us a month and half. Now, it was easy, I had to weigh the cost of these hours against the benefit of getting latest version. The answers was – UPGRADE. The internal decision was made.
But, now comes the most important factor discuss the pros and cons with the client and suggest the approach that is beneficial for the project in long run. Our client is very understanding and he readily approved the additional cost.
The end result – in less than 3 months we are production ready for the Ionic 2 build. Kudos to the efforts of the entire team too!!
Indeed it was a very good decision to go with Ionic 2.
- The team now knows Angular 2 and tending to be an expert.
- The new build is much faster.
- Last but not the least, the new build is out in estimated time. Well before the New Year, begins.
In the next post, I shall detail out more about the “Things to keep in mind while migrating to Ionic-2”
That’s all folks !!