In order to write a program, you must not only know how to create code, but you must also know how your program is going to be used. Over the year's I've made a study of users and how they react to their programs.
One user reaction really annoys me. I hate it when people say, "Our computer won't let me do that." I reaction is, "Ok. We know that in this organization the computer out ranks you. Let's start working our way up the command chain and see if we can find someone who out ranks the computer."
The attitude that things can't be changed or can't be done because of the computer really annoys me. Sometimes people get around the computer in interesting ways.
For example a school teacher was taking a group of about 50 students on a outing. They decided to take lunch at a local restaurant. To avoid arguments over money, the teacher insisted that everybody ask for separate checks.
When the got to the restaurant, the head waiter told them, "I'm sorry, but our computer only allows us to write one check per table."
The teacher took this in stride and announced to the class, "All right everybody, only one person per table."
The head waiter upon seeing his restaurant filled with tables containing only one person decided that he could give the students separate checks. He was a little ticked off because he had use his "backup" method of handing checks, he had to add them up by hand.
Another time two friends went out to have lunch at a five star restaurant. She had a gift certificate for $20.00. However her meal cost more than that so she decided she was going to pay the difference in cash. He wanted to pay for his meal in cash.
So when the waiter gave them the check, they gave him a gift certificate, cash and a credit card. The waiter took it into the back and returned a few minutes later. "I'm sorry I can't take this," he said, "Our computer will accept only one form of payment."
The man was more than a little annoyed by this. "This is a five star restaurant," he said. "I expect five star service. Take it back and don't bother me about your clerical problems."
Errors can be funny. One fellow received a bill for "0.00." He send a nice letter to the company telling them how ridiculous this was and they promised to fix it. Next month he got a bill, past due, for "0.00." He tried all sorts of things to get the company to remove this bill. He tried letters, he tried phone calls, he tried everything. Each time they would faithfully promise to take care of it and each month he would get another bill for "0.00." He even defaulted on it and had a 10% penalty added on, bringing the total up to "0.00."
Finally he got fed up and wrote them a check for "0.00." The bills stopped.
Computer problems can not only be annoying, but sometimes they can painful as well. I can personally attest to that.
I have a medical problems that requires minor surgery to correct. Before I can get the surgery done, I needed to have a CAT scan done. Normally it takes about two days to get a CAT scan scheduled. It took me three weeks. Seems that the hospital was upgrading it's computer system and couldn't schedule anyone until they got the new system working.
I guess no one was supposed to get sick while the computer was down.
There is an attitude running through all the stories that I detest. It is "If the computer won't let us do it, then it can't be done."
I like it when people actually think and come up with ways of getting around the computer.
One company which does this well has a person with the unofficial title of "Un-Goofer." His official title is more impressive sounding, something like, "Senior Accounts Adjustment Officer," but everyone calls him the "Un-Goofer." His job is correct any goofs the computer makes.
McHenries Auto Repair in San Diego also came up with a novel way of getting around the limitations of the computer. Their billing computer had no section for "notes". That didn't stop them from putting one in however.
I got a bill from them and under the "Parts" section it listed a part named "Called customer with new estimate", price: "$250.00" quantity: "0", extended price "0".
I asked them about this and they said, "We called you with a new estimate and wanted to note it in the bill. Since we put in quantity 0, it doesn't add anything to you bill, but we do have a record of it." So it turns out they did find a way of putting in a note after all.
As computer programmers we have a responsibility to make sure that we run the computers instead of the computers running us.
This means designing a program so that the user can use it in all sorts of situations. Many times we write a program based on our model of what the user will do. Frequently this is wrong. From time to time surprising things do come up. After all, how often do does someone try to pay for a meal using three different forms of payment?
But there are some things even the best programmer can't anticipate. You can say, "Expect the unexpected," but if you expect something then it's not unexpected. But you can program for the unexpected by putting code in your programs to allow the user to handle the unexpected. In other words, there would be a field in the data saying, "Enter here anything that the programmer forgot include in the original program."
Finally errors do occur. Programs need to be flexible enough so that someone can go in there and correct them. Good programs should always make sure they can work with the "Un-Goofer."