How to approach mobile development today?

Today, developers increasingly need to be thinking about a mobile component and scenario, so they have to consider the actual fragmentation of this incredibly fast growing market if they want to be successful. I discussed the differentiation and fragmentation of the ecosystem in my previous post. In this post I am trying to synthetize what the approach to a mobile development looks like today.

What are some of the questions a developer needs to ask before starting a mobile application project?

  • Do I have an existing solution that I can consider reusing?
  • What technologies am I (or my teams) more familiar with?
  • What markets do I want to target (consumer, enterprise, developing countries, industrialized countries…)?
  • What are my competitors doing?
  • Where will I make the most profit?
  • What choice will bring me to market faster?
  • What is the future of the technologies I will be using?
  • What are the security/compliance/confidentiality requirements?
  • What is the upfront cost?
  • What are my partners using (so I can interface with them easily)?
  • Should it be proprietary or open-source?
  • Should I bet on industry standards or go native?
  • Should I optimize for each target platform or should I leverage a cross-platforms solution?
  • Should it be free with ads or paid?
  • Will my grandma use this solution?

All the responses to these questions likely come with compromises that will impact the customer reach, the revenue, the flexibility, the maintenance cost … There is no absolute right response… it depends…

Actually, when someone wants to make its services or applications available on different mobile platforms, they are offered several different approaches (bear with me here, I might be over-simplifying, but I do have a point I want to make…) that they will have to choose between based on responses to all these questions:

  • Go the native way: create several applications that will be integrated and optimized for each of the platforms
  • Go the Web way: create a web application that will be consumed within the device’s Web browser
  • Go the cross-platform way: find some good cross-platform solution that will allow him to minimize the amount of code he is developing
  • Go the Hybrid way: something in between all of the above…

Note that these approaches are not exclusive.

Need to think “interoperability”

This is where interoperability comes into the game. Whichever way you decide to go, you will need to think about the following things:

  • When going the native way: you might need to connect your application to a backend that is based on a platform from a different software company than your mobile platform (i.e. connect to an Azure backend from an Android application or to an AWS backend from a Windows Phone application.)
  • When going the Web way, you will need to adapt your solution and development to the capabilities of the various mobile browsers to deliver a consistent experience.
  • When going cross-platform, you will need to find the right cross-platform solution, framework that is available on all the mobile platforms you need to target and consider the loss in performance or flexibility.
  • When going the hybrid way, well, you basically have all of the above considerations to deal with…

All of these considerations are interoperability ones. In a perfect world, you wouldn’t even have to wonder as all devices would support all sort of apps that connect to all sorts of back ends, and software would be developed with any sort of tool… (not sure I am depicting an ideal world here J).

So my next blog post will take a look at what Interoperability looks like for the mobile platforms these days.