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

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.

"This manuscript is a real treasure."

~ Clive Harber

"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

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

1.2.2. Input

1.2.3. Output

1.2.4. Responsiveness

1.2.5. Connectivity

1.2.6. Resources

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

1.4.2. Expectation

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. You're not an average user

2.1.2. 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. Differing abilities

2.3.2. Differing expectations

2.3.3. 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. Putting it into practice

2.6. 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. The impact of the time of year

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

4.4.3. Software variations

4.5. Putting it into practice

4.6. Summary

Part 2: Input

5. How do people interact with the app?

5.1. 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. The variety of gestures 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. Putting it into practice

5.5. Summary

6. How is data entered into the app?

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. Putting it into practice

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

7.6. Exercise answers

7.6.1. Data from the web

7.6.2. Data from the device

7.6.3. Data from sensors

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

8.9. Exercise answers

8.9.1. Visual Fundamentals

8.9.2. Navigation

8.9.3. Handling extremes

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

9.6. Exercise answers

9.6.1. Physical and Audio Output

9.6.2. Back end communication

9.6.3. Communicating beyond the app

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

10.5. Exercise answers

10.5.1. Perceiving time

10.5.2. Influencing perception

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

11.6. Exercise answers

11.6.1. Pre-loading and pre-formatting content

11.6.2. Where to cache?

11.6.3. Caching, true or false?

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

12.5. Exercise answers

12.5.1. When to load data eagerly

12.5.2. Acting asynchronously

12.5.3. Combining requests, true or false?

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. Batching operations can simplify the code 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

13.7. Exercise answers

13.7.1. Occasional and varied connections

13.7.2. Coping with sub-prime network conditions

13.7.3. Communicating app activity

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

14.6. Exercise answers

14.6.1. Doing what’s needed

14.6.2. Frequency of use

14.6.3. Changes and turn offs

Appendixes

Appendix A: Exercise answers

Appendix B: Putting it into practice

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.
Buy
MEAP combo $44.99 pBook + eBook + liveBook
MEAP eBook $35.99 pdf + ePub + kindle + liveBook

FREE domestic shipping on three or more pBooks