Accessibility

Flex Article

 

Designing for Flex – Part 7: Making your application fast


Table of Contents

Comments

Automating work

Instead of manufacturing demands for the users' attention, focus on employing the impeccable memory and computational power of computers to relieve such demands. Users provide lots of information during the course of using computers, and unfortunately many applications are terribly forgetful. If the user provides a Flex application with his address, the application should not have to ask for it ever again. If the user has been working with a document for the past three days, he shouldn't have to hunt through the file system every time he wants to open it; the application should remember and provide an easy way to open this recently accessed document.

checkmark Never require users to reenter information they already provided.

 Amazon.com remembers shipping addresses and payment information so that users don't have to re-enter this data every time they make a new purchase. This is one of the most common examples of application memory in action on the web.

Figure 4a. Amazon.com remembers shipping addresses and payment information so that users don't have to re-enter this data every time they make a new purchase. This is one of the most common examples of application memory in action on the web.

Adobe Fireworks CS3 displays a list of recently-opened documents on its welcome screen so that users can easily open a document they've worked on in the recent past. This is a common example of application memory in desktop software.

Figure 4b. Adobe Fireworks CS3 displays a list of recently-opened documents on its welcome screen so that users can easily open a document they've worked on in the recent past. This is a common example of application memory in desktop software.

Adobe Dreamweaver, along with most other Adobe applications, remembers changes users make to the default workspace layout (such as opening and moving panels) and automatically persists them even when the application is closed and reopened. Dreamweaver's application memory is detailed and expansive, which allows its users to spend less time configuring the application and more time working on their web pages.

Figure 4c. Adobe Dreamweaver, along with most other Adobe applications, remembers changes users make to the default workspace layout (such as opening and moving panels) and automatically persists them even when the application is closed and reopened. Dreamweaver's application memory is detailed and expansive, which allows its users to spend less time configuring the application and more time working on their web pages.

Flex applications are almost always connected to the Internet, which opens up whole new opportunities for eliminating work for the user. Unlike traditional desktop applications they are not limited to remembering the information the user himself provided, but are also capable of reaching out to other Internet services and retrieving information on the user's behalf. They can retrieve difficult-to-remember numerical information such as ZIP codes or ISBNs from web services using the addresses and book titles, so users need no longer bother with the ID numbers. If the user wants to have a photo professionally printed, the application can simply determine the nearest print shop with the best deal itself and not make the user do this legwork.

 Firefox's Internet search bar has an auto-complete feature that not only remembers its user's previous searches (the terms above the line) but also presents common search terms that other people have entered into Google. This helps users enter search terms faster and more accurately even if they themselves never performed this search before.

Figure 5. Firefox's Internet search bar has an auto-complete feature that not only remembers its user's previous searches (the terms above the line) but also presents common search terms that other people have entered into Google. This helps users enter search terms faster and more accurately even if they themselves never performed this search before.

Finally, many applications can eliminate work by accepting more flexible input formats and performing other computation tasks for the user's benefit. A common example is in input form fields; far too many applications are rigid in which types of input they accept. If the address isn't in precisely the format the system expects, that's an error the user must deal with. If the user dares to use a dash to separate the area code in a telephone number instead of parentheses... bam, error.

Good Flex applications are flexible about user input. If users enter phone numbers in several different ways, the application can be smart enough to figure it out. Of course, if the user enters "asdf" instead of a phone number the application may not be able to do much with that, but how many users will do this? Far fewer than will try "415.555.1234" instead of "(415)555-1234". (Note: Many of Google's applications excel at this, and it's one of the reasons for their success. You can enter just about any reasonable string that represents a location into Google Maps and it will come back with the right map.)

checkmark Be flexible about the input formats your application accepts.

 Although primarily intended for plotting street addresses, Google Maps is very flexible in the input it accepts. Here, I typed "hotels in sf" and Google Maps found a list of hotels in the city and plotted their location on the map for me. The application is smart enough to accept alternate formats for this input, so "hotels near sf" or "sf hotels" works just as well.

Figure 6. Although primarily intended for plotting street addresses, Google Maps is very flexible in the input it accepts. Here, I typed "hotels in sf" and Google Maps found a list of hotels in the city and plotted their location on the map for me.  The application is smart enough to accept alternate formats for this input, so "hotels near sf" or "sf hotels" works just as well.

The most common objection to automating work to speed up the user is that the application won't always be correct. Don't worry about always being correct. Users can correct occasional mistakes if the application clearly states when it had to make a guess and offers an opportunity for correction. Instead of worrying about correctness, consider whether the system is saving the user time by providing a "good enough" starting point, or whether the user must spend more time second-guessing the system than it would take them to perform the task on their own. You'd be surprised how often automation saves time even when it isn't infallible.

checkmarkAutomate tasks whenever it will save users' time, but always allow them to verify and correct system mistakes.