The sad state of today's software industry

Page Last Revised: Friday, April 28, 2006 01:24 PM


I have been a programmer, software developer, and computer systems consultant since the early 1960's. During that time, I have worked on a large variety of hardware configurations, operating systems, applications and programming languages.

In my day we wrote programs that met the customers expressed needs, were thoroughly tested prior to release, and were adequately supported. When a customer reported a problem, we worked with the customer to reproduce the problem, determine a mutually acceptable solution, and fix it. All this took place in a matter of days, if not hours, and the solution derived was provided free and unsolicited to all of our customers, not just the one reporting the problem.

We did not ignore the express needs of our customers, or try to dictate to them what they should and should not expect. We did not hire persons with no computer expertise, and no familiarity with the product, to provide "technical support". We did not foce the customer to fill out lengthy and meaningless forms, or to wait on the telephone for hours, just to report a problem that they had encountered, or to pose an inquiry. If a customer had a problem, there was a flaw in our product. If a customer had a question, there was a deficiency in our documentation. And we wanted to provide a solution as quickly as possible. We did not make artificial distinctions between "customer support", and "technical support". We delivered what we promised, and we promised what the customer requested.

Contrast this with today's "software giants", Microsoft, Symantec, Computer Associates, Seagate/Veritas, et al.

They provide an inadequately tested, inadequately documented, and bug-ridden product, which does not perform as advertised, and which wreaks havoc with one's computer system. They then have the audacity to charge huge fees for "technical support" hot-lines staffed by persons with no computer experience, no product familiarity, and instructions to (politelely) deny any and all product malfunction. Or they put the customer on hold for hours, while long-distance rates run up a huge telephone bill, only to eventually talk to someone who knows less about the product than the customer. Or the customer is required to navigate through page-after-page of inaccurately labeled web sites, only to fill out meaningless form-after-form, and perhaps eventually post a question or problem report which (if answered at all) will elicit a meaningless and totally unhelpful response from the same incompetents who staff the telephone lines.

There are two stock replies: 1) No one else has experienced the problem you are reporting, and 2) Your system must be incompatible". The only solutions ever proposed are to reinstall the software, or reboot "clean" and attempt to run the software stand-alone.

Their installation procedures (destructively) modify the system registry, configuration, and initialization files, with no warning or documentation of what they have done. They install files in a myriad of (undocumented) locations all over one's hard disk, and modify system settings without warning, causing other programs to malfunction. Their "technical support" personnel are either unaware of this, or unwilling to share the information with their customer base, making removing the program, and recovering from the damage it has caused, more difficult than living with it.

Product warranties are nothing but an advertising gimmick. "Technical support" is designed to stall the customer, and falsely encourage them, until any warranty period has expired. Addtionally, inflated shipping and handling charges, as well as unnecessary RMA requirements, are designed to discourage product returns.

There is no avenue for reporting program flaws, as "technical support" are trained only in denial and "pass-interference". Even when they are willing to pass the information on to "development" [note that there are no longer any programmers on the payroll], they are incapable of understanding the problem well enough to communicate it to a third party.

So, program bugs don't get fixed, and new ones get introduced with each untested product release. The computer media continues to publish favorable product reviews and "test reports" for their largest advertisers, with copy written by the vendors own PR staff. And the naive public continues to pay for this fecal material which masquerades as "software".

There is a saying, "The job's not complete until the paperwork is done". At one time this applied to software documentation, and a product was not released without complete and accurate documentation. Just as with programming and design flaws, any subsequently discovered errors or ambiguities in the documentation were immediately corrected, and the emendations distributed free-of-charge to the entire customer base. [Granted, some companies did assess a reasonable charge for this service, but this was offset by a substantially lower initial purchase price for the product.]

Because of the constantly changing nature of software, the standard design for documentation was a loose-leaf manual which could be easily kept up to date. Revisions were issued as a series of pages to be inserted, replaced, or deleted, and were accompanied by a complete and accurate summary of the changes, which a customer could quickly review.

With the advent of the personal computer and enhanced wordprocessing and ../graphics capabilities, many companies began printing attractively bound manuals with impressive ../graphics and fonts. However, these manuals were usually inaccurate and out-of-date before they were printed, much less by the time they reached the consumer. So, these same companies would add a confusing assortment of various separate addendum, "readme" files, and "knowledge base" articles, attempting to compensate for the inadequate and poorly organized documentation. Others would simply provide downloadable text files containing some form of documentation. And eventually, the printed manuals and text files were replaced with "PDF" format files on CD-ROM, which are often quite blurry and difficult to read, and are even more out-of-date and inaccurate then their predecessors.

Both formats (printed and electronic) suffer from the problem of being prepared by "technical writers" who lack sufficient familiarity with the product and standard terminology to document it properly, thus introducing errors in both detail and word usage.

Eventually, some software companies took it a step further. They've simply stopped providing any written or electronic documentation, except perhaps for a (sales) pamplet extolling the wonderous virtues and purported features of the software. This, of course, eliminates any complaints that the software does not perform as documented! However, most of these companies will be more than happy to sell you an overpriced printed manual --- which suffers from all of the errors and inadequacies discussed above.

An additional consideration in the electronic vs. printed manual debate: Although the electronic version is certainly easier to keep up to date (should a company desire to do so), the printed form is far more useful. One can read through it whilst "sitting on the throne", or traveling, or whiling away hours in the park. One can keep it conveniently at one's desk for reference while using the program, rather than attempting to flip-flop back and forth between the documentation and program windows. One can look up the appropriate procedure to restart a disabled computer, and one can read the installation instructions and caveats before installing the software to which those very instructions relate.

Why is it that something so obvious, and so logical, is totally ignored by the "software" industry today? Is it ignorance, arrogance, greed, or all of the above?

"But no program works perfectly on every PC"
Why should a program behave differently on various "pc-compatible" computers? Perhaps the hardware is defective? But that should cause problems across-the-board, with all applications, not just a select few. Perhaps the BIOS (which is a computer program in its own right) is defective? It often is, even when you buy a motherboard with a BIOS "made" by a reputable vendor, because they subcontract and license the product all over the world, and there is no guarantee that two identical (e.g.) "Award" BIOS' are in fact identical.

But the biggest problem is the use of "undocumented BIOS functions", which (since they are undocumented, and not in the BIOS specifications, and usually the result of programming ERRORS) cannot possibly be duplicated in another vendor's BIOS, and are unlikely to be duplicated even in another version of the same vendor's BIOS!

This is more likely to occur with programs marketed by the "Super-Corporations" like Symantec, since they have agreements with other super-corporations (like Intel) to exchange proprietary information, which smaller companies will not have access to. But, since it is "top-secret", it is unlikely to be documented internally either, and very few of the "development" staff will be aware of the feature that is being surreptitiously employed.

The same problem occurs with undocumented operating system "functions", which (again) may not appear in the next update of any particular Windows module.

This is the root cause of many software problems. Other reasons are poor programming, inadequate testing, and unachievable production schedules set by "results" oriented management.