zaGarage | How social, mobile & cloud technologies can have positive impact on business & society.

Getting started with app development

Nikhil written by Nikhil

Best practices and guidelines for getting started on mobile app development

It was just a few months back when some of my friends were arguing upon which Mobile Operating System was the one to look out for in terms of performance, popularity and most importantly – Rich App support. The contenders were Google Android, Apple iOS and the Blackberry OS. It was quite amazing to see how each one of my friends tried to prove his point by listing all the possible features of the OS he supported.(I am pretty sure we would have had a clear winner in Apple had this discussion been taking place in my office seeing the fan following it has here :D ). Little was I aware that I will be moved to Blackberry App Development for a secure messaging application pretty soon.

The idea of developing lightweight but useful mobile applications has always excited me, even more so after the recent breakthroughs in tablet device technologies. But it’s once you start working on it that you realize the real potential of mobile technologies. Following are my realizations so far as well as guidelines which I think will help anyone interested in knowing the basic aspects of mobile application development:

1. Identify the de-facto user

Due to the possibility of a considerable fraction of the user base being web illiterate, the mobile Apps should have minimal complexities in terms of user experience. It is always worth the money to spare some resources for analyzing the expectations of the user group your application targets. Also all functionality of the Application should be accessible with the minimal key presses and screens spanned. This not only makes it simple for the user to navigate through the application but also helps in keeping the App lightweight and avoids adverse effects on the battery life of the hand-held.

2. Never leave the user on an Alien land

One should always try to keep the UI and the flow of control in accordance with the similar default apps for the respective platform by providing intuitive UI components and menu options to the user. It is important to realize that a Mobile App UI is very different from a Web App UI. For instance, we are not required to provide a global header menu throughout the application which is an absolute necessity for most Web Apps these days. One should minimize redundancy in the UI and make the user feel at home when navigating through the App.

3. Are they launching a new OS version again?? :o

As the advent of Mobile technologies is relatively new, the enhancements made by the OS and IDE vendors are considerable as well as frequent. Obviously one would want to make use of the latest IDE to utilize its abilities most extensively but the previous versions of the OS may or may not support the latest IDE features. There are two ways out of such situations: one is you make different versions of your App corresponding to different versions of the OS and the other being writing single code and using techniques like version dependent pre-processing to get a version independent App. One can always have a trade-off(which we did for our BB App) by identifying the OS version most extensively used, developing the App using the latest compatible IDE for that OS version and then customizing the Application as new features and versions come along.

4. Screen Size and resolution – Theory of Relativity

With the ever increasing market of handheld devices, we have a new device with different screen sizes and resolutions coming up almost every week. The best way to make your application compatible to them is by making the dimensions of the UI components as well as the font sizes relative to the screen dimensions.

5. Mixing Mobile and Cloud

As is the case with the application we are currently working on, by using cloud computing, one can boost up the performance of your Mobile App hence avoiding the pain of performing complex tasks on the hand-held by leaving them to the cloud. The only tradeoff here that needs to be taken care of is to minimize the use of the resources of the device as the use of cloud calls for setting up a connection between the device and the cloud. This comes at an expense of battery power and network bandwidth (that’s why one should prefer push technology over polling). So, one should minimize the no. of requests to the cloud from the device but still most of the complex tasks should be left to the cloud itself.

6. Bad Network and no donut for you –not anymore

A local persistent storage is what comes to our rescue in such situations. We might want to provide access to some of features of the App even if there is no connectivity. And nowadays when you have 32GB of memory in an iPhone at your disposition, you might not be bothered about the amount of data you want to persist. Blackberry provides its own inbuilt library to support SQLite in its latest IDE but one might need to write one’s own encryption/decryption algorithms in case of iOS and Android.

Needless to say, while designing the architecture of the App, the use of most efficient algorithms and data structures should be ensured. Since the mobile technologies are still new, the Developer forums for the various IDEs are the space to watch out for to find out the best practices for anything related to respective mobile app development. So, in case one wants to read further about getting started on a particular OS vendor, following are the links for Andriod, Blackberry and iPhone one should follow religiously. The support forums of StackOverflow also provide quick responses from experts for any concern on development on any of the OS

Leave a Reply