Re: A Beautiful Editorial on Software Publishers (fwd)

Alex Portnoy (aportnoy@nospam.socs.uts.EDU.AU)
Tue, 18 Oct 1994 20:45:54 +1000

Hello.

I thought you guys may be interested in this Editorial about the quality
of software, and in particular, the upgrades which seem to be coming out
every so often for such software. Should software companies guarantee
the quality of their software releases?

-------------------------------------------

Subject: 0031 - Upgrades: a Scandal Waiting For Discovery (Editorial)

Many industries have been hit by major scandals because either a
scurrilous practice by some disreputable members came to light (The
Bakker and Swaggart incidents in the Televangelist Industry come to
mind), or because common practice in a particular industry is
disreputable when the general public sees it (Upton Sinclair's {The
Jungle} blowing the lid off the meat packing industry; Robert Redford's
movie "Quiz Show").

I have a suspicion that we are sitting on a powderkeg similar to the
latter example when it comes to the subject of bug fixes and upgrades of
software packages.

While there are upgrades which provide added functionality, I suspect
many upgrades are to fix errors and defects. And that is where the
scandal is brewing. Most people who buy software probably figure that
upgrades are for new functionality, not to repair defects for which the
manufacturer should have fixed for free under any reasonable standard
required for warranties.

In any other industry, if a manufacturer sells a product with defects in
it, the manufacturer is required to recall the product at their own
expense and fix the problem. In the software industry, defect repair is
called an upgrade and the _purchaser_ pays for it.

In a long article I once wrote on the subject of warranties - I will
probably reprint it here in a future issue; it has appeared in comp.risks
and is rather long at about 25K - I noted that as things stand, the
manufacturer of a computer program will neither guarantee that his people
know what they are doing, that the program will even work, or that the
program is written according to standard industry practices.

Every other engineering and commercial practice at least warrants one of
these things, e.g.:

- a doctor will not warrant he will cure you, but he does warrant that
his skills are in line with other members of the industry;

- a construction company will not warrant the skills of its employees,
but will warrant that they will build the structure according to
instructions and will use materials which are appropriate for the
intended use and it will not collapse under conditions of that use;

(I know this is an oversimplification but it will do for the purposes of
this editorial).

Software companies are attempting to warrant neither the skill of their
employees nor their ability to produce programs that will not crash under
the conditions proposed in their own manuals!

A recent upgrade to one of the top word processors - it was either
Microsoft Word or Word Perfect - was said to cut the number of bugs in
half, from 18,000 down to 9500!

Does anyone consider what would happen if GM, Chrysler or Ford tried to
release an automobile with even 900 known safety defects? If one of the
various consumer organizations didn't go after them, a government agency
would probably order them to issue a recall and fix the problem at their
own expense. But a large software company can release a product that has
ten times as many errors and all that happens is a big "ho hum" as people
pay for the upgrade.

One question that might be asked is: Why are we having this problem?
Books have been written over the whole issue of productivity of computer
programmers and how people write programs, but what it comes down to is
that we still have the same problems we had twenty years ago, only with a
single package being sold to 500,000 end users instead of 500 large sites
with trained technical people who know why there is a problem.

So the company shoves the crap out the door, then the accounting
department screams when they have to spend a fortune on the support people
to tell people how to use a program that has errors and defects in it that
should have been fixed before the product shipped.

It's probably part of the same conditions that occur in any market, that
as competition springs up, the price is forced down and the "frills" are
reduced or placed "a-la-carte" and cost more. It is one thing to call
specialized training in use of an application to be an extra cost item,
but the basic functionality and safety features of something should be
part and parcel of the product being sold, e.g. would someone buy a
toaster that had no guarantee that it wouldn't electrocute them? (I'm
not talking about the person who wants to use a toaster as a bath toy.)

The software companies complain about the people who buy a product then
want the seller to walk them through the instructions without opening the
manual. Or people that don't know enough to turn on the machine in order
to be able to install the software. I suspect this goes with the
territory; when the Model A/Model T came out, people had to learn not to
put their thumb around the crank handle due to the kick from the engine
when it is started. In a few years, people who have grown up with
computers on their desks all of the time they have been working and at
home will be common and this sort of condition will be minor.

Software can be produced that is a quality product and is reasonably
error free. But to do that requires a lot more effort and expense on the
part of the manufacturer, and most of them are seeing shrinking profit
margins as the days of selling products at list are gone forever.

But I think the focus on price is too short sighted. The experience with
other products indicates that people will pay more for higher quality,
and companies can make money by selling cheaper products that have fewer
features.

Ever looked at a word processor, a spreadsheet, or a programming language
lately?

Your typical word processor uses two meg of memory, takes up 10 meg of
disk space and has so many features that you can't possibly remember them
all. And the price is ridiculous if you aren't buying it for a company or
getting it via an upgrade. And that's on top of the bloated requirements
for Microsoft Windows, of which I could do a whole article on.

Programming Language Compilers are ridiculous. Turbo Pascal version 6
took 5 meg of disk space for the complete install. Version 1.5 for
Windows requires 15 meg. Visual Basic for Windows uses 5. CA-Realizer
(a competitor to Visual Basic) takes 10 Meg if you install it for OS/2,
takes 6 Meg if you install it for Windows, or 16 Meg if you do both. The
run time libraries for these programs are 300-800K.

And at that, now when something goes wrong, it could be in the memory
manager, in a device driver conflict, in MS-DOS, in Windows, in the
compiler or in the application. At each level of indirection it provides
a new place for someone to point a finger at someone else.

What needs to be done? Aye, there's the rub.

I can't expect the people running software companies to commit hari-kari;
they probably figure they have to keep making upgrades in order to stay
competitive with competitors, and they probably figure they have to keep
the pipeline filled at regular intervals or their revenue stream will dry
up. But there are alternatives that can be chosen.

Let's start by taking older, less functional programs which have had the
bugs worked out of them and remarket them for the home market. These
programs have fewer functions and are less complicated and thus easier to
use. Since they've already been paid for, they can be sold for less.
They also have more of the bugs identified. This would help reduce the
demands for assistance in using these monster applications that take as
much computing power as all the computers in Bosnia-Hercegovina, and eat
memory like they own semiconductor foundaries.

As it stands right now, every general application from a software
manufacturer looks like every other one. Where are the ones that "stand
out" either for their very good performance or very bad? Companies like
BMW and Mercedes sell very expensive, high quality automobiles. Perhaps
some companies should consider making more expensive programs with
quality and selling fewer of them, instead of mass marketing
steam-shovel quantities of junk with thousands of defects.

There have been well designed, good quality computer programs. To get
this capability means that the quality has to be designed in, it must be
supported by management and you have to expect to pay more for it. As it
stands, companies are charging too much for the software they are selling
now which doesn't have quality built into it.

I do not know how much of this is accurate reporting and how much is hype
of people that are either shills for them, or are reporting things based
on what they are told rather than what they know, but there is a
significant discussion over the development of computer programs by people
in third-world and developing countries, who cost about 1/10 to 1/20 of
programmers in industrial areas such as North America and the EU, and make
software with 1/100 or 1/1000 of the number of errors.

If much of this is true, these people will bury us unless we use our
brains to think up better ways to develop software which has considerably
fewer errors. We can't work harder; when someone is making 1/10 of what
you do, there's no way you can out produce them strictly on the basis of
time worked. What you have to do is work smarter.

I think one of the biggest problems we have is the failure to learn from
history. Most of the major problems in developing computer programs were
solved as much as twenty years ago, with the development of such concepts
as source libaries, copy book capability, and one of the best ideas I had
ever seen, the 'Make' feature to only recompile changed sources and to
rebuild applications automatically. There are other developments out
there including application prototyping and case tools, among other
features, but any of these things require new training and the tools are
often expensive.

What might be needed is for some company to develop software on a quality
basis and charge accordingly. The difference could be as small as
charging _list_ price for a package rather than 50% of list or less, as
many popular programs are now being charged. But quality has to be put
in, or bug fixes will have to occur later.

I have an American Express Gold Card because someone else in my family
with a better credit rating agreed to apply for it and add me as a
secondary cardholder. I don't like the fact that it costs me $75 for the
basic card and $35 for mine. I also don't particularly like the fact I
have to pay the bills when they come; I'd prefer one that allowed credits;
only problem is I don't have the credit resources to get one that does.

What I have found is that whenever I had a problem with either a purchase
on American Express or in a case with a fraudulent charge, they bent over
backwards to fix it. Call them and they will accept whatever information
is needed over the phone. I've never had a problem with the service.
Yes, they are expensive, but they provide excellent customer service.
Once I called them about a problem which would require invoking one of
their warranties. I couldn't use it because I couldn't find the
paperwork. A month later I got a notice from American Express advising
me that they had not received anything from me about filing a claim
against them. They were reminding me that a request that if accepted
would cost them money, had not been received by them! Talk about putting
customers first!

Twice I've had problems with Citibank's Choice Visa and once they stopped my
card because they had the wrong social security number of the basic
cardholder. Even after sending them a photocopy of the basic
cardholder's District of Columbia ID card (which contains their social
security number) they *still have the number wrong* and I walk on eggs if I
ever have to call them about a problem; I can't be certain they won't
freeze my card again.

Choice Visa isn't charging an annual fee. I can see why; their customer
service is about as good as that of a government agency. If I could find
another card to move my account to, I'd switch tomorrow and tell Choice
what to do with their lousy customer service.

And would you like to guess, of American Express or Citibank's Choice
Visa, which of these companies is most emulated by the average software
company's customer service department? Hint: It isn't something you'd
really care if you left home without it.

While bug fixes are commonly sold as "upgrades", I suspect that software
companies will probably not "get away" with selling products which have
defects in them and then charge the customer for repairs much longer.
Sooner or later we will have to clean up our act before the customers get
wise and demand it, or worse, force it on us via legislation.

Consider what it would do to the software industry if the "as is" claims
of software manufacturers were forbidden. Since they are selling
expensive new products, they could be required to provide some warranty,
such as fitness or merchantability. There isn't a software product on the
market today that the manufacturer could provide the same level of
warranty as Joe's Diner does on its ham & cheese sandwich, e.g. that the
product will not poison the customer and that they are liable for damages
if it does.

Part of the problem is in the complicated systems people are running out
in the "real world" but most of the problem is caused because the
applications are not designed for quality from the start. And instead of
trying to develop ways to reduce the complexity of the languages being
used to reduce the chance of error, we are seeing the use of even more
complicated languages such as C++ and object orientation, both of which
will probably increase the chance, number and severity of errors.

What can we do? Some of you will have suggestions, and those suggestions
will probably be better than mine, but I'll throw mine in first.

1. Try doing better research on what the customers _need_ rather than
what your competitors are doing. My guess is what the average customer
wants is an inexpensive word processor, spreadsheet and database that
would run on a 286 with 1 meg of memory and not have bugs in it, plus
be not too difficult to use.

What he ends up with is a program that requires a Pentium 66 with
32 meg of memory and is slower than Lotus 1-2-3 Version 1,
Word Perfect 4.1 or Dbase II, when these ran on an 8086. And let's
not forget that the program's help shows how to use all 3,500
keystroke combinations to invoke any of the 800 functions. Oh, and
don't forget to buy another 500 meg disk drive while you're at it.
No, on second thought, make it 1GB for each user.

2. Consider targeting the home market and small business with older
releases that have the bugs worked out, and aren't as powerful but
aren't as complicated. I don't want to have to fire up Corel Draw!
if all I want to do is draw a small image to put on the cover sheet
generated by my fax program.

3. Consider designing programs to have fewer features and design them
correctly to have what will work. Far too many programs are over
designed to add too many features. This causes the programs to be
rushed and often deadlines slip.

4. Consider spending the time and money to design the programs with
quality in the first place. If we continue to skimp on quality, it's
only a matter of time before India and other countries that are
developing a software industry bury the U.S. software industry the
way the Japanese buried the Steel Industry, the Germans buried the
intercity rail car industry, the Koreans buried the TV Set
manufacturers, and so on.

Building quality first means a consistent design, with meetable
delivery requirements. Far too often the applications being pushed
include "kitchen sink" proposals to do everything.

In software metrics it's been said that 20% of an application is the
part that executes 80% of the time. By implication it could be said
that the average user probably uses 20% of a package for 80% of his
needs. Designing a program to be all things to everyone is what is
causing programs to become impossible to use, and making them resource
hogs beyond anything imaginable.

5. Think twice before adding capabilities. You can say that you have to
add new features in order to keep up with your competitor's product.
But the question that should be asked is how much effort is going to
be put into the new development and is it worth it? Will the
additional features really be of interest to a majority of the people
who use the package, or is it just the Marketing Department playing
"keep up with the Joneses?"

6. From a user standpoint, the distasteful practice of shipping garbage
and making you pay for repairing their mistakes will continue as long
as you tolerate it. Consider asking what kind of warranty protection
will the manufacturer offer. If you are in a position to purchase
block copies of an application or a suite, you might want to consider
this.

Black and Decker can't sell a $20 hand vacuum, and General Electric
cannot sell a $40 toaster oven, without providing a minimum warranty
that the equipment isn't defective.

McDonald's can't get away with selling you an 89c bag of french fries
"as is" and make you assume liability for food poisoning.

A software manufacturer should not be able to sell a $200 per seat
software package "as is" and expect you to be liable for damages
caused due to their negligence or not even promise that the software
will work according to the description in their manual.

If we only look at costs and fail to consider value (including the
value of such features as well-written manuals and quality designed
applications that don't fail or crash) we will continue to get the
sort of junk and garbage that is being dumped upon us.

Perhaps what is needed is something akin to a quality standard, or
at least a minimum standard of performance, the way an electrical
equipment manufacturer can have his equipment certified by
Underwriter's Laboratories in the U.S. and is then allowed to place
the UL seal on their product to indicate the product's quality of
manufacture. (Canada has a CSA that does the same thing.)

Perhaps it is time that we consider having our own testing
laboratories which can check to see if products will work under
common conditions and thus provide better security to the end user
that the product will work as advertised. Your comments on this issue
are welcomed.

-----
Paul Robinson <PAUL@nospam.TDR.COM>

Please feel free to redistribute this
article widely. Guest Editorials are also welcome.

---------------------------------------------------