Mobile Development Strategy

It has taken me a long time to figure out how to write this page. One can write books on the subject. So I just thought I would try to keep it as simple as I could and touch on our mobile development strategy.

What are our goals?

  • to create a mobile application that will provide features that students will find useful.
  • to allow students to perform tasks quickly and access key information in a very efficient manner.
  • to access the broadest possible user base (i.e. we want all our students to use it)
  • to provide a value added service to the student and enhance their campus experience.
  • to take advantage of phone capabilities to enhance the value and usefulness of the app.

What are our constraints?

  • limited resources, primarily money and manpower.

What are/were our options that would allow us to achieve our goals given our constraints?

  1. Build native applications using native languages such as Java for Google Android or iOS for Apple phones/tablets.
  2. Build mobile web application.
  3. Use a framework to create a native application where possible and a mobile web app where not. ( a hybrid app)

How about option #1?

We don’t have the manpower to develop and support a native application for each mobile operating system we want to support.

How about option #2?

We actually “sort of” did this with our first version. It was a hybrid framework as well but the interface that the user was using was web based. The big issue for us was the app was very slow to respond to user interactions. Mobile web applications are gaining in popularity because devices are getting faster, the mobile web is getting faster, the tools used to run the mobile web apps are faster as well. So this is a very good strategy for those organizations who are very short on time, manpower and money. If you want a mobile web app but can only supply one developer on a part-time basis then this is your best choice. There are MANY mobile web frameworks for you to choose from but here are some of my favorites.

Keep in mind that typically with this option you can not access device capabilities such as the file system, contacts, accelerometer, etc.

How about Option #3?

This is what we decided to go with. With our current framework, Titanium we are able to create rich native apps all from a single code base.

There are many vendors of hybrid mobile application frameworks, they all pretty much work in a similar fashion. Some are better then others in terms of performance characteristics, code maintanence, support, cost, so make sure you do your homework here. Here are some alternative vendors that are almost as good as Titanium :).

I want to point one important thing out with respect to frameworks in general. While it is true, you can deploy your app (mobile app or mobile web app) to multiple mobile operating systems from a single code base, often you still have to handle various aspects of the different mobile operating systems in your code. For example, Apple’s iOS is very different from Android or Windows, they don’t always have similar pieces of functionality. This means when you are using a framework you often have to check for what type of mobile operating system you are using and handle each case in a separate manner.

This issue is important to consider when you are thinking about what operating systems to support and how many. While you are using a single code base, it still takes time to write in the code to handle the different implementations of various operating system features. Also you have to support those long term as well. So perhaps supporting a mobile operating system that has single digit market share may not make sense when you consider the time it might take to handle that operating system in your code.

If I have left anything out or you want to ask questions just send me an email.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>