Bad Software Hurts People

Dec 27, 2000 Jack Seay -

First, a letter I submitted today at my job:

What would you think of an airline company that considered it to be acceptable for faulty airplane design to cause dozens of passengers a day to be thrown out of airplanes and that never blamed the design of the plane? But if the same thing happened because of pilot error or intent, sharp recriminations would follow.

The defective design of our software forces us to lose dozens of customers a day, but that is considered acceptable, as long as we are rude to customers only because the software design forces us to be. If we lost a customer by calling them names or belching into the phone, that, of course, would be totally unacceptable.

About ten times a day, a phone call of mine ends with an angry, disgruntled customer who had to give all their personal information only to find that the items they wanted are on backorder for an indeterminate amount of time, discontinued, or require "customer service" to handle a special requirement. And they probably had the naive notion that every employee should serve the customer. Rude awakening.

When I do try to get out of the straight-jacket the software imposes on me by typing in fake info to get to the catalog, the customer is always happier, and almost always orders right then, if what they wanted is in stock. Of course this still takes longer to do than it would if the software was designed correctly to begin with; rather than having to type in all the fake info and then later go back to correct it. But these are the contortions we are forced to endure because of the bad software design.

I know it would not be difficult to correct the software because I used to own a software company. I was not a programmer, but I designed and tested software and know that to simply move the text to a different part of the script would not be a major project.

I hope this letter will cause the decision makers of this company to give some consideration to the anger and frustration that our lost customers communicate to me and the other CSR's (Customer Service Representatives) every day.

Whoever decides how the software is designed needs to sit next to a CSR for a day, with a headset on, and just watch, listen, ask for feedback, and take notes.


I speak not as a programmer, but as a user. All of the custom business software I have used has been frustrating. Some of it has only been infuriating periodically; some, all the time. Several years ago, I did inventory control for a large manufacturer. The software was the worst I had ever seen. I would not have been able to design something so difficult to use even if I had tried. It required memorizing numerous cryptic codes to switch between the modules. The president declared that the company would be saved by a new inventory program. Cost of upgrade: $1,000,000. He even passed out buttons proclaiming this software salvation with the words "Hallelujah, I'm Saved". We ran both programs in parallel for one year. Then the plug was pulled to let the old mainframe and it's horrible program die with dignity. The first week the new program ran solo, it generated an 1100 page printout of errors, one error per line. The manager of the information department walked around the factory for months trying to correct each line of the printout. This software was designed by the industry leader.

As an example of it's problems: Once, I needed to delete about two dozen obsolete locations of a single part number. I went to one of the terminals that allowed cut and paste to save time. It still took me over 2 hours of frantic keying. It should have taken no more than 2 minutes. Another time, while learning my way around the labyrinth, I requested a report. Several hours later, I was approached by a distraught manager. My simple request had started a huge print spool file of over 100,000 pages which had slowed the entire factory network down to half speed. I was ecstatic. I had found a bug in the software. It should have given a warning of the magnitude of my report. The manager was not amused. The software didn't need fixing. I needed fixing.

When the representatives of the software company visited our factory, I requested to be received into their most high presence to hear my supplications, but alas, I was too lowly. I was, after all, only a user, only a customer. This software company, by the way, had a reputation for being very attentive to customer requests.

Yesterday, I talked to an engineer still at that factory. He said the software problems were never fixed, and they are now converting to a manual inventory system.

I thought it couldn't be possible that there could exist software worse than this. Soon after, I worked in a small retail store. There were about seven different machines that processed all the types of cards, money orders, and items sold. After each eight hour shift, about one hour of overtime was required to key all this into the computer for each shift change. If you made even one tiny mistake, there was no way to go back and correct it. You had to go all the way to the end and start over, proceed to the mistake, correct it, and continue to the end again. That employee was unavailable to help customers waiting in line during that hour, no matter how long the line got. It cost the company over 1,000 overtime hours per year per store; all unnecessary because the information was already in the separate machines, but they couldn't communicate with each other. However, the worst part of it was the frustration caused to all the employees.

My current job has me gagged, so I can't get too specific, but I'll share some general concepts. We take phone orders for mail order catalogs. About half of the customers want to ask questions about shipping times and costs and whether products are in stock - before they are willing to give their names, addresses, phone numbers, and credit card information. But our software forces us to ask for all this first before it even allows us to look at the catalog or shipping details. If we insist on asking for all their personal details before we answer their questions, they become angry. So many times a day we frantically key in fake information, while the customer waits (and others wait on hold), until we can finally look up what they want. Then if they haven't hung up by now and do want to order ,we have to go back and delete the fake information and type in the correct information, often in a bizarre order the program forces us to follow. Often, after taking all their personal info and credit card number, we only find the item they wanted is out of stock or discontinued, or is special order and they must call another phone number to order it. This happened today while seven other people were on hold.

Rude software can force people to seem rude even when they are trying their hardest to be nice. Incompetent software can make intelligent people seem stupid and incompetent.

Sometimes it requires juggling four programs with contradictory function, alt, and control keys. It is incredibly easy to accidentally disconnect the phone line by hitting a particular alt function key with the wrong window activated. The wrong window automatically becomes active and must be changed by the operator. If not, the key combination to begin a new order is the same one that hangs up the phone. I accidentally hung up on two people today while trying to go through the complicated motions of starting a new order. There are numerous contradictory methods to enable a phone patch, requiring complicated combinations of function and alt keys. If the wrong key is pressed at the wrong time the customer is lost. The same key that answers the phone, also puts it on hold and takes it off hold. The same key that hangs up the phone is used twice during a phone patch. The key that completes a patch also disconnects the customer if you intended to get back to them but forgot to hold down the alt key. Many required keystrokes are not listed on the screen and must be memorized.

The computers often crash, thanks to bugs in the operating system (I don't need to tell you which one). Sometimes the entire network crashes for hours at a time, disconnecting all the phones, which are controlled by the software.

There is one annoying bug that I have nightmares about almost every night. It opens up a new order window for the previous call just as we are taking a new call. This happens dozens of times a day. All our calls are recorded, our computers use monitored, we are under constant observation and video monitoring. If we make a mistake, the software is never blamed, we are. How stupid of us! I understand the need for this surveillance where credit card numbers are handled, but it does add a little to the stress, and that stress is multiplied by software that forces us into unnatural contortions of mental gymnastics. Since we are being monitored, we must follow the script, even if it is ridiculous and rude, or risk losing our jobs. Losing dozens of customers is okay, as long as we follow the software's script. We also have about a 50% employee turnover per week. Of course, they are to blame for not being computer literate enough.

So what is the way out of this software from hell mess. There are many problems that need to be solved. First there needs to be the realization that human interaction between customers and those who serve customers does not follow the same path every time. The software must allow the user to access information when the customer and the one serving the customer need that information. There must be the avoidance of forcing them into wearing straight-jackets. The business must allow the customer to ask questions and get answers before giving their personal information required to complete the sale. Designers of software must be able to place themselves into the place of the user. This may be done by role-playing or by actually being a user. Even if you do make a sale by manipulation, gimmicks, and tricks; don't expect the customer to come back. They've been had, and they will resent it and tell their friends, perhaps hundreds of them via the Internet. Management should seek out the advice of the end users of software and make sure these users personally have many opportunities to voice their frustrations with the programmers. People who use software should not be required to be computer literate. Software should be people literate. There needs to be a constant feedback loop. This may require shaking up a corporation's hierarchy of isolation. Not all features requested need to be added. But the needs of the users and customers are paramount. If the software allowed adequately long comments to be attached to every single data field, this would allow noting the exceptions to rules and a place for user feedback. This is probably the single most needed capability needed for database applications.

Permission is granted to republish this article in it's entirety or link to.