I want to start off with some numbers – everyone loves numbers, right?
80% of internet users have a smartphone. 1 billion cellphones will be sold in 2016 – double the number of PCs. $28.7 Billion were spent on mobile advertisement in 2015, a number which will grow to $65 Billion by 2019. We spend 2.8 hours a day on the smartphone (up from 18 minutes in 2008). There are over 4 million applications in the various app stores around the world and there are an estimated 2.3 million mobile developers worldwide.
So what do these numbers mean anyway?
Well, first of all it means that we are slowly turning into application-downloading-emoji-speaking zombies, but more importantly it means that mobile is on an ongoing trend, which means that there are more developers, more opinions, more frameworks, more tooling and in general a bigger headache for the average mobile developer who just wants to build an app which is fast, easy to write, that is cross-platform and also has that slick look-and-feel in every single smartphone across the globe (oh, and did I mention there are over 4000 different Android based devices?)
So, what are the trends? What type of application do I write? Which is faster? Which is more cost effective? What are the drawbacks?
Easy now… those are a lot of questions. I will try to cover them in this blog and give my $0.02 about the future and what this future may be impacted by.
First, let’s take a trip down memory lane and see how mobile development started and where it is now:
During the same year, the HTML5 specification was first drafted to signal the future of web development.
In 2009, a new approach to mobile development came into play – “Write once, run anywhere” which was coined originally by Sun regarding Java.
The motivation behind this approach was the growing number of applications and the need to give clients both iOS and Android versions of the application. Native development has a few major drawbacks in this respect:
- The need to maintain multiple codebases
- More manpower is required
- More knowledge is required (Java, Objective C)
- More time is required to develop features
There were a few drawbacks which reside with this approach to this very day:
- Look and feel – since HTML and CSS are in charge of design, it doesn’t have the native look-and-feel.
- Device support – Support for built-in phone functionalities (camera, GPS, etc…) is not complete (no access to native UI components in Phonegap for example).
The emergence of hybrid applications caused a big debate over the efficiency and deliverability of the hybrid applications vs. the fact that they don’t have the native look-and-feel. For example: Facebook created a hybrid application which they later replaced by a native application.
In 2011, Xamarin came out offering a somewhat new approach – develop mobile applications in C# which will then be packaged into iOS or Android using their respective native UI and allowing access to the native phone functionalities.
Xamarin was a good solution though it did require developers to have 2 environments – one for iOS and one for Android. There would be 2 different builds and access to native functionalities/UI was different. This was not the cross platform development people had hoped for.
With the growing popularity in Angular JS, Ionic Framework was released in 2013, offering the hybrid application development build on top of AngularJS directives wrapped in Phonegap giving a framework which makes it easy to build cross platform applications.
Ionic is a good solution, focusing on native look and feel, offering labs, tooling, UIs and a showcase allowing developers to learn and develop great hybrid applications.
In 2014, Xamarin came out with Xamarin.Forms, which was basically what was missing from their solution in the first place – “write once”. Xamarin.Forms allowed for the true cross platform solution. Xamarin’s solution is nice, but for complex applications, it comes short.
Facebook claimed that not all devices are born equal and as such, they are all different and when developing applications, we need to take that into consideration. Hybrid applications had tried to give applications the same t-shirt, while Facebook is educating developers to be able to create their own different t-shirts for different devices.
There are downsides to this approach:
- While making UI development much easier, developers are still required to know Java and Objective C in order to put it all together.
- React Native is still very early in its lifetime, which means that support and community is not as busy and helpful like former frameworks
That being said we need not only to take a look at the here and now. We should look to the future and try to figure out where the world is going, where technology is evolving and which requirements will come up in the future:
- Richer applications – users are already accustomed to high quality applications and will expect richer and more interactive applications in the future.
- Cross platform development – as more devices and operating systems are going out with the development of smartphones, the need for cross-platform development becomes more and more acute.
- IoT (Internet of Things) – 72.1 million wearable devices has been shipped in 2015. By 2020 more than 5 billion people and 50 billion things will be connected to each other. Many of these devices connect to smartphones and are controlled by applications.
- Stronger devices – one of the hybrid application’s problems is that due to its architecture, the performance of applications is affected. In the future smartphones will get stronger and stronger, giving more room to maneuver.
- E-Commerce – 27% of retail e-commerce sales in 2015 were made on smartphones. The need for applications to be able to process transactions will become a requirement.
- Tooling – every day more and more 3rd party development tools are released. Tooling takes a big part when developers wish to reduce production life-cycle and time-to-market.
- Security – People pay a lot of attention to the safety of their data. As the Gartner report showed, 3 out of every 4 applications fail basic security requirements in 2015. As a result security will become more and more tightened on iOS and Android.
In conclusion, mobile development has already evolved quite a bit in the past 7 years and will continue to evolve rapidly as both technology and market demands become more complex.
The hybrid approach received a lot of momentum but ultimately fails to deliver the quality and richness mobile users are used to.
That being said, the need for cross-platform abilities remain and will become more acute in the future – as long as native mobile development still exists.
Currently the trend is going towards Facebook’s React Native, although I have no doubt more approaches, more frameworks and more tools will add a few more twists in this already thick plot.