Designing and coding great applications is hard; that’s why we spend so much time and effort thinking about it here at 2 Sides. While every application we work on in unique and has it’s own challenges, here are some useful rules based on our experience that can be applied to any project.
Understand users, then ignore them
People are notoriously bad at predicting their own behavior. When you design, watch what they do, and then go design. Henry Ford had a great quote, “If I had asked people what they wanted, they would have said they wanted a faster horse.” The amount of user research you do will vary based on your project, but just make sure you do some*.
Build only what’s absolutely necessary
It’s can be very easy for coders to add feature to digital applications. Marketers encourage this so that the product sheet is longer than competitors. These new features have a huge cost beyond the initial coding though:
- They have to be tested and documented.
- They have to be designed. To do this well takes time.
- Most importantly, they’re another thing for users to learn or evaluate, and can often dilute other more-important features in the UI.
Support the users mental model
A “mental model” is a construct people use to help them understand new objects in the world. For example, we all have a mental model of a car. If we see a go-cart, it may not be the same, but it’s close enough to a car that we could most likely operate it. This is because our mental model of a car is sufficiently accurate to work a go-cart. We can use this in digital design to help users understand our application. If there is good mental model you can use for your application, it will go a long way in helping your users understand how to use it.
Turn beginners into intermediates immediately
Beware the blank screen. If a user is new to the system and there is no data in it yet, replace that blank screen with a tour or a video to help them learn what to do. Users don’t read manuals, so you need to make the system useful to the novice with them. Watch new users, see where they have the “what do I do next” look, and then add contextual, inline information to help them
Prevent errors (or handle them gracefully )
Dealing with errors and user input is often regarded of as one of the least interesting parts of application design, and thus is usually done very poorly. The reality is that good design in this area can be the difference between and application being successful or not. Design good forms that are easy to use. Craft good copy for your forms and dialogs. Two great books on this subject are, “Defensive Design for the web” by 37 Signals and “Web Form Design” by Luke Wroblewski.
Get rid of features you don’t need. There’s an expression called “Kill your darlings” in the design field. It means we have to be willing to get rid of things we have worked on unless we are absolutely certain they add value to the application. If you want to see a fun example of how to reduce, check out the the “We sell fresh fish here” story.
Make it fast
Push your developers and designers to make the fastest app they can. Slow applications simple *kill* usability and perceived usefulness. Speed is what put Google where they are now, and the are absolutely fanatical about it in all their products. I recently ran across a great site called Bagcheck, which allows users to share lists of things they are interested in. The site’s functionality is great, but what is amazing about it is it’s speed. It is simply the fastest web app I have ever seen, and this speed makes it absolutely delightful to use. If you’re interested, you can read about how they achieved this performance.
*The only time it might be appropriate to not do user research is if you are designing self-referentially (ie, the app is something you would use). The designers at Apple don’t need to ask users what they need in an iPod since they have a lot of experience with digital music devices.