It's no secret that more and more people are opting for touch-based smartphones and tablets as their computers of choice: iPads, iPhones, Androids, now BlackBerrys, and soon Windows 8 PCs and tablets. For developers, touch-based systems means grasping a whole new set of guidelines, including understanding their audience's new context and careful interface design, say prominent developers in the touch space.
Enterprises are starting to demand touch applications, including internal applications to examine data and manage resources, says Daniel Dura, a former Adobe Flash evangelist and now vice president of product development at Dedo, which builds software for mobile devices and kiosks. "The whole idea of touch as an interface mechanism is taking off massively in these enterprises," he says.
The nuances of gestures
But developers who want to make some money or simply move internal enterprise systems over to these new devices must learn the nuances if they want to be successful. "The first thing is to understand the user who's going to be using it," says Dura. "What most people don't understand is the complexity of what a user is going to expect" from a gesture standpoint, he says. A pinch or a gesture may not seem natural in some contexts: "The best thing is to test the interaction."
Dura recalls building a Twitter application for a large touch wall, in which users could touch tweets and open them. Developers made some assumptions about how to open those messages, and they programmed the application so that users had to double-tap on the screen to open them. But in testing, users instead grabbed the messages and tried to pinch -- the gesture for zooming in -- the tweets to open them. "We had to go back and revise that interaction to match what the users were expecting," Dura reports.
When building touch interface applications, developers must bear in mind immediacy and why someone is using a touch device, says John Nack, Adobe Systems' principal product manager for mobile and digital imaging. He advises building entertaining, quick-to-use applications: "For anything that is too procedural, where you need a lot of steps to anything done, people will simply use their desktops to get those tasks done."
Although the user experience issues can be tricky, the APIs for actually implementing touch are fairly straightforward, Dura notes.
One key context clue is the platform of the device being used, Dura says. A common idea among developers writing apps intended to be used across mobile operating systems, perhaps as an HTML5 app, is that they should all use the same gestures. "They'll assume certain gestures may the same on different devices," Dura says. "They're not." Apple has been adding sophisticated multitouch gestures, such as a four-finger swipe to go from one application to the next. "Well, that doesn't work on Android," Dura warns.
Controls for touch have to be larger and more responsive than for mouse controls, says Tim Huckaby, chairman of both software developer Interknowlogy and software company Actus Interactive Software. A finger "just doesn't have the fidelity that the mouse does" when it comes to operating a device. And not all software adapts well to touch, Huckaby says: Data-entry applications, for example, are "just not a good use case for touch."
Developer Billy Hollis, a partner with Next Version Systems, agrees: The controls users work with need to typically be double the size of what would be adequate with a mouse-driven interface, and developers must not place items too close together. Apple has a set of size guidelines for iOS, and likewise Microsoft has come up with a size formula for Windows 8 developers.
"The error rate of choosing the wrong one then goes up very dramatically" when functions are too close and too small, Hollis says. "That's a very frustrating experience for the user."
Be careful on hardware usage
Hollis advises developers to be mindful of hardware resources: "You must make sure that you don't load down the hardware" in such a way that the gestures and touch tracking get jerky onscreen. "People's willingness to put up with that is very, very small." Developers must ensure they are using asynchronous operations so that a user interface thread is not held up by data fetching or background processing. They also should not put too much strain on the unit's processor, he advises.
Touch tools are available for developers
Some tools exist for developing touch applications, such as the Adobe Flash GestureWorks, a software development library that makes it easier to accommodate gestures in programming, Dura says. However, he adds, "There's no touch Bible yet."
Microsoft has provided system-level support for touch in .Net, Huckaby says. "Microsoft is eons ahead of any of those other companies" in terms of developer tools and productivity, he says. Microsoft also has its Surface SDK technology for touch, but that SDK is meant for tabletop-size displays, not smartphones, tablets, and computers. Huckaby expects a dozen defined multitouch gestures to be native in the upcoming Windows 8 OS.
And of course Apple, the first computer company to use touch broadly, has a strong set of touch APIs native to its Xcode programming environment for iOS and Mac OS X.