Usability Matters: Mobile-first UX for developers and other accidental designers
By Matt Lacey
()
About this ebook
Usability Matters: Mobile-first UX for developers and other accidental designers gives you practical advice and guidance on how to create attractive, elegant, and useful user interfaces for native and web-based mobile apps.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
Just because a mobile app works doesn't mean real people are going to like it. Usability matters! Most mobile developers wind up being part-time designers, and mastering a few core principles of mobile UI can make the difference between app and crap.
About the Book
Usability Matters is a guide for developers wrestling with the subtle art of mobile design. With each expertly presented example, app developer and designer Matt Lacey provides easy-to-implement techniques that instantly boost your design IQ. Skipping highbrow design theory, he addresses topics like gracefully handling network dropouts and creating intuitive data inputs. Read this book and your apps will look better, your users will be happier, and you might even get some high-fives at the next design review.
What's Inside
- Understanding your users
- Optimizing input and output
- Creating fast, responsive experiences
- Coping with poor network conditions
- Managing power and resources
About the Reader
This book is for mobile developers working on native or web-based apps.
About the Author
Matt Lacey is an independent mobile developer and consultant and a Microsoft MVP. He's built, advised on, and contributed to apps for social networks, film and TV broadcasters, travel companies, banks and financial institutions, sports companies, news organizations, music-streaming services, device manufacturers, and electronics retailers. These apps have an installed base of more than 500,000,000 users and are used every day around the world.
Matt previously worked at a broad range of companies, doing many types of development. He has worked at startups, small ISVs, national enterprises, and global consultancies, and written software for servers, desktops, devices, and industrial hardware in more languages than he can remember. He lives in the UK with his wife and two children.
Table of Contents
- Introduction Part 1 - Context
- Who's using the app?
- Where and when is the app used?
- What device is the app running on? Part 2- Input
- How people interact with the app
- User-entered data
- Data not from a user Part 3 - Output
- Displaying items in the app
- Non-visible output Part 4 - Responsiveness
- Understanding the perception of time
- Making your app start fast
- Making your app run fast Part 5 - Connectivity
- Coping with varying network conditions
- Managing power and resources
Matt Lacey
Matt Lacey is an independent mobile developer and consultant and a Microsoft MVP. He's built, advised on, and contributed to apps for social networks, film and TV broadcasters, travel companies, banks and financial institutions, sports companies, news organizations, music-streaming services, device manufacturers, and electronics retailers. These apps have an installed base of more than 500,000,000 users and are used every day around the world. Matt previously worked at a broad range of companies, doing many types of development. He has worked at startups, small ISVs, national enterprises, and global consultancies, and written software for servers, desktops, devices, and industrial hardware in more languages than he can remember. He lives in the UK with his wife and two children.
Related to Usability Matters
Related ebooks
The Mobile Frontier: A Guide for Designing Mobile Experiences Rating: 3 out of 5 stars3/5Microcopy: Discover How Tiny Bits of Text Make Tasty Apps and Websites Rating: 4 out of 5 stars4/5The Design of Web APIs Rating: 0 out of 5 stars0 ratingsAgile Metrics in Action: How to measure and improve team performance Rating: 0 out of 5 stars0 ratingsCollective Intelligence in Action Rating: 4 out of 5 stars4/5Visualizing Graph Data Rating: 0 out of 5 stars0 ratingsMicro Frontends in Action Rating: 0 out of 5 stars0 ratingsAgile ALM: Lightweight tools and Agile strategies Rating: 0 out of 5 stars0 ratingsUser Experience Mapping Rating: 0 out of 5 stars0 ratingsPlayful Design: Creating Game Experiences in Everyday Interfaces Rating: 5 out of 5 stars5/5Methodological UX Design A Complete Guide Rating: 0 out of 5 stars0 ratingsDesign for the Mind: Seven Psychological Principles of Persuasive Design Rating: 0 out of 5 stars0 ratingsWeb Form Design: Filling in the Blanks Rating: 5 out of 5 stars5/5Storytelling for User Experience: Crafting Stories for Better Design Rating: 2 out of 5 stars2/5Practical User Research: Everything You Need to Know to Integrate User Research to Your Product Development Rating: 0 out of 5 stars0 ratingsDesigning Agentive Technology: AI That Works for People Rating: 0 out of 5 stars0 ratingsEye Tracking the User Experience: A Practical Guide to Research Rating: 5 out of 5 stars5/5Practical UX Design Rating: 0 out of 5 stars0 ratingsLife and Death Design: What Life-Saving Technology Can Teach Everyday UX Designers Rating: 5 out of 5 stars5/5Mental Models: Aligning Design Strategy with Human Behavior Rating: 4 out of 5 stars4/5Make It So: Interaction Design Lessons from Science Fiction Rating: 4 out of 5 stars4/5Why We Fail: Learning from Experience Design Failures Rating: 4 out of 5 stars4/5Card Sorting: Designing Usable Categories Rating: 4 out of 5 stars4/5Designing Interface Animation: Improving the User Experience Through Animation Rating: 0 out of 5 stars0 ratingsConversations with Things: UX Design for Chat and Voice Rating: 5 out of 5 stars5/5User Experience UX Design The Ultimate Step-By-Step Guide Rating: 0 out of 5 stars0 ratingsDesign Beyond Devices: Creating Multimodal, Cross-Device Experiences Rating: 0 out of 5 stars0 ratingsThe User Experience Team of One: A Research and Design Survival Guide Rating: 5 out of 5 stars5/5UX Simplified: Models & Methodologies Rating: 3 out of 5 stars3/5
Programming For You
Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5JavaScript All-in-One For Dummies Rating: 5 out of 5 stars5/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5iPhone For Dummies Rating: 0 out of 5 stars0 ratingsExcel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsLinux: Learn in 24 Hours Rating: 5 out of 5 stars5/5C Programming for Beginners: Your Guide to Easily Learn C Programming In 7 Days Rating: 4 out of 5 stars4/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Python Data Structures and Algorithms Rating: 5 out of 5 stars5/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5HTML in 30 Pages Rating: 5 out of 5 stars5/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5C Programming For Beginners: The Simple Guide to Learning C Programming Language Fast! Rating: 5 out of 5 stars5/5Ethical Hacking Rating: 4 out of 5 stars4/5
Reviews for Usability Matters
0 ratings0 reviews
Book preview
Usability Matters - Matt Lacey
Copyright
For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact
Special Sales Department
Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
Email:
©2018 by Manning Publications Co. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps.
Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine.
Development editor: Marina Michaels
Technical development editor: Damien White
Review editor: Ozren Harlovic
Project manager: Tiffany Taylor
Copy editor: Frances Buran
Proofreader: Alyson Brener
Typesetter: Dennis Dalinnik
Cover designer: Leslie Haimes
ISBN: 9781617293931
Printed in the United States of America
1 2 3 4 5 6 7 8 9 10 – DP – 23 22 21 20 19 18
Dedication
To Chrissie, Izaak, and Phoebe: thank you for giving me the time and space to write this book. You can have Daddy back now.
Brief Table of Contents
Copyright
Brief Table of Contents
Table of Contents
Preface
Acknowledgments
About this book
Chapter 1. Introduction
1. Context
Chapter 2. Who’s using the app?
Chapter 3. Where and when is the app used?
Chapter 4. What device is the app running on?
2. Input
Chapter 5. How people interact with the app
Chapter 6. User-entered data
Chapter 7. Data not from a user
3. Output
Chapter 8. Displaying items in the app
Chapter 9. Non-visible output
4. Responsiveness
Chapter 10. Understanding the perception of time
Chapter 11. Making your app start fast
Chapter 12. Making your app run fast
5. Connectivity
Chapter 13. Coping with varying network conditions
6. Resources
Chapter 14. Managing power and resources
A. Exercise answers
B. Put it into practice
C. Recommended reading
D. Bibliography
Things every app should do
The six components of a great app experience: a handy reminder
Index
List of Figures
List of Tables
List of Listings
Table of Contents
Copyright
Brief Table of Contents
Table of Contents
Preface
Acknowledgments
About this book
Chapter 1. Introduction
1.1. What’s usability, and why does it matter?
1.1.1. Usability matters to everyone
1.1.2. Usability, UX, and design
1.1.3. The formula for app success
1.1.4. Great usability experiences are intuitive
1.2. Six components of great app experiences
1.2.1. Context of use underpins everything in an app
1.2.2. Input includes all ways data and information get into the app
1.2.3. Output includes and goes beyond what is shown onscreen
1.2.4. Responsiveness: how output is perceived
1.2.5. Connectivity changes and isn’t always guaranteed
1.2.6. Resources are finite and must be managed
1.3. How considering all six components can make apps better
1.3.1. Example 1: an email client
1.3.2. Example 2: a news app
1.3.3. Example 3: a tower defense game
1.4. Why you need to consider the six components in your apps
1.4.1. Experience is an important differentiator
1.4.2. Meet the expectations of those who’ll use your app
1.4.3. Planning for success
Summary
1. Context
Chapter 2. Who’s using the app?
2.1. You aren’t your users
2.1.1. How you’re different from your users
2.1.2. You’re not an average user
2.1.3. Be aware of the effects on your thinking
2.2. Who’s the app for?
2.2.1. Who’ll get value from your app?
2.2.2. Understanding the potential user base
2.2.3. Are there enough people who want the app?
2.2.4. Targeting groups of individuals
2.2.5. Putting on a persona, or several
2.2.6. Enterprise app usage
2.3. People aren’t all the same
2.3.1. Consider people’s differing abilities
2.3.2. Consider people’s differing expectations
2.3.3. Consider people’s differing goals
2.4. What are people doing?
2.4.1. What are people doing with the app?
2.4.2. What else are people doing?
Summary
Chapter 3. Where and when is the app used?
3.1. Where is the app used?
3.1.1. App usage at a macro-geographic level
3.1.2. App usage at a micro-geographic level
3.2. The regional impact on an app
3.2.1. Considering support for multiple languages
3.2.2. How culture and locale can impact an app
3.3. When is the app used?
3.3.1. Consider the time of day
3.3.2. Consider the day of the week
3.3.3. Consider the time of year
3.3.4. How long is the app used?
3.4. What activities are being undertaken while using the app?
3.4.1. Is the person using the app moving or stationary?
3.4.2. Is the user dedicated or distracted?
3.4.3. Is use isolated or in conjunction with something else?
3.4.4. Are they standing, sitting, or lying down?
Summary
Chapter 4. What device is the app running on?
4.1. Write once, run everywhere?
4.2. Supporting multiple operating systems
4.2.1. OS-imposed restrictions
4.2.2. Looking like you belong on the OS
4.2.3. Belonging on a version of the OS
4.2.4. Belonging in the enterprise
4.3. Maintaining brand identity and differentiation
4.3.1. Branding vs. visual identity
4.3.2. Separating your brand from the OS
4.3.3. Maintaining OS conventions while still reflecting a brand
4.4. Supporting different device capabilities
4.4.1. Handling multiple physical device sizes
4.4.2. Variations in internal hardware capability
4.4.3. Accounting for software variations
Summary
2. Input
Chapter 5. How people interact with the app
5.1. Supporting different pointing devices
5.1.1. Providing input with a finger
5.1.2. Providing input with a stylus
5.1.3. Providing input with a mouse and the keyboard
5.2. Using a pointing device to provide input
5.2.1. Supporting gesture-based input
5.2.2. Supporting multi-touch input
5.3. When pointing and touch input become difficult
5.3.1. Touch events don’t always do what the user wants
5.3.2. Raw input events need special attention
Summary
Chapter 6. User-entered data
6.1. The goals of the people using the app
6.1.1. Improve tasks by minimizing input
6.1.2. Improve tasks with defaults and suggestions
6.1.3. Improve tasks with alternative inputs
6.2. How to ask for data to be entered in forms
6.2.1. Optimizing how the form is arranged
6.2.2. Simplify how text is entered
6.2.3. Password entry requires special consideration
6.2.4. Simplifying entry from a fixed set of options
6.2.5. Validation and required fields
Summary
Chapter 7. Data not from a user
7.1. Data from web-based resources
7.1.1. Dealing with the data you directly request
7.1.2. Dealing with data pushed to the app
7.2. Getting data from the device
7.2.1. Input from the operating system
7.2.2. Data from the filesystem
7.2.3. Data from other apps
7.3. Getting data from sensors
7.3.1. Transparency and permission when using sensor data
7.3.2. Allow for variations in sensor input
7.4. Using heuristics and inferring input
7.4.1. Enhancing the app experience based on an individual’s usage
7.4.2. Enhancing the app experience based on the usage of all people
Summary
3. Output
Chapter 8. Displaying items in the app
8.1. The fundamentals of good visual output
8.1.1. Focus on the person using the app and their goals
8.1.2. Meet the expectations of the people using the app
8.1.3. Account for the specific device being used
8.1.4. Respect standards and conventions
8.2. Laying out controls on a screen
8.2.1. Implying meaning and relationships through alignment and hierarchy
8.2.2. Implying meaning and relationships through consistency
8.2.3. Implying meaning and relationships through proximity
8.3. Navigating within the app
8.3.1. Common navigation patterns
8.3.2. Special navigation considerations
8.4. Avoiding discrimination with what you display
8.4.1. Ensure your UI works for everybody
8.4.2. Saying the same thing to everybody who uses the app
8.5. Many factors affect the display of images
8.5.1. One size doesn’t fit all
8.5.2. Physical size isn’t everything: consider formats and formatting too
8.5.3. Customizing image placeholders
8.6. Use distinct icons with specific meanings
8.7. Allow for extremes of connectivity and content
8.7.1. Content that loads slowly or doesn’t load at all
8.7.2. When content isn’t available
8.7.3. Avoiding empty states
Summary
Chapter 9. Non-visible output
9.1. Physical and audio output support changes onscreen
9.1.1. Give your app a voice
9.1.2. Haptic feedback starts with vibration
9.2. Output to other apps and devices
9.3. Communicating from your backend
9.3.1. Allowing for multichannel communication
9.3.2. Sending effective push notifications
9.3.3. Using badges with push notifications
9.4. Communication via channels beyond the app
9.4.1. Using email to communicate with your users
9.4.2. Using SMS to communicate with your users
9.4.3. Using third-party messaging services to communicate with your users
Summary
4. Responsiveness
Chapter 10. Understanding the perception of time
10.1. How people perceive mobile time
10.1.1. Context influences the perception of responsiveness
10.1.2. Perception is about feelings, opinions, and comparisons
10.1.3. Being responsive with notifications
10.1.4. Meet expectations, don’t just be as fast as possible
10.2. Influencing the perception of responsiveness
10.2.1. Answer questions about what the app is doing
10.2.2. Show appropriate progress when something’s happening
10.2.3. Animation can hide delays
10.2.4. Usable isn’t the same as finished
10.3. Perceptions associated with the age of your app
Summary
Chapter 11. Making your app start fast
11.1. Doing the minimum to start the app
11.1.1. Deciding what to do on startup
11.1.2. Displaying a splash screen when launching the app
11.2. Preloading content to make the app faster
11.2.1. Preloading content to distribute with the app
11.2.2. Preloading content for the app’s next use
11.3. Preformatting content retrieved by the app
11.4. Caching content to save time and money
11.4.1. Using in-memory and disk-based caches
11.4.2. Checking for new versions of cached items
11.4.3. When to invalidate and delete cached items
Summary
Chapter 12. Making your app run fast
12.1. Using eager loading so people don’t have to wait
12.1.1. Eager loading complements preloading content
12.1.2. Beware of being too eager
12.1.3. Knowing what to load eagerly
12.2. Parallel operations take less time
12.2.1. Synchronous and asynchronous operations
12.2.2. Advice when working in parallel
12.3. Combining requests for improved speed and control
12.3.1. Controlling the server your app connects to
12.3.2. Getting faster responses by combining requests
12.3.3. Simplifying the client by combining requests
12.3.4. Combining requests and local files
Summary
5. Connectivity
Chapter 13. Coping with varying network conditions
13.1. Not all connections are the same
13.1.1. Securing your connection
13.1.2. Connection speed can vary
13.1.3. Connection cost can vary
13.2. Occasionally connected is the norm
13.2.1. Connections may not be possible
13.2.2. Connections may be lost
13.2.3. Connections may change
13.3. Optimizing for subprime conditions
13.3.1. Caching improves the experience in subprime conditions
13.3.2. Compression improves the experience in subprime conditions
13.3.3. Deferring actions increases what’s possible in subprime conditions
13.3.4. Batch operations in subprime conditions
13.3.5. Automatic retries improve the experience in subprime conditions
13.4. Balancing usability and a poor connection
13.4.1. Prioritizing important activities in poor conditions
13.4.2. Adjusting network usage based on network conditions
13.5. Keeping the user in control when conditions are poor
Summary
6. Resources
Chapter 14. Managing power and resources
14.1. When it’s gone, it’s gone
14.2. Do you really need it?
14.2.1. Lazy loading reduces wasted effort
14.2.2. Using alternatives to save resources
14.3. How often are you going to use it?
14.3.1. Managing resources that are only used once
14.3.2. Managing resources that are used repeatedly
14.4. Do you still need it?
14.4.1. Turning off resources when finished
14.4.2. Responding to changing circumstances
Summary
A. Exercise answers
Chapter 2 Who’s using the app?
2.1.3. Know that you’re different
2.3.3. Being aware of people’s differences
2.4.2. Learn about and from the people using the app
Chapter 3 When and where is the app used?
3.2.2. Regional and location impact
3.3.4. When the app is used
3.4.4. Activities influencing the app
Chapter 4 What device is the app running on?
4.2.4. Understanding different operating systems
4.3.3. Brand identity and differentiation
4.4.3. Varying hardware and software capabilities
Chapter 5 How people interact with the app
5.2.2. Appropriate gestures
5.3.2. The truth about challenging touch input
Chapter 6 User-entered data
6.1.3. Minimizing input
6.2.5. Evaluate this login form
Chapter 7 Data not from a user
7.1.2. Data from the web
7.2.3. Data from the device
7.3.2. Data from sensors
Chapter 8 Displaying items in the app
8.1.4. Visual fundamentals
8.3.2. Navigation
8.7.3. Handling extremes
Chapter 9 Non-visible output
9.1.2. Physical and audio output
9.3.2. Backend communication
9.4.3. Communicating beyond the app
Chapter 10 Understanding the perception of time
10.1.4. Perceiving time
10.2.4. Influencing perception
Chapter 11 Making the app start fast
11.3. Preloading and preformatting content
11.4.1. Where to cache
11.4.3. Caching, true or false?
Chapter 12 Make the app run fast
12.1.3. When to load data eagerly
12.2.2. Acting asynchronously
12.3.4. Combining requests, true or false?
Chapter 13 Coping with varying network conditions
13.2.3. Occasional and varied connections
13.3.5. Coping with subprime network conditions
13.5. Communicating app activity
Chapter 14 Managing power and resources
14.2.2. Doing what’s needed
14.3.2. Frequency of use
14.4.2. Changes and turn offs
B. Put it into practice
Chapter 2 Who’s using the app?
2.2.6. Know your users
2.4.2. Analyze app usage
Chapter 3 Where and when is the app used?
3.1.2. Location of app usage
3.2.2. Regional impact on your app
3.3.4. When the app is used
Chapter 4 What device is the app running on?
4.2.4. Knowing the OS your app runs on
4.4.3. Device differences
Chapter 5 How people interact with the app
5.1.3. Different input devices
5.2.2. Gestures and multi-touch input
Chapter 6 User-entered data
6.1.3. Align your form with user goals
6.2.5. Optimize your forms
Chapter 7 Data not from a user
7.1.2. Data from the web
7.2.3. Data from the device
7.3.2. Using sensors for input
7.4.2. Giving people what they want without asking
Chapter 8 Displaying items in the app
8.1.4. Visual fundamentals
8.2.3. Be consistent with layout
8.3.2. In-app navigation
8.4.2. Avoid discrimination
8.5.3. Displaying images
8.6. Be iconic
8.7.3. Empty states
Chapter 9 Non-visible output
9.1.2. Nonvisual output
9.2. Output and other apps
9.3.2. Output from the backend
9.4.3. Communicating outside the app
Chapter 10 Understanding the perception of time
10.1.4. Time perception and your app
10.2.4. Influencing perception
10.3. App updates
Chapter 11 Making your app start fast
11.1.2. Making your app do the minimum on startup
11.2.2. Preload content in your app
11.3. Preformat content used by your app
11.4.3. Cache content used by your app
Chapter 12 Making your app run fast
12.1.3. Eagerly load content used by your app
12.2.2. Making asynchronous requests
12.3.4. Combine requests
Chapter 13 Coping with varying network conditions
13.1.3. Allowing for connection variations
13.2.3. Allowing for occasional connections
13.3.5. Allowing for subprime network conditions
13.4.2. Usability in poor conditions
13.5. Keep the user in control
Chapter 14 Managing power and resources
14.1. Managing battery life
14.2.2. Resource alternatives
14.3.2. How often you use resources
14.4.2. Do you still need it?
C. Recommended reading
Badass: Making Users Awesome – Kathy Sierra (O’Reilly, 2015)
Design for Hackers: Reverse Engineering Beauty – David Kadavy (John Wiley & Sons, 2011)
Elements of User Experience: User-Centered Design for the Web – Jesse James Garrett (New Riders, 2002)
Mobile Design and Development: Practical Concepts and Techniques for Creating Mobile Sites and Web Apps – Brian Fling (O’Reilly, 2009)
Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems – Steve Krug (New Riders, 2009)
The Design of Everyday Things – Donald A. Norman (MIT Press, 1988)
D. Bibliography
Things every app should do
The six components of a great app experience: a handy reminder
Index
List of Figures
List of Tables
List of Listings
Preface
I don’t like bad software. I don’t want to make it, and I don’t want others to make it. It’s not just that I don’t want to use it; I don’t think anyone should have to use it. Unfortunately, what constitutes bad software is often difficult to define, which makes it hard to avoid creating it.
More than a decade ago, I set about trying to learn how to make better software so I could avoid contributing to the body of bad software that exists. As a developer, this meant learning about a lot of new topics, especially design. As I learned more, I started to share what I’d discovered with other developers at conferences and in user groups. Developers couldn’t understand or relate to the language and terminology of design, and they often weren’t interested in learning it, but they were interested in making better software.
It was at this time I developed the idea of the six components of an app that form the six parts of this book. These components allow developers to think about software (particularly mobile apps) in a way that goes beyond just the writing of code, but without needing to become a designer. This book aims to bring these ideas to a wider audience to help more developers improve their apps.
This is a book by a developer for developers—developers who want to build great apps, but realize that doing so takes more than just the ability to write code. Although there’s more to creating a successful app than any one book can cover, I hope that the contents of this book will help you to think about developing apps in new ways and improve the experiences of the people who will use them.
Acknowledgments
Several people have helped shape my career and approach to work. I will always be eternally grateful to Barney, Pete, Ian, Will, Seth, and Hugh. Thank you.
I’d also like to thank those people I’ve worked with who’ve taught me to write better software or about the mobile industry. A big thanks to Alan, Alec, Alex, Andy C., Andy W., Anna, Ben, Clint, Craig, Dave, David K., David M., Ewan, Garry, Glenn, Jaime, James, Keith, Louise, Marcus, Martin, Mike T., Nelson, Nicholas, Nick, Pat, Paul B., Paul F., Paul L., Paul M., Rafe, Riaz, Richard, Scott, Simon C., Simon S., Steve, Stuart L., Stuart R., Tom, and anyone I’ve forgotten.
Finally, I want to thank everyone at Manning who has made this book possible, including publisher Marjan Bace and everyone on the editorial and production teams. My thanks especially to Greg Wild, without whom I wouldn’t have started this book, and Marina Michaels, without whom I don’t think I would have finished. I also can’t thank enough the technical peer reviewers led by Ozren Harlovic: Damien White, Clive Harber, Giuliano Bertoti, Alan Lenton, Matthew Heck, Dmytro Lypai, Clifford Kamppari-Miller, Desmond Horsley, Alberto Chiesa, Amit Lamba, Alvin Raj, Jessica Lovegood, Xan Gregg, Paulo Nuin, and Saara Kamppari.
About this book
This book exists to help people create better mobile apps. When anyone can create an app, it takes more than just an app’s existence to make it stand out from the millions of others out there. There’s also a massive difference between a simple app and something that people appreciate, value, and repeatedly use to improve their lives. This book gives practical advice and guidance on how to take a mobile app, on any platform, and make it better.
Who should read this book
This book is for people who are creating mobile apps. The primary audience is developers, but there’s plenty of information for anyone involved in app creation: designers, testers, project managers, any other stakeholders, or a combination thereof. This book doesn’t teach how to write code or use a set of APIs or frameworks. Instead, this book teaches many other things you need to know to create a successful mobile app that the people using it will love and will enjoy using.
Much of what this book covers loosely falls under the broad topic of user experience (UX), but this isn’t a UX book. It won’t teach you to be a UX expert, and it isn’t for UX practitioners. This book is for people creating mobile apps, who have a desire to improve the apps they’ve already built or to build better ones in the future.
Note that despite this being a book for developers about creating apps, it doesn’t include any code. This is because the ideas this book covers are bigger than any single platform, technology, or programming language. The contents of this book aren’t limited to the people who use a single language and are meant to encourage you to think beyond the code to the actual use of the software and experiences you produce.
How this book is organized: a roadmap
This book has 14 chapters, divided into 6 parts:
Chapter 1 provides details of the six conceptual components of an app that are reflected in the six parts encompassing the rest of the book.
Part 1, Context
:
Chapter 2 covers the importance of understanding the different people who are using or will use your app and how knowledge of them can affect the app and its use.
Chapter 3 looks at the importance of knowing about the different times and places an app is used, because these can alter what people want from the app and how they will use it.
Chapter 4 highlights the ways devices can vary, and how to support those differences and keep a unique identity while still looking like the app belongs on the device.
Part 2, Input
:
Chapter 5 covers capturing input with different pointing devices and supporting advanced and custom input techniques.
Chapter 6 discusses capturing data in forms and doing so in a way that aligns with the goals of the people using the app.
Chapter 7 looks at working with data from the web, data that’s stored on the device, and data that comes from sensors on the device.
Part 3, Output
:
Chapter 8 covers the fundamentals of good UI, how to lay out controls on the screen, and navigating within the app.
Chapter 9 looks at what the app can do beyond displaying things onscreen. This includes audio and physical feedback, as well as sending details to other apps and communicating with the person using it in ways that go beyond the app itself.
Part 4, Responsiveness
:
Chapter 10 looks at how time plays a part in the experience of using an app and how this can be used to influence the experience of the people using it.
Chapter 11 focuses on different methods and techniques for helping an app to start as quickly as possible.
Chapter 12 covers the different ways apps can load, store, and use data to increase the speed with which it becomes accessible to the person using the app.
Part 5, Connectivity
:
Chapter 13 looks at the different connectivity scenarios in which mobile apps have to work and what can be done to limit any negative impact on the experience of using the app.
Part 6, Resources
:
Chapter 14 looks at strategies for making the best use of the finite and potentially limited resources available in a mobile environment.
This book is intended to be read from cover to cover, but each chapter is self-contained so that you can read it in isolation if you wish. The first four chapters provide the fundamental underpinning for the ideas in the rest of the book and so should be read before any other chapters if you don’t wish to read the book from cover to cover.
After chapter 1, each chapter contains exercises and Put it into practice
sections. The exercises are to help you confirm that you’ve understood the preceding section. Answers to the exercises are in appendix A.
The Put it into practice
sections include tips, comments, and suggestions for how you can apply what you’ve just read to your apps. Appendix B includes copies of all the Put it into practice
sections in a single place for easy reference or to use as a checklist.
About the author
Matt Lacey is an independent mobile developer and consultant. He’s built, advised on, and contributed to apps for social networks, film and TV broadcasters, travel companies, banks and financial institutions, sports companies, news organizations, music streaming services, device manufacturers, and electronics retailers. These apps have an installed base of more than 500,000,000 users and are used every day around the world.
Matt previously worked at a broad range of companies, doing many types of development. He has worked at startups, small ISVs, national enterprises, and global consultancies, and written software for servers, desktops, devices, and industrial hardware in more languages than he can remember. He lives in the UK with his wife and two children.
Chapter 1. Introduction
This chapter covers
What usability is, and why it matters
How user experience contributes to success
The six components of great apps
Why each component is important
As someone involved in the creation of mobile apps or games, you’ll want what you create to be as successful as possible. Regardless of how you define success, you can’t overlook the factor that the experience you create for the people using your app plays a role in achieving it. Throughout this chapter, I’ll introduce six components that contribute to great, successful app experiences, but I’ll start by defining what I mean by usability and the experience of using an app.
1.1. What’s usability, and why does it matter?
When it comes to creating apps, you’d probably rather spend most of your time focusing on code. Sadly, the successful developers I know say that the code only accounts for between 10% and 40% of their success. Many factors contribute to a successful app, but I believe that expanding your focus to also think about the experience of using an app is the easiest way to make simple, tangible improvements.
In this book, you’ll learn how to think about usability and the experience you’ll want your app to convey. Plus, you’ll gain lots of practical tips and general advice for changes you can make to improve them. Rather than tell you how to address specific scenarios, I’ll give you the knowledge to address all scenarios. These aren’t the things you’d normally see in a book about design—that’s because this book is specifically for developers like you.
Usability beyond mobile apps
You can apply the principles, knowledge, and lessons in this book to more than mobile apps. While this book focuses on mobile app examples, the principles behind the advice can be applied to websites and apps that run on any device.
In some ways, building for all the constraints of mobile can make other software development seem easier. If you can create an app that works on multiple devices, it’s much easier to build something that has to work only on one. Similarly, if you’re able to optimize for multiple forms of input or output, then non-mobile software that doesn’t need to account for as many situations can seem simple by comparison.
1.1.1. Usability matters to everyone
If you’re making the conscious decision to expand your app development knowledge beyond just code, or you’re looking for a way of making your app stand out among the competition and keep people using it, usability should matter; it matters to the people who use the app. Usability is about how easy your app is to use. People don’t want to spend their time trying to work out how to use your app or remembering how it’s different. An app that’s easy and intuitive will keep people using it repeatedly. They’ll also be more inclined to tell others about it in a positive way.
1.1.2. Usability, UX, and design
Design and designer are terms loaded with nuance and interpretation. They mean different things to different people and cover a broad array of concepts and topics. Everything from graphic design to branding, animation to copywriting, iconography to user interfaces, usability to human-computer-interaction, and user experience (UX) to information architecture, all fall under the umbrella of design. You don’t have to be an expert in each area of design, but knowledge and awareness of each will help. This book covers many aspects of design, but two that need special mention are usability and UX:
Usability— An aspect of design that looks at how easy something is to use. The only way to measure usability is by testing it with real people who use apps. We’ll come back to testing many times throughout this book, because getting feedback from the people who will use and are using your apps is important. To learn how to run your own usability tests, I recommend reading Rocket Surgery Made Easy by Steve Krug (New Riders, 2009).
UX— A popular term that many people have appropriated in recent years. It’s a formal discipline with recognized practices and techniques. More than just focusing on software design, it encompasses all aspects of interaction with a product, service, or company.
This book isn’t trying to teach you to be a UX expert or to give you license to call yourself a designer. This book will enable you to take the apps you’re already developing and create better experiences for the people using them so you (and your app) can be successful.
1.1.3. The formula for app success
App success is based on three important factors: value, experience, and luck. You can be successful with one, but striving to address all three is best. The distinction between these factors can sometimes be blurry, but this book focuses on the second. It’s about the experience that you design for the people using the app.
Please don’t make the common mistake of thinking that usability and UX are only about how your app looks. The experiences created by using your app can be much richer and more nuanced when you consider more than just the visuals. If this weren’t the case, this would be a book about user interface design rather than usability and the user’s experience. In this section, I define the three success factors:
Value— What a person gets from using an app. This could be a single benefit or many.
Experience— Relates to how the value is provided. It’s about the feelings and emotions that a person has when using an app.
Luck— The variable that you don’t have complete control over.
Let’s look at value first. Some ways that your app can provide value for the people using it are
By making a task possible
By making a task simpler
By making a task faster
By earning a person money
By saving a person money
By entertaining
By informing
By educating
By serving as a distraction or way to pass the time (although this is rarely a good reason for creating something)
Your app’s ability to meet the needs and desires of the people using it is part of the value it provides. You need to make sure you’re building the right thing for the people looking for the value you provide, not just making something possible. Sometimes a mobile app isn’t the best way to meet a person’s needs or to provide the value they seek.
Note
Meeting user needs is the fundamental principle of providing value. If you can’t provide value, it doesn’t matter how good the experience is. People won’t use the app.
The experience you create for the user is dependent on the value you’re providing. There may be some overlap between the two when defining the context of use and the target market for the app. Experience is also, in part, about how you deliver value. The experience you create for the people using the app is what impacts success. Traditional UX tasks, such as user research and testing, can contribute to the experience you create, but they aren’t the same thing. In most cases, you’ll want the experiences you create to be positive, but this isn’t always the case.
When you might want to create a negative experience
You will want to consider two occasions when it might make sense to provide a negative experience. The first is to discourage bad or negative behavior. For example, if a player was to turn on their teammates in your game, you might want to do something to discourage them from doing this again. You could reduce the effectiveness of their armor, restrict the strength of their weapons, artificially limit the responsiveness of the game, or include another creative way of letting them know the consequences of doing things they shouldn’t. Or, your app can force a negative experience upon the person using it when they do something that’s detrimental to the other people who use the app. If someone’s repeatedly reported for spam or offensive content in your chat app, you may choose to limit the length or frequency of messages they can send.
The second reason for deliberately creating a negative or challenging experience is if you want to increase positive emotion in the future. (This is a common strategy used in games to keep people playing.) If someone must struggle and fail a few times to achieve something, such as completing a level or defeating an opponent, they’ll feel much better when they do achieve their goal. In this scenario, the positive feeling will be higher after they’ve failed a few times than it would’ve been if they had achieved their goal on the first attempt.
Creating a great experience in your app is important because you can’t rely on luck. For example, large companies that have had success in the past release new games to a muted response. Or, individual developers have seen their games suddenly become viral hits months after release. Luck is as good as any name for this factor, but it isn’t totally out of your control. Becoming a viral hit, being repeatedly featured in the app store, or having positive reviews in the press isn’t something anyone can guarantee, but there are things you can do to increase your chances of these happening and the luck you and your app experience.
In the first century AD, the Roman philosopher Seneca said, Luck is what happens when preparation meets opportunity.
It still applies today. You can’t guarantee the opportunities you’ll have, and you may even have to work to create them. But if they do come and you’re not prepared, you’ll miss out.
You’re more likely to create something lots of people use if it’s something they want. People will share an app more if it’s easy and there’s a benefit. The press and websites are more likely to write about your app if it’s unique, if it’s high quality, and if you tell them about it and ask for a review. Stores are more interested in featuring apps that are new, of high quality, and show the unique features of the platform.
This book is about experience, as that’s the easiest factor for you to control in a way that can be beneficial to your app and help it stand out from the competition. Value is often easy to compete with as functionality is easy to copy. Luck is partially out of your control, so it isn’t something you can rely on. The experience of an app is embedded deep in its design, and that’s the hardest to replicate. But a great, intuitive experience can enhance its value and increase your opportunities for luck.
1.1.4. Great usability experiences are intuitive
Intuitive is a word that’s often used to describe apps. I regularly see release notes claim, Now, more intuitive to use.
There’s a problem with such a claim. It’s that whether something is intuitive is subjective—for something to be intuitive, it must meet the expectations of the person using it.
You’ll find some official lists of things software should do to be considered usable at www.usabilitynet.org/tools/r_international.htm, but you can’t tick off the items on a checklist and then claim your app is intuitive. You can claim that something is intuitive for you, or you can mention other people who’ve said they find it intuitive, but you can’t claim something is intuitive for me. Only I can say if I find your app intuitive once I’ve used it.
To find out if people think your app is intuitive, you must ask them. This raises the question, How can this book show how to increase the usability of an app and make it more intuitive if that can only be determined by the people who use it?
This is a good question and shows you’re paying attention. Before releasing them more widely, test the apps you create based on the advice given in this book with a sample of real people the apps are intended for. Only the people the app is intended for can say if it’s right for them.
This book provides guidance and instruction on improving your apps based on common conventions, best practices, and many years of investigating what features of hundreds of apps led to people having a positive, intuitive experience. Making something intuitive is like the ideas behind the principle of least surprise: software should behave as the person using it expects it to. Applying these concepts to an app isn’t intuitive itself. To help you think about all aspects of an app, I’ve broken the app experience into six components, which I’ll introduce now.
1.2. Six components of great app experiences
You can think about or visualize the structure of an app in many ways. Throughout this book, we’ll look at six different components of an app experience:
Context
Input
Output
Responsiveness
Connectivity
Resources
Five of these components relate to logical areas of functionality, or parts of the architecture of an app. The sixth, context, is about how to view the app, so we’ll look at that first.
1.2.1. Context of use underpins everything in an app
Context is the situations and circumstances surrounding the use of an app. It’s about looking at the big picture and seeing how the app fits into the wider environment. Think of considering context as looking at your app through a pair of glasses with three lenses, like that shown in figure 1.1. Each lens allows you to see a different aspect of the app’s context, and it’s only when you see all of those that you get the complete picture.
Figure 1.1. Considering context is like looking at an app and seeing three different aspects of its use.
An app that considers context appropriately provides an experience that fits seamlessly into the life of the person using it; it meets their needs and works as expected. An app experience that doesn’t fully consider context can end up not working for the audience it was intended for, because it lacks what they want and performs poorly on the devices they’re using. Ultimately, people will struggle with the motivation to keep using the app. Different people have different needs, expectations, and requirements. Considering the people who’ll use your app allows you to be sure you’re providing what’s right for them.
Also, the environment where the app is used can influence how a person interacts with it, and the location can provide extra hints to help optimize what a person experiences from an app. Knowledge of the capabilities possessed by the devices your app will run on allows the creation of an app that makes use of the facilities and functionality available to it. This knowledge also enables the creation of an app that can integrate with the wider experience of using the phone and the other apps installed on the device.
Ignoring context is like only testing your app with a mouse in the simulator on your PC while sitting at a desk when real people using the app will do so by hand, in the field, with poor connectivity, and while distracted by another part of their job. In chapters 2 through 4, I’ll take you through the elements that make up the circumstances of use to consider as the context.
1.2.2. Input includes all ways data and information get into the app
Input encompasses all the ways of supplying data and instructions to the app. It’s the first of the components that relate to the high-level structure of the app. Figure 1.2 shows these components (in bold) and their relationships.
Figure 1.2. How the five structural components of an app relate to each other, the user, and external systems
Input for a mobile app can be about much more than tapping a screen and filling out a form. An assortment of input sources and mechanisms are available from the device, the person using it, and remote sources. For the people using the app, it’s rarely their aim to use an app just to gather input. Whether saved for later use or to give an immediate reward, aim to optimize the input-gathering elements of an app to the point where the people using the app can receive the maximum benefit from their input.
Note
You can avoid much direct input, but when necessary, gather it quickly, simply, and accurately. Whether the input is optional or necessitated by the app, input is a means to an end and not an end in itself.
If you’re not considering input fully, you may end up creating a long, slow, tedious, and error-prone process that degrades the experience of the people using it to one that frustrates and annoys. As an example of how input can impact usability, consider the need to get a person’s location. Three ways of doing this, each with different user experiences, are using the device’s GPS, tapping a point on a map, or typing in a street address. Chapters 5, 6, and 7 dig deeper into considerations of how your app can handle input.
1.2.3. Output includes and goes beyond what is shown onscreen
When considering output, the first thing you’ll probably think of is the screen. Devices in use today have screens that cover a broad spectrum of physical dimensions. You can’t always use the identical output on a 3 in. screen, on a 10 in. screen, or in a response that’s read aloud to the person using the app. It’s essential that everything displayed on any supported device is readable, usable, helpful, attractive to view, and easy to navigate.
Output is also about more than what’s displayed onscreen. In addition to visual output, there’s also audio and physical output to consider. Beyond that, you need to consider what is sent to other systems and services as well.
When the output from an app is poor, it