Doh! USABILITY IN CLOUD AND MOBILE APPS http://www.flickr.com/photos/johanl/4934459020 Key usability principles • • • • • Keep it simple Keep it responsive Follow guidelines and patterns Adequate aesthetics so as not to hurt usability Easy to install and start using Keep it simple 1 • There should be a primary task supported – And a clear, 100% obvious path for that task • 90/10 rule – 90% of users will use only 10% of the features • In fact, when you make a mobile+desktop app, design for the mobile screen first – And then add features for the other platform(s) Example: Skype for Android Check out this walkthrough of Skype http://www.youtube.com/watch?feature=player_e mbedded&v=1o6TBezfSpU Notice that the UI makes the right path obvious: • Click Skype icon; Skype shows list of contacts • User clicks contact name; Skype shows profile • User clicks Skype call or Skype video call button Keep it responsive • Responsiveness != performance – Does the app react quickly vs does the system complete work quickly/scalably • Main key: Do long operations asynchronously – E.g., network operations, big database operations – E.g., In Android, use IntentReceiver to perform small chunks of work; use Service for long tasks – E.g., In JavaScript, use function objects, closures, and events and/or setTimeout() 2 Performing a long task • • • • • Acknowledge input immediately Show user the progress so far Show user estimate of how long to wait Let user do work while waiting for long tasks Let users cancel long-running tasks 80% complete Important UI guidelines provided by Apple • • • • • • • • • Give People a Logical Path to Follow Elevate the Content that People Care About Minimize the Effort Required for User Input De-emphasize Settings and File-Handling Make Search Quick and Rewarding Use UI Elements Consistently Delight People with Stunning Graphics Handle Orientation Changes Ask People to Save Only When Necessary 3 iOS guidelines related to widgets • Status bar: is for showing status – Don’t hide it unless you have a really good reason • Navigation bar: is for navigating – Should have a “back”-like button if appropriate • Toolbar: is for tools – Usually bottom of screen • Tab bar: is for switching between views For the full guidelines • http://developer.apple.com/library/ios/#DOC UMENTATION/UserExperience/Conceptual/M obileHIG/Introduction/Introduction.html • http://developer.android.com/guide/practices /ui_guidelines/index.html Note: Not all guidelines are UI! Example: Handling Android lifecycle events • Pause/Resume (e.g., your app is only partially visible) – onPause: release sensor event listeners, store most user data – onResume: register sensor event listeners, restore most user data • Stop/Start and Destroy/Create (e.g., user briefly goes to home screen or changes the orientation from portrait to landscape) – Very similar to pause/resume but used for operations that have heavier startup/shutdown costs (such as connecting to a database) User interface patterns • Users become accustomed to doing tasks in certain ways within mobile apps • User interface patterns describe common ways of laying out the screen for tasks – So users can find stuff and don’t get confused • Different than Design Patterns – Structure of UI vs. structure of code Example: Popup invitation • Situation: App developer wants user to make it easy for user to visit app (website) frequently • Design: Provide a popup box inviting the user to add the app to home http://www.flickr.com/photos/ brettlider/4964755483/sizes/m /in/photostream/ Other common UI patterns • • • • • • • • • • Dashboard Empty data set – invite user Live search Login / authentication Menu of operations Navigation widget Profile screen Settings screens Splash screens User profile screen Places to go for UI patterns • • • • • • • • http://androidpttrns.com/ http://inspired-ui.com/ http://mobile-patterns.com/ http://pttrns.com/ http://www.androiduipatterns.com/ http://www.lovelyui.com/ http://www.mobiledesignpatterngallery.com/ http://www.patternsofdesign.co.uk/ Aesthetics • Aesthetics is not directly about usability – Aesthetics is how “pretty” or “pleasing” it is – Usability is how well people can use it • But it is possible for apps to be so tragically ugly that their very ugliness hurts usability 4 Elements of aesthetics • Graphics and that jazz should never distract from functionality or content • Provide obvious but unobtrusive navigation • Balance visual weight across screen • Use consistency, repetition and proximity to show groups of conceptually similar items • Use contrast to emphasize differences Example #1 My Courses •CS561: Software engineering •CS562: Applied software engineering •CS569: Special topics in software engineering •CS584: Human factors in programming languages Add another registered course Machine learning on the cloud Advanced e-commerce Software and job creation FPGA programming Add another wishlist course CS561: Software engineering Taken in Fall 2012 from Jensen, C Grade of A Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery. Two-term sequence required. 75 34 Back Example #2 My Courses + Registered CS561: Software engineering CS562: Applied software engi… CS569: Special topics in softw… CS584: Human factors in prog… Wish list Machine learning on the cloud Advanced e-commerce Software and job creation FPGA programming Courses CS561 Software engineering 75 Term taken: Fall 2012 Your grade: A Instructor: Jensen, C. 34 Over all terms, all instructors Description Utilize software engineering methodology in a team environment to develop a real-world application. Teams will be responsible for all phases of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and delivery. Two-term sequence required. Of course… The usability of an app is immaterial if nobody can even figure out how to install it. Easy to install and start using • It should be trivially easy for a user to – Find your app – Install your app – Start using your app 5 Discoverability Some tips for naming your app (Courtesy of NetMagazine) • Two-part name: distinctive and memorable • Authentic: not a “knock-off” of existing app • Clear: say what your app does • Short: under 11 characters And, obviously, use words related to the app’s purpose so it shows up in search results. Other ways to get app discovered • Word-of-mouth – E.g., provide rewards in app for people who tell their friends • Strategic partnerships: mutual benefits – E.g., Get your app reviewed by bloggers; you want to get a lot of buzz (test for scalabilty beforehand) • Advertise – E.g., iAd, AdMob, or even DoubleClick (websites) Install-ability • The easiest apps to install are web apps – Do you really need to make a native app? • Good reasons: performance, native APIs • Webapps can be bookmarked onto home page – And can even have a nifty little icon! • Free apps are far more likely to be installed – Consider monetizing via ads + in-app purchases Easing the installation • Keep the installation lean – E.g., Don’t package in media such as video and big images unless most users will need them – Bundle different media for different device sizes – Defer downloads of media only some users need • Don’t crash on install – Common problem: requiring installation via iTunes (why on earth, I can’t imagine) Start using-ability • Don’t crash on first startup – Fail gracefully if network is unavailable – Test on lots of different devices • Avoid requiring user to set settings to start • Obvious path for primary task (which is where I started this lecture!) Key usability principles • Keep it simple – Design for a primary task • Keep it responsive – Asynchronicity for long tasks • Follow guidelines and patterns • Adequate aesthetics so as not to hurt usability • Easy to install and start using – Discoverability – Install-ability – Start using-ability