Skip to main content

Ten commandments for developers

In order that applications and operating system shall not drive users insane thou shall:

1. Allow immediate termination

I hit the wrong button. I changed my mind. I didn’t know it would take this long.

Either way, the operation needs a cancel button that should take immediate effect and quickly clean up what it can.

If it was copying or uploading a file delete what was done, for database operations rollback the transaction or for formatting a disk leave it half formatted and unformat the first sector but do it FAST.

If you think the consequences are too great ask what effect forceful termination or switching off the power is going to be.

2. Leave start-up alone

I’ll do that right now, just let me log in… Zzz… Sorry. It should be done in a minute. Sigh.

Your app might be the center of your world developing day and night – it’s not the center of mine.

I might use it for a 7-8 hours a day if you’re lucky. That doesn’t mean I want it starting automatically unasked.

It also doesn’t mean you can install services, background tasks or other junk that will prevent me from doing what I need when I’m in a hurry and running with a low battery.

If you need to check for updates do it silently in background when I launch the app or add something to the Windows scheduler and don’t create an entire service.

3. Not modify existing file associations

I tried that last time and it screwed up my associations. I’m not going to try the new version no matter what.

I might want all video files to go through your app. I might not.

Let me make that choice and reverse it. If I uninstall your program reverse it automatically.

Associating every media file on my system with your app isn’t going to make think wow. It isn’t going to make the sale or make me believe my system can’t live without your software.

There will be incompatibilities, features you don’t support or perhaps a clunky UI and and I’ll uninstall your app to go back to my old favorite.

When all my associations are broken you can’t bet I won’t be coming back to see what you’ve done in version 2.

4. Not ask inappropriate questions

Do you want to move or copy files from this zone? Yes or No.

Zone? What? Err, copy please. What do you mean Yes or No?

I just performed a non-destructive operation and you want me to confirm it?

Do you want to remember your password?

An insanely stupid question that appears after a login box doesn’t have a password stored, either because:

  • I don’t use the feature but can’t switch it off (never ask me again)
  • I’m not on my own computer (shut up for 30 minutes)
  • I have a new machine and haven’t typed it for months (ask me in 10 seconds when I find out if it’s right)

You rarely get useful options but at least Firefox 3 realizes it should ask quietly at the top of the page after you can see if it worked.

5. Keep noise to a minimum

Windows has installed updates!
AVG Anti-Virus updated successfully.

This is business-as-normal – I DON’T CARE.

If there is a problem updating let me know – unless it’s something simple that will go away without my involvement in a day or so like a missing network connection.

People don’t call or message me day in and out to tell me nothing, neither should my computer.

This also goes for audio notification of trivial activities.

Don’t annoy people in their offices and homes with stupid noises just because somebody the other side of the world has logged in.

6. Stay focused on the goal

The instant messaging crown was taken from ICQ because they overloaded the client with games and junk. People wanted simple messaging but by the time they figured this out with ICQ Lite it was too late.

Real repeated the same blunder where a good video player expanded to consume all available files, starting messaging me and breaking every commandment there is.

Adobe think Acrobat shouldn’t be a quick useful PDF viewer for pixel-perfect page reproduction but rather a piggyback mechanism for a whole document management system and that nobody minds their web browser locking up for 20 seconds while they load plug-in’s you won’t use.

7. Make actions obvious and reversible

I don’t want a dialog box with some sob story about why your app can’t do what I just asked or three paragraphs of text I have to scan for negatives, digest and mentally figure out what Yes and No will actually do.

Even worse is prompting a slightly different message with the same Yes and No options sending the user to the button they normally hit for a totally different message with potentially disastrous results.

If Yes is doing to delete the file label the button Delete. Dialogs in OS X do this and you can answer them lightning fast with accurate results.

Better yet just do it, put some text in the status bar, update the UI and learn how to write an undo mechanism.

8. Avoid restarts

If your application absolutely has to install a service start it yourself.

If common files you are installing might be in use, check them or better yet put them in your own application folder.

9. Make configurations count

Adding options to your application is only extra choice to a certain point, then it works in reverse as people can’t find the option they are looking for and become bewildered at the choices available before quickly heading to the close button instead.

If you absolutely must have extra options that only a small percentage of the population care about just store it in the configuration system and forget about giving it presence on the user interface.

10. Adhere to the platform

Read the user interface guidelines and only deviate when you know better than the expert team behind them. If you have to explain it then you didn’t know better after all.

If the operating system has conventions for files, configuration and help use them. Don’t claim being the same across platforms is more important – people who use more than one platform know and expect them to be different already.

If you want to use an update, notification or other commodity service find what is already popular and a good fit and use that, don’t develop something different.