Accessibility

Flex Article

 

Designing for Flex – Appendix A: Best practices


Rob Adams

Rob Adams

Adobe
www.usereccentric.com

Comments
Created:
28 September 2007
Products:
Flex

This list of best practices was written for the Designing for Flex series. To learn more about designing rich Internet applications and rich desktop applications, check out the Flex Interface Guide on the Flex Developer Center.

Download all parts of the FIG series as PDF files that you can print and read offline: adobe_flex_interface_guide.zip (ZIP, 5.7MB)

Planning your application

checkmark

Understand your market demographics, but recognize this isn’t sufficient information to guide design alone.

checkmark

Understand your users’ goals as they relate to your product.

checkmark

Study the tools and artifacts your users use or produce today.

checkmark

Document tasks your users perform today to accomplish their goals

checkmark

List the types of content your users will access in your application and obtain real samples for reference.

checkmark

Write scenarios to represent the primary tasks users must perform with your application.

Structuring your application

checkmark

Employ information structures when your users’ primary goals involve browsing, comparing, or comprehending different pieces of information.

checkmark

Employ process structures when your users’ primary goals involve providing information in an efficient, straightforward, and structured manner.

checkmark

Employ creation structures when your users’ primary goals involve creating entirely new content or making significant changes to existing content.

checkmark

Eliminate unnecessary navigation in your applications.

checkmark

Only use page-to-page transitions when the user is pursuing a clearly different goal. Use intra-screen changes to modify the screen as the user advances through tasks that are related to the same goal.

checkmark

Illustrate intra-screen changes by supplementing wireframes and comps with storyboards.

checkmark

Prototype key interactions in your application to tune and communicate the feel.

checkmark

Follow a “hub-and-spoke” navigation model, not a hierarchical site map.

checkmark

Design your application’s entry point to present useful tasks or information that clearly relate to your users goals with no interaction required on their part.

checkmark

Immediately present relevant content to your users for an information application’s entry point.

checkmark

Clearly list the tasks your application supports for a process application’s entry point.

checkmark

Provide a way to start with existing work for a creation application’s entry point.

checkmark

Employ sound visual hierarchy to communicate the important elements on the page and to guide the user’s eyes to the next part of their task.

Merging the web and the desktop

checkmark

Design Flex applications as RIAs first, and desktop or web applications second.

checkmark

Offer a web experience when your application must be accessible from any machine and fully integrated with the web environment.

checkmark

Offer a desktop experience when your application must have a presence on the user’s computer and integrate more seamlessly with the host operating system.

checkmark

Provide URLs that a user can bookmark and back button support for all navigable states.

checkmark

Provide support for low-vision users by offering a version with high contrast colors and larger type and controls.

checkmark

Design sovereign applications to consume more screen real estate and employ more focused interactions and smaller controls.

checkmark

Design transient applications with simple interactions, larger controls, and clearer task flows.

checkmark

Hide the complexity of the file system.

checkmark

Clearly communicate functionality changes caused due to a loss of network connectivity.

checkmark

Avoid spawning windows in desktop applications unless the windows map to disjoint pages.

Designing content displays

checkmark

Design content displays around questions your users will ask about the content.

checkmark

Design content displays first, then add controls and other application chrome afterwards.

checkmark

Integrate highly related information into a single content display whenever possible. Avoid splitting information across multiple screens or states.

checkmark

Make it easy for users to not just find content, but explore content.

checkmark

Support content exploration by making search and filtering controls instantly responsive to user changes.

checkmark

Favor direct means of manipulating content over indirect ones.

checkmark

Favor modeless feedback integrated with content over modal pop-up dialog boxes.

checkmark

Employ affordances to clarify which items within your content are interactive.

checkmark

Display controls in the context of the content they manipulate.

checkmark

Never re-implement your own controls when a suitable off-the-shelf control is available. Instead, customize the off-the-shelf control to suit your needs.

Guiding with motion

checkmark

Employ motion to apply physical principles that help users understand the workings of your application.

checkmark

Employ motion to subtly draw users’ attention.

checkmark

Use transitions to keep the user informed about where they are, where they have been, and how they get back.

checkmark

Use effects to draw the user’s attention and provide feedback.

checkmark

Avoid gimmicky or gratuitous motion.

checkmark

Use the motion properties of physical objects to guide your decisions on how your Flex interface elements should move.

checkmark

Employ proxies during animations for visually complex objects.

checkmark

Sequence the movement in state transitions into logical chunks that overlap only slightly if at all.

checkmark

Use effects to emphasize an item that has unusual permanent or temporary importance that the user may not otherwise notice.

checkmark

Use transient notifiers to unobtrusively present small bits of temporarily important information.

checkmark

Use system-triggered notifiers sparingly.

Making your application fast

checkmark

Use the impeccable memory and powerful processing abilities of computers to eliminate work for your users.

checkmark

Discover your users’ real tasks to better understand what flows you must make more efficient.

checkmark

Never bother your users with information or questions that have nothing to do with accomplishing their goals.

checkmark

Never require users to reenter information they already provided.

checkmark

Be flexible about the input formats your application accepts.

checkmark

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

checkmark

Offer users sensible starting points by remembering the state they left your application in or by inferring an appropriate starting point from their context.

checkmark

Focus performance tuning efforts on those portions of the application where the actual speed of operations is most at odds with user expectations.

checkmark

Pre-compute results while the application is idle and cache results to speed up future operations.

checkmark

Break down long tasks into smaller bits so that the results can be presented to the user as they become available.

checkmark

Use an appropriate feedback mechanism for long operations based on the nature of the job and the expected length of time the job will take.

checkmark

Provide wait feedback only as a last resort.

Making Your Application Safe

checkmark

Never lose your users' data.

checkmark

Always provide continuous save.

checkmark

Forgive user mistakes by allowing them to back out of them later using undo or cancel.

checkmark

Provide feedback appropriate to the severity of the consequences of a user action.

checkmark

Avoid unnecessarily draconian security measures.

checkmark

Improve usability and security by providing adequate feedback on the consequences of user actions while there is still time to change them.

Acknowledgements

Although this article series has my name on it, many people contributed to its development. I’d like to thank my reviewers, Sho Kuwamoto, Phil Costa, Steven Heintz, Narciso Jaramillo, Josh Ulm, Jeremy Clark, Deb Galdes, Tom Hobbs, and Amy Wong for providing me with extremely helpful feedback. Special thanks to Sho Kuwamoto and Phil Costa for envisioning this project and pushing me to complete it and to my managers, Josh Ulm and Jeremy Clark, for finding the time for me to give it the attention it needed. Finally, extra-special thanks to Tom Hobbs, Narciso Jaramillo, Sho Kuwamoto and Peter Flynn for guiding my thinking on many of the topics that appear in the articles.

About the author

Rob Adams works for Adobe Systems, Inc. in San Francisco, California. He started at Macromedia, Inc. in 2004 and has worked on the Flash authoring tool, Flash Player, and Fireworks, but nowadays works primarily on the Flex product line. He is involved with the design of the core framework itself as well as the designer/developer tools such as Flex Builder and Creative Suite. Although his primary focus is on design research, he also does some design work, promotes sound design practices both within Adobe and without, and makes himself a general pain in the necks of the designers, product managers, and engineers he works with.