Note: The following tale is adapted from my book, Rethinking Systems Analysis and Design. What's the moral of this tale? After you make your own suggestions, take a look at the original tale and see what the book has to say.
Harlan Mills predicted that some day programmers will make so few errors that they'll remember every one they ever made in their entire career. I've had a long career and I've made rather more than the one error per year that Harlan predicted. One a day might be more like it. But some errors were so gross or so costly that they stand out among the thousands.
Over forty years ago, I was analyst/programmer for a service bureau studying a job that involved processing a million cards through the IBM 650 computer. Because of limitations on the 650's ability to read cards, the only punches allowed in the cards were alphabetics and numerics. Special characters could not be read at all.
When questioning the client in our very first meeting,I asked, "Are there any spetial characters in the cards?"
"No," he replied, "none whatsoever."
"Good," I said, "but I have to be sure. Are you certain that there are no special characters at all?"
"I'm quite certain. I know the data very well, and there are no special characters."
On that assurance, we went ahead with designing and programming the application, only to discover on our first production run that the system was hanging up on cards like this:
THREADED BOLT—1/2" #7
About sixty-five percent of the cards contained special characters, but when I confronted the client with this figure, he appeared genuinely puzzled, "But there are no special characters," he pleaded.
"Oh, no," I said triumphantly, "then what about this dash, slash, quote, and number .sign?"