Design for Repetition
After building multiple applications used by thousands of paying customers I feel like I've converged on a philosophy of design that could be summed up as 'Design for Repetition'.
Is your app used a lot? Or a little? Is your app meant to be engaging? Or are people supposed to get in and out?
A lot of design decisions can be solved by understanding not just the way your user wants to interact with your application, but by how often.
With Badger, our customers interact with the app many times during a workday and perform a few interactions almost constantly. With all this repetition, our goals converged on the following:
- Get the hell out of the way
- Make it really easy to undo/redo actions
- Reduce steps, confirmation, and any explicit actions as much as possible
- Don't hide buttons (for example, on hover-state)
With enough repetition you barely had to pay attention to what you were doing within our application. Making mistakes was a non-issue, you could quickly undo/redo whatever action had occurred. Did they upload bad data? No big deal, they can undo that. Did they mess up their route? No worries, they can quickly clear and re-add items through multiple points of entry intuitively and in seconds. Did they click the wrong item during a check-in? Just click again and choose the new option.
This creates strong feedback loops where poeple ultimately feel safe in the app. Instead of something that might betray their trust, it becomes an extension of them.
Think about any tool in a woodshop. The tool is designed for constant, repetitive actions, so that you can rely on it, you can trust it. With enough time, you don't have to think about it.
Make software that is designed for repetition.