Mobile Design

April 12, 2011

Last time around we talked about using a visual design process to quickly work out the look and feel of your application. The intent is to develop an application that users will like to use, because it doesn't get in their way or provide distractions from doing the thing they want to do.

This idea of focusing on the tasks users want to get done (whether called 'user centric', 'task driven' or something else) has to go double for applications that are to be used on the move, on mobile phones (all modern phones are what was once called a 'smart phone') or tablets. This is because of the unique challenges of the mobile environment.

Firstly there are the challenges of mobile devices themselves. They will have a much smaller amount of screen space available than on a web page designed for a traditional desktop user, for instance. Although many mobile devices have relatively small amounts of RAM and CPU available, this is becoming less of an issue as the devices and software used both speed up over time.

Then there are larger challenges of mobile users themselves. Thinking of the typical mobile persona; the user of a mobile application may be on a train or just about to enter a meeting. This means the internet connection could be intermittent, slow or not there at all, and the application needs to provide good 'glanceability'; it's likely you wont have the users full attention for very long. Both of these are very different from the traditional application or web page.

Mobile apps have a single primary function, and have an experience tied to that. This makes them very task focused, and in turn drives super-clear navigation. The days of a Symbian-style menu hierarchy to get lost in is behind us, fortunately.

As a final difference between the mobile experience and the desktop experience, mobile applications have hardly any settings - a good rule of thumb is that your application is broken if it can't Just Work. For instance, most users wont know what 'network timeout' means, yet alone what a change to the value will do. The application should just automatically adapt to network changes rather than exposing this implementation detail.