Usability Matters
Mobile-first UX for developers and other accidental designers
Matt Lacey
  • MEAP began April 2016
  • Publication in Early 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. Moving vs stationary?

3.4.2. Dedicated or distracted?

3.4.3. Isolated or in companion?

3.4.4. Standing, sitting, or lying?

3.5. Putting it into practice

3.6. Summary

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. What about data that doesn't come directly from the 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. Putting it into practice

7.6. Summary

Part 3: Output

8. How are items displayed 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’s slow to load or doesn’t load at all

8.7.2. When content isn’t available

8.7.3. Avoiding empty states

8.8. Putting it into practice

8.9. Summary

9. What about output that isn’t shown on the screen?

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

9.6. Summary

Part 4: Responsiveness

10. How is time perceived when using the app?

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

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

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. Eager loading

12.1.1. Eager loading complements pre-loading content

12.1.2. Being too eager

12.1.3. Knowing what to load eagerly

12.2. Parallel operations

12.2.1. Synchronous and asynchronous operations

12.2.2. Advice when working in parallel

12.3. Combining requests

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

Part 6: Resources

14. Managing power and resources

Appendixes

Appendix A: Exercise answers

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