Warning, I'm about to rant here. I'm all worked up and I need to vent. The reason? The subject
of taking care of users who do not have the technical capacity to use a computer. In general,
software is intended to take a complicated task and make it as simple to perform for the user
as possible. I try to do that with my software. In fact, I like to think that there is
an unwritten contract between software developers like myself and computer software users. Here
are some of the items I imagine on that contract.
 The developer will not unnecessarily burden the user with confirmation dialogs.
Everyone has seen these, and largely ignores them after seeing them once. These are the
"Are you sure?" dialogs that you get whenever you try to logout, close an application, overwrite
a document, or do any other task that might have "destructive" consequences. Too often software
over-uses these boxes to the point of user frustration. Some software even goes to the extent
to doubt your judgement twice. In my opinion, if the user's judgement was fouled after the first
warning, it's not going to be any better after the second warning.
 Users will read the message boxes that developers display.
I'm constantly astounded by the number of times a user will run into a message box and rather than
actually read the message (which usually contains instructions on how to solve the issue) will
immediately run to the nearest "computer guy/gal" they know to ask for help. Messages like
"Are you sure you want to overwrite this file?". This isn't a hard decision. Either yes
you do or no you don't. Or how about the message "Your printer is out of paper". I'm begging
all of you users out there: please, please read the text on the screen. You may think you have
seen it all before, or that it is over your head, or that you don't have to read it. You would
be surprised at how many times a developer has gone to great length to provide instructions,
warnings, and information in that text that is actually useful. READ IT!!!
 Tasks that are simple without software cannot be made more simple with software.
This is aimed both at users and developers. If there is something that can be done easily without
a computer, don't look to a computer to make that task easier. A prime example of this can be found
in regard to televisions and television remotes. A very easy task to perform with your television
is to turn it on. Normally, there is a large button on the front of the set marked power. You
touch the button, the TV comes on. Touch it again, the TV goes off. A remote is software to help
you with this task. The idea is, make it easier to turn on your television. Now, you don't even
have to get out of your chair to hit that big button. But wait, what if we made remotes that worked
with more than just one television. What if they could work with your television AND your DVD player.
That would be wonderful, as it would make the task of hitting the big button on the front of the TV
and on the front of the DVD player easier. Right? Wrong!!! Now you have a universal remote with
multiple modes. You now must hit four buttons to get all of that equipment to turn on (usually
TV, then Power, then DVD, then Power again). Sure, my butt doesn't have to get out of the chair,
but now what happens if I start pressing buttons in the wrong mode? One time our dog stepped
on our universal remote and we couldn't get sound out of the TV for three hours. Software is just
an enormous universal remote for your computer. It can make doing some things convenient, but don't
try making things that are already easy any easier. You'll just foul things up. Users: don't ask
developers to make it easier either. Just be happy you know how to do what you want now.
 Users will know where they have saved/downloaded files.
This is a case where doing something simple has been made more simple, with devastating consequences.
Your file system is where you save files. Documents, spreadsheets, stuff you download... it all
gets saved somewhere on your file system. It used to be that every time you wanted to save something
you would need to create a folder for it and remember where you saved it. Now, this task has
been made easier by programs that "remember" where you saved things for you. Trouble is, what
if you want to do something with that file, but with a different piece of software. Gosh, I
don't know where it's saved. It could be anywhere! I just want to scream at people when they
ask for help with a file, and they can't answer the simple question of "where did you save it?"
 Developers will not encourage non-technical users to do technical things.
Think about your family for a second. There is probably at least one person in your family that
believes the computer is the solution to every problem. Not only that, but they encourage
everyone else in the family see things that way too. When they come to your house they
install bizarre add-ons and utilities on your computer, and leave you scratching your head
as to what that flashing icon is in the system tray. If you don't know anyone like that, you
probably are that person. If you are a technical person, enjoy the fact that you can get a
lot of utility out of your PC. But please, please don't put the rest of the people around you
through the torture of trying to learn this stuff. The vast majority of people in this world
are averse to change, and you are just stressing them out by trying to show them how to do
something they already know how to do. I know I'm personally guilty of this one. Everyone in
my family knows how to use a phone. You just pick up the handle and punch in the number to the
person you want to call. What do I do? I try to get everyone to use online instant messaging
and voice calls on the internet. Bad, bad, BAD! [slaps wrist]
 Users will have a clear idea of what they want to do before they start to do it.
This means, be prepared for questions pertaining to your task, and answer them.
Too often someone will have a vague idea of what they want to do, and get six or seven steps
deep into the process before they realize, "Oh My Gosh, this is not what I want!". Say like
when a user decides they want to format a word document, but starts the process to format the
hard drive. Hmmm... I guess my document is on the C: drive... AAAACKK!
These are just the items that came immediately to mind. I'm sure there are more. Are you a developer?
Do you have an idea for an addition to the list? Leave a comment and maybe I'll append it.
Are you a user? Fed up with something about your PC or software? Leave a comment with your
addition to the contract. I'd love to hear it.