Posted on 04/26/2012
If You Have to Build It
Despite our prejudice against native apps, the success of local apps over web pages continues to raise new questions in how to build optimum mobile apps. Depending on your perspective, local, rich client, native apps are a new development in the industry, but they really can be thought of as a resurgence of the truly distributed computing model. There are several emerging guidelines that developers are following when building native smartphone apps. Most of these are quite distinct from best practices in web apps, mobile or otherwise. The guidelines here are really only for informational smartphone apps (for enterprise or consumers). These guidelines do not apply to games or other entertainment apps.
Use What You Got
All smartphones have an array of features, including cameras, micrphones, touch screens and GPS. It may sound trite, but fully exploit these device (or devices) capabilities. All too often we find the specs look more like an app for the desktop than for a smart phone. If you're going to go to the trouble to build a native app, build in some bells and whistles to make it worthwhile...
Do Something Useful
Now this may sound obvious, but a smartphone is not where you want to compose a novel. Build the app to do something that needs to happen while a person is away from their computer. Most users just want to complete a task or look up a quick fact. You don't need to show long lists or provide complex data entry. A simple task like attaching a voice recording to a customer record, or a check of current activity on a product line is more than enough for one screen.
The SmartPhone Knows Where It Is; Leverage That Magic
Because of the difficulty necessary to navigate on a smartphone, it is best to take users directly to the most likely task that they may want to perform. If you're at your client's office, the phone knows that. It should take you to the task you most commonly perform on the client sight. Given that an app can perform many tasks or manage multiple business objects, this “guess” of the appropriate task will create a much more usable app.
We Don't Type On SmartPhones
Let's just say smartphone keyboards are difficult at best. The most usable apps avoid using them...
Use select wheels and radio buttons even at the cost of flexibility or more app data maintenance.
Use the device’s knowledge of location for filling in geographic information.
Use predictive text techniques.
Use voice recognition, camera, video and barcode scanning.
Synchronize Important Data
Some day we'll actually have mobile devices that work when away from the office. Until then, synchronize locally and often.
Try to Build It So it is Supportable
With a native app running on a remote device, it’s difficult for the developer (generally of the web app) to ensure that all remote smartphone apps are updated. There is usually a need for smartphone apps to handle changes in the underlying schema of the app or database in a more sophisticated way. This is but one of the problems which have been a big hindrance to the widespread availability of smartphone apps for enterprise applications. The few developers that have been successful have handled this with some custom way to communicate metadata changes to the remote smartphone app.
SmartPhone Apps Just Won't Go Away
We have been an advocate of building all your application infrastructure locally and the presentation layer for all devices in HTML thus avoiding native smartphone apps. But if you want to build them (and arguably there are good reasons to do so), we specialize in building cross-platform smartphone apps either natively or in cross-platform generation tools.