Principles Of Software Design

1) Show confirmation after an action has been performed
After the user has performed an action, such as deleting a message, sending a message, uploading a file etc…, make sure it is clear that the action has been carried through.

Often applications will assume that just because the user has knowingly pressed the ‘Send’ button or the ‘Delete’ button, they know exactly what has happened. However, it is important that the users gets proper feedback even if the last action was a success. Don’t allow your users to wonder whether or not the last operation was carried through properly.

Another important principle that falls closely in line with this one is to provide active feedback as a long operation is taking place. Instead of making it seems as though your application has froze, visual feedback during long tasks is extremely important to let the user know what’s going on.

2) No Error Codes
Building on the previous point, when an error occurs, notification to the user is extremely important. This error code, however, must be descriptive and offer advice on what the user can do to fix this.

At a bare minimum, any error codes reported by the operating system, web server, etc… should be converted into plane English (or whichever language the application is developed in).

Once you translate the application’s error codes into something your users will understand, provide them with the steps to fix this problem. What should they do next? How can they fix the problem so it won’t happen again?

3) Always Provide A Way Out
Wouldn’t it be scary if you pressed the Delete button by accident and the confirmation message that appeared did not include a Cancel button? That would be the absolute extreme situation where the user was not provided with a way out.

Often applications don’t provide a clear way out of an operation if the user changes their mind. This happens a lot with online applications that force users to press their back button. I believe there should always be a way out of an operation without having to press the back button or quit an application.

This issue comes up a lot when an application tries to perform a long operation, for example, searching through thousands of files. It’s always important to let the user cancel the operation if they feel it is taking too long or realized they made a mistake.

Make sure you provide a way out of every decision you ask the user to make.

4) Easily Accessible Help
Are your users reading your manual from start to finish before they open your application? Not likely!

Nobody wants to read through manuals before they can use the new software they just downloaded. However, that doesn’t mean that they won’t go looking for help.

It’s important to provide the user with the necessary information and help resources when they need it. Using help tags is a good start, but combine that with quick links to additional help topics without making the user stop what they’re doing.

Help icons in all dialogs should take them to additional information on the current features they are working with. When they’re in the ‘Search Dialog’, the help icon should take them right to the search topic in your user manual.

5) Let Your Users Be Lazy
Spend that extra time putting in the necessary features to make sure your users don’t have to do additional work. Do they need to locate a file on their hard drive? Your application should offer to find it for them. Do they need to install another component from your web site? Your application should install it for them (Or at-least take them to your web site).

Allow your users to do less, so they can focus on using your application.

6) Make It Inconvenient To Delete Data
Even if this is an important feature in your application, make it really inconvenient. Don’t allow users to delete data easily. There is a reason Windows has a Recycling Bin and the Mac has the Trash can. If you allow users to delete data easily they will delete important data and blame you. Make it really inconvenient for them to delete anything, and if they do delete something, offer them a way to get it back.

7) They’re Not Reading Your Warnings
Building on the last principle, it is important to know that users are NOT reading your warnings. No matter how much you try to tell them, they are not paying attention.

This includes the pop-up Message Dialogs right before the user decides to delete his hard drive. The fact is, if users actually did read your dialog boxes, you would have a lot less support to handle. However, that doesn’t mean that these messages should not provide all the information necessary for users to make decisions.

Message dialogs that try to show a warning or error message should be visually different than other messages. I don’t mean to make your application completely different from other applications your users are used to, just to make sure that they know the message they are about to dismiss is real important.

8) Multiple Undo/Redo
So what happens after they ignore your warning dialogs? They realize where they want wrong and want to fix it.

All applications should have multiple undo and redo features. This should not be a feature, but rather a “Bug”, if it does not exist.

9) Hide the Advanced Features
When you design your application plan out what are the essential features and what are more advanced features for the users who want more control over your application’s features. Users just want to get their work done and not be bothered with dozens or options and choices. Give them what they need and tuck everything else away in an unobtrusive spot that users can get to only if they want more control.

For example, if your image editing application allows users to export images they have edited, a basic feature might be to choose the picture format. A more advanced feature would be the number of colors or the ability to include comments in their picture files.

10) Remember What They Like
Your windows and dialogs should remember previous settings that the user has chosen before. Going back to your image editing application, if they previously selected to export as a JPEG picture, your Export dialog should remember these settings.

11) Stay Consistent
Stay consistent both within your application and with other applications the user is used to. Make sure that interface elements are standard and are used properly. It is really difficult to create a new widget and expect users to know what it’s supposed to do. This is one of the problems with cross platform applications. They just don’t seem to blend in with the Operating System. It’s also a problem with web-based applications. Who gets to decide the Interface Guidelines that should be used? These decisions are already made for you when creating desktop applications for Mac or PC.

Non-standard controls will also not look good as operating systems get updated or the user uses different skins and templates.

One Response to “Principles Of Software Design”

  1. Angus Gratton Says:

    >error codes … should be converted into plane English

    Is that the English spoken on airlines, or aviation technical jargon?

    ;-). Great article. I especially liked your other post on adding Features.

    >Wouldn’t it be scary if you pressed the Delete button by accident and
    >the confirmation message that appeared did not include a Cancel
    >button?

    I just bought a new mobile phone which has this exact dialog when you accidentally press a button while typing a text message. WTF? Who designs these things?

Leave a Reply