Usability Matters
Mobile-first UX for developers and other accidental designers
Matt Lacey
  • MEAP began April 2016
  • Publication in August 2018 (estimated)
  • ISBN 9781617293931
  • 360 pages (estimated)
  • printed in black & white

This manuscript is a real treasure.

Clive Harber

For large groups of users, mobile devices have replaced the desktop as their primary computing platform. As an application developer, you have to think mobile-first to make your customers happy. Mobile apps require a different approach to UI design, and usability matters if you want your apps stand out from the competition! An amazing mobile UX can be the difference between users flocking to your app or causing them to delete it entirely. Fortunately, building great user interfaces is a skill you can learn, even if you're a heads-down desktop or web coder.

Usability Matters: Mobile-first UX for developers and other accidental designers gives you practical advice and guidance creating attractive, elegant, and useful user interfaces for native and web-based mobile apps. You'll start by learning six dimensions of a great app experience. Then you'll be guided through practical concepts for creating those great experiences for your users. Following expertly-presented patterns, examples, and checklists, you'll learn how to recognize good (and not-so-good) UX in your own designs and master the techniques that separate the best apps from the rest of the pack.

Table of Contents detailed table of contents

1. Introduction

1.1. What is 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 store success

1.1.4. Great usability experiences are intuitive

1.2. The 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 on the screen

1.2.4. Responsiveness is how the output is perceived

1.2.5. Connectivity changes while apps are in use and isn’t 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. Competition between apps can be fierce, and UX is an important differentiator

1.4.2. Meet the expectations of those who will use your app

1.4.3. Planning for success

1.5. Summary

Part 1: Context

2. Who is using the app?

2.1. You are not 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 is the app for?

2.2.1. Who will 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 actually doing?

2.4.1. What are people doing with the app?

2.4.2. What else are people doing?

2.5. Summary

3. Where and when is the app used?

3.1. Where is the app used?

3.1.1. App usage considerations at a macro-geographic level

3.1.2. App usage considerations at a micro-geographic level

3.2. The regional impact on an app

3.2.1. Considering multiple language support

3.2.2. How culture and locale can impact an app

3.3. When is the app used?

3.3.1. Considering the time of day

3.3.2. Considering the day of the week

3.3.3. The impact of the time of year

3.3.4. For 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 companion with something else?

3.4.4. Are they standing, sitting, or lying down?

3.5. Summary

3.6. Exercise answers

3.6.1. Regional and location impact

3.6.2. When the app is used

3.6.3. Activities influencing the app

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. Internal hardware capability variations

4.4.3. Accounting for software variations

4.5. Summary

Part 2: Input

5. How do 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

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 gets hard

5.3.1. Touch events don't always do what the user wants

5.3.2. Handling raw input events

5.4. Summary

6. User-entered data

6.1. The goals of the person using the app

6.1.1. Improve tasks by minimizing input

6.1.2. Improve tasks by avoiding input through 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

6.3. Summary

7. Data not from a user

7.1. Data from web-based resources

7.1.1. Dealing with 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 file system

7.2.3. Data from other apps

7.3. Getting data from sensors

7.3.1. Use sensors to improve the experience with the app

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

7.5. Summary

Part 3: Output

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. Avoid 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

8.5.3. Customizing image placeholders

8.6. Use clear 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

8.8. Summary

9. Non-visible output

9.1. Physical and audio output support changes on screen

9.1.1. Don?t leave your app silent. Give it a voice.

9.1.2. Haptic feedback starts with vibration

9.2. Output to other apps and devices

9.3. Communicating from your back end

9.3.1. Allowing for multi-channel 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

9.5. Summary

Part 4: Responsiveness

10. Understand 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 your app’s 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

10.4. Summary

11. Make the app start fast

11.1. Do 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. Pre-load content to make the app faster

11.2.1. Pre-loading content to distribute with the app

11.2.2. Pre-loading content for the app's next use

11.3. Pre-format content retrieved by the app

11.4. Cache 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

11.5. Summary

12. Make the app run fast

12.1. Use eager loading, so people don’t have to wait for the app

12.1.1. Eager loading complements pre-loading 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. Combine requests for improved speed and control

12.3.1. Control the server your app connects to

12.3.2. Get faster responses by combining requests

12.3.3. Simplify the client by combining requests

12.3.4. Combining requests and local files

12.4. Summary

Part 5: Connectivity

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. Connection 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. Prioritize important activities in poor conditions

13.4.2. Adjust network usage based on network conditions

13.5. Keep the user in control when conditions are poor

13.6. Summary

Part 6: Resources

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. Use alternatives to save resources

14.3. How often are you going to use it?

14.3.1. Managing resources only used once

14.3.2. Managing resources used repeatedly

14.4. Do you still need it?

14.4.1. Turn it off when finished

14.4.2. Responding to changing circumstances

14.5. Summary


Appendix A: Exercise answers

A.1. Who is using the app?

A.1.1. Know that you’re different

A.1.2. Being aware of people’s differences

A.1.3. Learn about and from the people using the app

A.2. When and where is the app used?

A.2.1. Regional and location impact

A.2.2. When the app is used

A.2.3. Activities influencing the app

A.3. What device is the app running on?

A.3.1. Understanding different operating systems

A.3.2. Brand identity and differentiation

A.3.3. Varying hardware and software capabilities

A.4. How people interact with the app

A.4.1. Appropriate gestures

A.4.2. The truth about challenging touch input

A.5. User entered data

A.5.1. Minimizing input

A.5.2. Evaluate this login form

A.6. Data not from a user

A.6.1. Data from the web

A.6.2. Data from the device

A.6.3. Data from sensors

A.7. Displaying items in the app

A.7.1. Visual Fundamentals

A.7.2. Navigation

A.7.3. Handling extremes

A.8. Non-visible output

A.8.1. Physical and Audio Output

A.8.2. Back end communication

A.8.3. Communicating beyond the app

A.9. Understand the perception of time

A.9.1. Perceiving time

A.9.2. Influencing perception

A.10. Make the app start fast

A.10.1. Pre-loading and pre-formatting content

A.10.2. Where to cache?

A.10.3. Caching, true or false?

A.11. Make the app run fast

A.11.1. When to load data eagerly

A.11.2. Acting asynchronously

A.11.3. Combining requests, true or false?

A.12. Coping with varying network conditions

A.12.1. Occasional and varied connections

A.12.2. Coping with sub-prime network conditions

A.12.3. Communicating app activity

A.13. Managing power and resources

A.13.1. Doing what?s needed

A.13.2. Frequency of use

A.13.3. Changes and turn offs

Appendix B: Put it into practice

B.1. Part 1: Context

B.1.1. Who is using the app?

B.1.2. Where and when is the app used?

B.1.3. What device is the app running on?

B.2. Part 2: Input

B.2.1. How people interact with the app

B.2.2. User entered data

B.2.3. Data not from a user

B.3. Part 3: Output

B.3.1. Displaying items in the app

B.3.2. Non-visible output

B.4. Part 4: Responsiveness

B.4.1. Understand the perception of time

B.4.2. Make the app start fast

B.4.3. Make the app run fast

B.5. Part 5: Connectivity

B.5.1. Coping with varying network conditions

B.6. Part 6: Resources

B.6.1. Managing power and resources

C.1. Badass: Making Users Awesome ? Kathy Sierra (O?Reilly)

C.2. Design for Hackers: Reverse Engineering Beauty ? David Kadavy (John Wiley & Sons)

C.3. Elements of User Experience: User-centered Design for the Web ? Jesse James Garrett (New Riders)

C.4. Mobile Design and Development: Practical concepts and techniques for creating mobile sites and web apps ? Brian Fling (O?Reilly)

C.5. Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems ? Steve Krug (New Riders)

C.6. The Design of Everyday Things ? Donald A. Norman (MIT Press)

Appendix D: Bibliography

What's inside

  • Understanding your users
  • Optimizing user input and output
  • Creating fast and 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 has been creating apps for mobile devices since 2001. He is currently working as an independent mobile development consultant, helping companies of all sizes with strategy, planning and implementation of mobile development solutions. Matt is a community leader and Microsoft MVP who organizes user group meetings to help people learn to create better apps.

Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
Usability Matters (combo) added to cart
continue shopping
go to cart

MEAP combo $44,99 pBook + eBook + liveBook
Usability Matters (eBook) added to cart
continue shopping
go to cart

MEAP eBook $35,99 pdf + ePub + kindle + liveBook

FREE domestic shipping on three or more pBooks

There is a strong feeling that the author really knows what he is talking about and shares a lot of his experience in the field.

Dmytro Lypai

Should be required reading for any aspiring developer / designer.

Desmond Horsley

There were many gems in the book that really brought out an "Oh yeah, that makes sense!" kind of response.

Amit Lamba