I’ve been involved in running a mobile software company for 8 years now, and I’ve often been struck by the lack of business-focused content available about the different ways to develop for mobile devices. Do a quick Google and you’ll find a lot of references to native apps, web apps, hybrid apps, HTML5 etc. – most of the information is over-simplistic and much is downright confusing.
In writing this post I want to try and buck that trend and focus on what actually matters – why on earth should this be important to you?
However I guess I need to start by providing some definition of terms:
A native app is one written specifically to run on a given operating system (OS), principally iOS, Android and Windows. The OS vendors have created their own languages and development environments so, for instance, if you’re writing for iOS you use SWIFT and Xcode, and for Android you use Google’s version of Java and Android Studio.
Aaaarrrgh! I can hear all my developer friends berating me for this massive over-simplification: “It is actually possible to develop native apps using Xamarin”; “we use Eclipse for our Android development”; “a web-app is not exactly…”
Yes, please forgive my crude attempts to simplify tech for a business audience, as I forgive your terrible spelling. Now let me move on to the good stuff:
Getting the black and white definitions exactly correct is not all that important, because most apps combine different technologies. Hybrid apps can contain any combination of native and web functionality; from apps that are just web content in a simple native “wrapper”, to apps that are almost entirely native but contain one or two web views. What really matters are the key elements of the user experience.
Tying this into the business app market specifically, the important things to look for are:
- Ability to use offline: the users of mobile business apps are by nature field-based, and the quantity of data which needs to be transferred is often substantial, particularly where images need to be uploaded. For most business app requirements it’s therefore important that the user can do most of their job without needing to worry about whether they have network or Wi-Fi coverage. Where practical, the app should handle upload and download in the background (i.e. without impacting use of the interface) as and when a network is available.
- User interface (UI): there are a couple of relevant aspects to this – performance and usability. Does the UI feel as responsive as you would expect? And is it appropriate to all the devices you want to support, including things like button styles, fonts and animations? For example, Android users often get quite upset if they’re given an app that looks like it was designed for iOS (software back-buttons are a particular no-no!)
- Access to device functions: your app may need to access various device and OS functions such as camera, GPS, push notifications etc.
And how does this relate to the question of native app development? Well, the above requirements will be better supported in apps where a significant part of the code is written natively. How much of the code? That’s less important or, rather, it’s more dependent on specific requirements.
If you’re buying a pre-developed software or SaaS solution, review it against the above criteria as well as ensuring it meets your other functional needs. If you’re planning to write bespoke, please note that all your native code will need to be redeveloped for each OS you want to support. However don’t underestimate the benefits of native apps, and make sure your developer has good answers to the above questions before deciding on your technology mix.