Developers have spent years perfecting their skills in creating desktop applications, but creating mobile applications requires a distinct approach. The basics still apply — good design, clean code, a robust feedback process, and so on. The best mobile applications, though, come from developers who understand and have experience with the small touch screen.
A desktop application can let the user do a lot of things. It can offer deeply nested menus, sophisticated options, and advanced capabilities. On a mobile device, it’s rarely a good idea to get into so much detail. The screen is smaller, and people don’t use the devices for long sessions of detailed work. An application should do a few things well and make them easy.
Smartphones and tablets have slower processors, less memory, and less permanent storage than desktop machines. That’s another factor limiting a mobile application’s complexity. Operations that take a lot of processing power and memory will be painfully slow. It’s best to leave those things to machines with the hardware to handle them.
The most obvious difference between a desktop and mobile user interface is the pointing device. In one case it’s a mouse, trackball, or trackpad; in the other, it’s a finger. (Tablets are more finger-like, but they aren’t much used except in drawing applications.)
- A mouse always has some position on the screen, which a visible pointer shows. A finger is usually off the screen, not being tracked.
- A mouse can be augmented with multiple buttons and a scroll wheel. A finger can be augmented with multi-finger gestures.
- A finger obscures the part of the screen it’s on, so visual feedback at the point of action is less useful than with a mouse.
- It’s possible to “hover” over a screen location with a mouse. There’s no finger equivalent.
- The location of a mouse click is more precise than a finger tap.
- A mouse interface can support accelerated movement; that is, moving the mouse twice as fast speeds up the tracking by more than double. This doesn’t work as well with finger tracking.
Neither is always superior to the other, but mobile developers have to use taps and gestures to their best advantage, rather than imitating a mouse interface.
The development environment
When you’re doing desktop development, the development machine usually can also be a test machine. The developer can immediately test code and get a close approximation of the intended user experience. Development for a mobile device requires either using a simulator or loading the code into a mobile device. Most developers do a lot of their testing with a simulator, to save time. When they do this, they aren’t really getting the mobile experience; they’re using a mouse and big screen to test what will ultimately call for a finger and small screen.
Experience helps to bridge the difference, but it’s never quite the same. Developers have to do at least some of their testing on actual phones and tablets, using a remote debugger.
All software development work that touches the Internet requires thinking about security. With mobile applications, the job is easier in some ways and harder in others.
Traditional desktop applications can do anything which their user can do. They can read, delete, or alter any user files. Mobile operating systems “sandbox” their applications. They can’t access a user’s contacts or geographic location without explicit permission. A lazy mobile developer will require every permission which the application might conceivably need. A good one will keep the permissions to a minimum and let the application run even if it isn’t granted all of them.
In another respect, mobile devices are riskier. Their chances of being stolen are higher than for desktop machines. Mobile users often use short passwords because typing long ones is difficult. Developers have to take the higher mobile risks into account. Applications which access sensitive data, such as bank accounts, should offer and encourage two-factor authentication to reduce the risk of unauthorized access.
Mobile software development is a specialty of its own. Developers can learn it, but they need to study up on the many differences. The best mobile applications come from developers with a deep understanding of the devices and what makes the best user experience on them.