What Makes a Great Mobile App?

This week I heard Alan Wells, director of product development at Globant’s Mobile Studio, speak on what makes a great mobile app. Alan was speaking as part of the Globant Mobile Roadshow. Here are my high-level notes:

  • A great mobile app or site needs a delightful user experience. When people only have a few minutes to get to know your app, the experience better be rewarding and fun or they may never use it again.
  • You have to think about the different use cases and contexts that apply to mobile usage. Sessions will be shorter but possibly more frequent than with your website. Think about morning and evening commuters popping in and out of your app. Design experiences that deliver value that can be had in just a few minutes.
  • Use cases for tablets are different than for handheld devices. Sessions may be longer. People may be using your app in unusual places, like while reclining on their sofa. Don’t just think of a tablet as a smaller laptop.
  • Embrace the constraints and capabilities of mobile devices. Screens are limited in size, so use that constraint to simplify your app and strip away functions that don’t apply to the mobile context. Capabilities like goelocation and an accelerometer open your app up to functions you couldn’t have considered in the desktop version. Explore those to create those delightful experiences.
  • Higher resolution screens on newer high-end devices don’t change the basic needs of the touch target. Always design with the fingertip in mind.
  • Don’t just port a web app to mobile devices. Build for the mobile context from the start.
  • When creating a mobile companion to a full web app reuse or re-purpose the artistic elements when possible to create a consistent and cohesive experience.
  • Think carefully about whether your app is a companion app or needs full feature parity with the desktop version. Companion apps have an advantage in extending the desktop experience and increasing overall engagement with your brand, without you having to replicate every feature (many of which will never be used in the mobile context).
  • Weigh carefully whether you want your app connected to your website. A connected app will require more communication between development teams and more coordination of releases, but also can promote greater engagement and a seamless, cross-platform user experience.

iPhone Stencils for Visio

I recently found a great set of stencils for wireframing iPhone apps and mobile websites in Visio. The stencil set was created by Jonathan Abbett of Beacon 16 and is available under a Creative Commons License.

The stencil shapes include:

  • iPhone
  • Navigation Bar
  • Search Bar
  • Browser Bar
  • Four and Five Button Tab Bars
  • Keyboard
  • Date Picker
  • More…

If you need a higher fidelity GUI design toolkit for iPhone and iPad, Speckyboy Design Magazine published a great list of resources last year. If you need to illustrate touch gestures in your wireframes, Luke Wroblewski maintains a Touch Gesture Reference Guide on his website.

iPhone Stencils for Visio
iPhone Stencils for Visio

Axure for Mobile Prototyping

I recently developed a small prototype for usability testing of some new mobile website functionality using Axure RP Version 6. Here are a few things I learned:

  • If possible, use Axure RP Version 6. It has mobile settings under the Generate Prototype menu that will save you from having to manually add to each page the HTML viewport meta tag every time you generate a new prototype. Screen shots of the settings panel are at the bottom of this post.
  • Generate separate viewport tags for iOS and Android browsers like below:
    1. iPhone: <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes"/>
    2. Android: <meta name="viewport" content="width=480, target-densityDpi=device-dpi"/>
  • For iPhone, you can design your prototype at 320 pixels wide for older devices. iPhone 4 will scale it up to 640 pixels wide so the prototype has the same appearance no matter what version of the iPhone your participant is using.
  • For Android smartphones, design the prototype at 480 pixels wide. Tablets are another story and my testing did not include them.
  • To create accordion effects on interface widgets, a common design pattern on mobile websites, you can use Dynamic Panels and Axure’s OnShow event with the Move action. See the advanced dynamic panel tutorial on Axure’s website.
  • If you are opening the prototype on an iPhone from a home screen icon and want to hide the URL bar, use this meta tag:  <meta name="apple-mobile-web-app-capable" content="yes"/>
  • Test on as many target Android devices as you can. The Android viewport tag worked on most devices I tested, but not all. The differences in Android pixel density and screen resolution necessitate more testing than is needed with Mobile Safari on the iPhone.
  • Keep in mind you are building a prototype. It doesn’t need to work perfectly on all devices if you can just ask the test participant to zoom in during the session if needed. You should be explaining that they are interacting with a prototype as part of the test script so this should not be a problem.

For more on the iOS viewport, see Apple’s iOS Developer Library.

For more on targeting different screens size on Android, see the Android Developers Site.

Axure Settings for iPhone
Axure Settings for iPhone

Axure Settings for Android
Axure Settings for Android

The Wisdom of Edward Tufte

I finally took Edward Tufte’s day-long information design course last week. Tufte, long a thought leader on the topic of graphically showing quantitative and scientific data, shared his principles for displaying this evidence in any media. Here are my notes:

  • Designers of data displays, either printed or online, should strive to reduce the time it takes to learn the display format and increase the time the reader devotes to thinking about the data.
  • Use “small multiples“, repeated use of the same type of graphic, to reduce learning time. Once a person figures out how one graphic is read, they know how to read all the graphics.
  • Charts and other graphical displays should always tell stories. This often involves displaying information using a time scale.
  • Data displays should supply context as well as information. A price increase from one year to the next tells little unless it is shown in the context of the past five or 10 years.
  • Multi-variate data graphics supply the richest context and tell the best stories. Price increases (or declines) shown over time and compared to wage increases (or declines) for the same period tell a much more powerful story than simply showing the price increase alone.
  • Keep “chartjunk” and “chartoons” to a minimum. Embellishments like gradients or patterns for the backgrounds of charts and graphs only get in the way of the information. Designers should strive for a high ink to data ratio.
  • If content in a display needs to be compared to other content, put the two chunks of content next to each other. It’s unreasonable to ask a person to go back and forth between web pages or printed pages when trying to compare two or more things.
  • Using area to display quantitative data is a risky proposition. Unless the scale of the area of all diagram elements exactly matches the scale of the data, the graphic is lying.
  • In a related thought, the only thing worse than using a pie chart to display quantitative data is using multiple pie charts. It is impossible for people to figure out what percent of the whole is represented by the pie pieces without the numbers being displayed on the slices. And if you need to display the numbers, why not use a simple table instead.
  • When designing line and bar charts, don’t place a legend off to the side. This forces people to have to scan back and forth between the graphical element and the legend. It is better to put the notation near the elements in the graph itself.
  • A graphical user interface should be “invisible” so that people can focus on the information. If we as designers do our jobs correctly, people won’t be aware of our work.

I’m sure there are points I missed. All of Tufte’s principles are covered in four of his beautifully produced books that came with admission to the course. They are themselves examples of Tufte’s principles.

Touchscreen Design Best Practices

Saturday was Day 2 of the Mobile UX sessions at Nielsen Norman Group’s Usability Week in San Francisco. The focus was on designing for touchscreens. Here are my notes:

  • Allow Users To Go Back and Undo: Make sure users can compensate for accidental taps. Have them confirm any action that would delete their data, erase their work, or process a transaction.
  • Don’t Force Users To Change Device Orientation: Whether your app is a content app like the New York Times or a utility app like American Airlines make sure it can adjust its layout to however a person is holding their device.
  • Pad Those Links And Buttons: Padding a widget can improve people’s accuracy in clicking it. For example, if you display an product image and description in a list layout, make the whole row clickable, not just the image or the text.
  • Padding Can Prevent Errors, But Won’t Increase Efficiency: In cases where you have a clickable invisible padding area around an object, people will still slow the movement of their finger as it approaches the target. Because they don’t know the target is actually larger, they treat it like it is smaller. Fitts’ law is still on the books.
  • Pad Links On Your Wired Site If You Want It Used on Tablets: Many site managers have learned that iPad and other tablets owners are using their wired sites instead of the mobile versions that were designed with smartphones in mind. See Yahoo!’s tablet site for cues on how a wired site can be tweaked to work on a touchscreen tablet.
  • Avoid Localized Swipes: When a left or right swipe only changes one horizontal section of a screen, it confuses people as to what the gesture does. Localized swipes don’t match real world movement, in which pushing something moves the entire object, not a portion of it. Don’t make your app a stack of independent carousels.
  • Provide Cues To Unseen Functionality: Gestures are great for maximizing screen layout but can be undiscoverable by new users. The convention of pulling down on a screen to refresh content that Twitter and other mobile sites use is hidden from the view of new users. Provide cues to new users to help them learn these gestures.
  • Don’t Rely On The Accelerometer For Navigation: People who are new to more advanced mobile devices may not even know about “shaking” as a means for input. Others may find it clumsy or uncomfortable. It’s OK to use the accelerometer, but don’t make it to sole means for input. Urbanspoon’s iPhone app is a good example of an app that uses the accelerometer but also has a big red button.
  • Use Sliders With Caution: Sliders as interface controls are imprecise. Don’t use them if the person has to get to an exact value.
  • Tablets Are Not Smartphones: Don’t be afraid of rich interactions on iPads and other tablets. Tablet users are not “on the go” in the same way as smartphone users.
  • Design A Distinctive Home Screen Icon: Make your app’s icon distinct so it can be recognized on a crowded home screen. If people have to remember your app’s icon, they may never click it.
  • More Is Often Less: Adding features to your mobile app doesn’t always make it better, especially if they add too much complexity. Add features of they make sense in a mobile context, not just because they exist on your wired site.

Mobile Design Best Practices

Today was Day 1 of the Mobile UX sessions at Nielsen Norman Group’s Usability Week in San Francisco. Here are my notes:

  • Design For Interruptions: Since mobile usage is out “in the wild” you have to assume interruptions will happen. Support auto-save and user initiated saving of work. Remember what people type into form inputs and never make them type the same information twice.
  • Design For Continuous Experiences: If users can enter information or save things on your wired site, make sure they can access that information on your mobile app/site. And also let them save and add information on the mobile version that flows back to the wired site.
  • Reduce Interaction Cost: Anything you can do to remove typing reduces interaction cost. Even on the most advanced mobile device, typing is annoying at best (I know this because I’m writing this on an iPad). Whenever your design asks a person to type, ask yourself if there is another way to get this information other than the device keyboard.
  • Make Designs Self-Sufficient: Don’t make people have to leave your app/site to get a necessary piece of information. For example, if your site is a banking site that only processes transactions on business days, don’t offer a date picker that includes weekends or holidays. If someone has to get into their device calendar to check if June 19 is a weekend, they may not get back to the same place in the transaction and may have to start over.
  • Don’t Force People To Rely On Memory: Don’t send people an email with a cryptic promotion code and then send them to a site where they have to remember that code. Pass the code in on the URL if they click anything on the email and keep it in memory for the length of their session. If they have to go to their email when presented with a promo code input during checkout, they may never get back to complete the transaction.
  • Preserve Session State Throughout The Visit: Don’t let people click a Save to Favorites icon from a search results screen and then send them back to a screen where they have to reenter their search term(s) to get the same results list. Remember what they were doing and get them back intact when they go down alternative paths. And provide them a way to easily start a new search if indeed they are done with their previous search.
  • Remember People’s History: Don’t make people reenter information they already provided. If someone enters a zip code or selects a gender while shopping for shoes, persist that throughout their session (at a minimum). There’s little that’s more annoying than having to reenter information on a mobile keyboard.

Day 2 of Mobile UX is tomorrow. The focus is on touchscreens. You can follow the live tweets at #nnguw.

Drop Shadows for Menus in iRise

Sometimes you just want your menus to have a drop shadow. So in an effort to push the fidelity of an iRise simulation to a higher level, I recently created a simple menu Master that uses sections to display the kind of drop shadow you’d normally handle with CSS3. It was a little more labor intensive than CSS, but fairly easy to do once the menu bar was laid out.

To make the menus as easy to maintain as possible, the drop shadows are applied in the Master and the shadow color is handled in the Style Manager. Mouse events are used to toggle the drop shadow sections on and off with their associated menus. The screen capture below shows everything you need to know to mimic the effect of CSS3 drop shadows. And if you wanted an even richer display using rounded corners and a gradient drop shadow (like Mac OS X) , a transparent PNG could be used.

Creating Menu Drop Shadows in iRise Studio for Mac
Creating Menu Drop Shadows in iRise Studio for Mac

Features Meant to Assist Should Support Efficient Use

Tools meant to make things easier for people shouldn’t slow them down. I ran into this situation when I was signing up for a webinar through GoToMeeting this week and tried their Show in my Time Zone features since the meeting was scheduled using Pacific Time.

Clicking a link exposed a layer with a select menu of different time zones, but they all led with the offset from GMT, such as (GMT-06:00) Central Time (US and Canada). So the user has to shift their focus to the middle of the options to scan the list for the first characters of meaningful information. Why not format the list as: Central Time – US and Canada (GMT-06:00)? It’s admittedly a small detail, but as Charles Eames said, “The details are not the details. They make the design.”

GoToMeeting Time Zone Selector
GoToMeeting Time Zone Selector

Visualizing the Futures with Kevin Henry

I attended a fascinating lecture tonight on product design given by Kevin Henry, an associate professor of design at Columbia College in Chicago. Henry’s talk explored techniques industrial and interactive product designers can use to visualize their designs and visions.

While his talk, organized by the Chicago chapter of the Interaction Design Association, focused heavily on industrial design, it also looked at how interaction design techniques like sketching and prototyping play important roles in product discovery and envisionment.

This video is of a similar lecture he gave at the Segal Design Institute at Northwestern University in December.

Marty Cagan and Designing Great Products

Last week I had the good fortune to spend two days learning about designing great software from Marty Cagan of the Silicon Valley Product Group. Cagan’s approach to creating great consumer software products comes from years of working on wildly successful ones, such as Netscape, AOL, and eBay, and is a radical change from the traditional approaches many companies still use.

Cagan’s two-day seminar presented the topics raised in his 2008 book Inspired: How To Create Products Customers Love along with advice tailored directly to the audience, in this case my company, Cars.com.

One of the key aspects of Cagan’s approach is a focus on a core working relationship between the product manager, the lead engineer, and the lead interaction designer supporting a product. His method places heavy emphasis on a great user experience as a key part of making software people really want to use. He also advocates delegating product design decisions down to the product manager and empowering that person to make the right choices, while people managers and other leaders are tasked with doing what needs to be done to develop their product teams so they can be trusted to execute.

The book is a quick read and well worth the time as it opens up a new way of thinking about product management and software design.