Mobile Application Development - Best Practice #1
Call me Captain Obvious because this first one is:
Remember the mobile device is not a desktop
Just because its possible to port a desktop application to a mobile device doesn't mean the resulting application will be a successful mobile application, on the contrary it will probably be a bad mobile application. Microsoft has learned this lesson from some of the earliest version of Windows Mobile and accompanying applications.
Some of the important factors that fundamentally differentiate mobile devices from desktops are:
- constrained user interface
- one handed users
- on and off (unreliable) connections
- low bandwidth
- user behaviour can be different outside the office
- user mobile behvious can be different than stationary behaviour
Some of the best mobile applications on the market today are iPhone applications. Apple from the start has focused developers on the Human Interface of the application, publishing the "Human Interface Principles: Creating a Great User Interface". These principles are the basis for applicaiton development on the Mac desktop under OS/X and have been refined for the iPhone.
Apple elegantly states:
Great applications follow certain fundamental human interface design principles, regardless of the hardware they run on. That's because these principles are based on the way people-users-think and work, not on the capabilities of the device.
Don't underestimate the powerful effect the user interface has on people. A user interface that is unattractive, convoluted, or illogical can make even a great application seem like a chore to use. But a great user interface enhances the application and inspires a positive emotional attachment in users, earning their loyalty.
Apple describes 6 principles to be followed for a great user interface.
- Metaphors - use real world objects and actions in your application, users can readily relate to their purpose and outcome, and this will enable novice users to quickly grasp how your application works. Another way to put it is to incorporate the user's mental model of the domain wherever possible. An example is a folder, users can relate to the folders in the real world as containers of things so users easily transition to folders on a computing device where data can be added and removed.
Metaphors that Apple has included in it's UI Toolkit include iPod playback controls, tapping controls to make things happen, sliding on-off switches, and picker wheels that enable the user to 'flick' through lists of data.
Direct Manipulation - enable the user to feel they are controlling something trangible, so objects should remain visible during an action and provide immediate feedback once the action is complete.
The iPhone Multi-Touch interface for example enables users to use gestures to flip the view from portrait to landscape, finger tapping and scrolling, and multi-finger resizingee on screen without the use of an intermediate device such as a mouse, key board key or pointer.
See and Point - use choices and options in list form wherever possible and minimize text input, this will enable the user to 'see and point' rather than using the keyboard to type the entry, this minimizes validation logic in the applications.
Feedback - applications should respond to user actions with a visible change, audible feedback helps but it must be in addition to visible feedback since mobile devices may be in use in places where the user can't hear or has intentionally muted the device. Ways to enhance feedback include animation but only if it is subtle and meaningful.
User Control - the user, not your application, should initiate and control actions. Users should be allowed to cancel operations before they begin, or cancel long running operations. By keeping actions simple and straightforward user's can more readily understand them and remember them.
Another important attribute of user control is the applicaiton should be forgiving with the user, this will encourage user's to explore the application deeper. The iPhone Home button is like a built in forgiveness button, any application should be escapable by clicking the button to return home and start over.
Aesthetic Integrity - an applications usability is directly related to how cluttered or illogical the appearance. Application aesthetics is not a measure of how beautiful your application is but how well it integrates and makes accessible its function.