Public Nuisance

Random commentary and senseless acts of blogging.

The first Republican president once said, "While the people retain their virtue and their vigilance, no administration by any extreme of wickedness or folly can seriously injure the government in the short space of four years." If Mr. Lincoln could see what's happened in these last three-and-a-half years, he might hedge a little on that statement.
-Ronald Reagan

Left Bloggers
Blog critics

Gryffindor House
Roger Ailes
Angry Bear
Biscuit Report
Body and Soul
Daily Kos
Kevin Drum
Glenn Greenwald
Group Think Central
Inappropriate Response
Mark Kleiman
Lean Left
Nathan Newman
Off the Kuff
Prometheus Speaks
Rittenhouse Review
Max Sawicky
Scoobie Davis
Seeing the Forest
Sully Watch
Talking Dog
Talking Points
TPM Cafe
Through the Looking Glass
Washington Monthly
WTF Is It Now?
Matt Yglesias

Slytherin House
Indepundit/Lt Smash
Damian Penny
Natalie Solent
Andrew Sullivan
Eve Tushnet

Ravenclaw House
Michael Berube
Juan Cole
Crooked Timber
Brad Delong
Donkey Rising
Dan Drezner
Amy Sullivan
Volokh Conspiracy
War and Piece
Winds of Change

House Elves
Tom Burka
Al Franken
Happy Fun Pundit
Mad Kane
Neal Pollack
Poor Man
Silflay Hraka
SK Bubba

Beth Jacob
Kesher Talk
Meryl Yourish

Prisoners of Azkaban
Ted Barlow
Beyond Corporate
William Burton
Cooped Up
Cogent Provacateur
Letter From Gotham
Likely Story
Mind Over What Matters
Not Geniuses
Brian O'Connell
Rants in Our Pants
Ann Salisbury
Thomas Spencer
To the Barricades

A & L Daily
Campaign Desk
Daily Howler
Op Clambake
Media Matters

This page is powered by Blogger. Isn't yours?

Party Animals:
Clark Community
From The Roots(DSCC)
Kicking Ass (DNC)
Stakeholder (DCCC)

Not a Fish
Ribbity Blog
Tal G

Baghdad Burning
Salam Pax

<< List
Jewish Bloggers
Join >>

Thursday, October 23, 2003
Secrets of Software

It's well known among those familiar with the industry that few commercial products are less reliable than complex software packages, or complex products using both hardware and software components. Almost all are shipped defective, with bugs, known or unknown, included - the first day they are installed, they fail in some way to work properly. There are a lot of reasons for this. The packages contain numerous components which interact in complex ways. In a typical installation with large numbers of stations connected over a local network, the interactions are even more complex. Fixing problems is difficult and expensive, and companies are constantly under pressure to add new features rather than go back and repair problems in old ones. Finding problems is also quite difficult; and it is costly. It requires adding numerous testers who make no direct contribution to revenue; in fact, they can easily be seen as hurting it, since it is generally true that the better testing and quality control are, the harder it is to get new products out the door. And those whose job it is to test products have little or no direct contact with end users, so don't know what is actually being done with the product in the field. It is axiomatic and true that no matter how hard you work to make a product idiot proof, there will always be bigger and better idiots to defeat your efforts. I have worked in four companies, and can say that none had really good testing procedures.

It's often quite hard to even say whether your company is responsible for a problem. If a problem seems unfixable, it can be easier, and sometimes even true, to say that your product is fine, but there is a bug in the network, or the database back end, or the desktop PC. This is especially true if you're using Windows, as most systems do; Microsoft is a de facto monopoly and the quality problems inherent to the software industry combined with those inherent to monopolies makes for an ugly combination. (This can lead to nightmares for the end users, who when calling for technical support on a bug can simply find themselves shuttled between the support departments of various vendors, with each saying their product is just fine and the bug is some other vendor's fault.)

While coders try to fix problems with the old systems, marketing and sales are looking for new releases with new features. Salesmen and often managers have a poor understanding of what is feasible, and can make unwise promises to clients that programmers are then expected to live up to. Over years, all sorts of features never envisioned in the original design are added on. The resulting code can be astoundingly ugly; often a single program will incorporate over 200 changes large and small made at various times by dozens of programmers of varying levels of ability, some of them certainly very poor. Strange hacks are slipped in for some reason that somebody once understood, but today nobody knows why they are there. Ancient comments are left floating about, perhaps referring to code that was deleted years ago, but some programmers know no better than to make decisions based on them. Work on these baroque and obscure programs is, in the vast majority of companies, dumped on the most junior employees, while the comparably much easier task of writing new programs goes to the most senior.

All this was especially true during the years when programming jobs were easy to find and talent was scarce. Huge numbers of people who had no real gift for the subject took college courses because they heard it was a lucrative field. Due to the labor market, most found jobs and often kept them, good or no. Even if this is less true today, the bad code they wrote lives on. And of course, companies will always be tempted to hire the cheapest programmers and testers rather than the best.

When users finally start running the product, it gets worse. They usually need to learn how to use it from the manual, and manuals have their own set of problems. For a detailed explanation of why user manuals are almost always bad, along with many other things, see the famous and brilliant novel, 'Zen and the Art of Motorcycle Maintenance', by Robert Pirsig, who wrote those manuals for a living while he was working on his book.

If you have any doubts as to the quality problems of the industry, just read closely the disclaimer on almost any software product you purchase. They generally require you to accept that the product is not guaranteed to work properly for any purpose, at any time, under any conditions; furthermore, in addition to malfunctioning itself, it may also damage your computer and cause other programs to malfunction. Users are normally required to waive damages or compensation of any kind, even if they use the product exactly as recommended.

So as a veteran of the software industry, reading the following didn't especially startle me. I've seen it all before, if not quite this bad.

For the past three years I have worked for Spectrum then Global. Over that time I have become increasingly concerned about the apparent lack of concern over the practice of writing contracts to provide products and services which do not exist and then attempting to build these items on an unreasonable timetable with no written plan, little to no time for testing, and minimal resources. It also seems to be an accepted practice to exaggerate our progress and functionality to our customers and ourselves then make excuses at delivery time when these products and services do not meet expectations. The pressure to meet these deadlines and deal with repeated calls from sales staff and customers trying to ascertain actual progress versus exaggerated reports has become intolerable. The resulting stress has had a very negative effect on me both mentally and physically.

As internal politics and mismanagement continue to divert attention and resources away from these issues, the problems become further and further entrenched. ...

-B. Clubb

It does not matter whether we get anything certified or not, if we can't even get the foundation of Global stable. This company is a mess! We should stop development on all new, and old products and concentrate on making them stable instead of showing vaporware. Selling a new account will only load more crap on an already over burdened entity....

Every time I look at the support list there is another sales person or manager screaming we can't go forward without having to fix this or to fix that. You are taxing the development team beyond what they can handle. This is not there problem, it is yours....

I have never been at any other company that has been so miss managed. I see blame being put on anything that moves. Communication does not exist! All I here from upper management is “That’s fine, he or she will be removed”. Upper management seems to think they know what is going on. They are to caught up in to much politics, and to much self importance, to even realize that there are employees watching them, waiting for some direction... We have allot of bright people in Global, why is it so hard to get things right....

I just received a call from Ingrid, she says she is tired of getting calls from clients asking for help. No one at Global is giving them the time of day. Ingrid is the only name I will use in this conversation. I have had calls from other ex-employees stating the same thing.

We have a management team that is so redundant, it is pathetic, and yet we don't have enough employees to get the work done. Wake up! We keep loosing good people, and yet management does not see this...

My views are my views only. If you wish to fire me for speaking the truth, bring it on... or fix this crap. The employees of this company are watching, waiting to see if you are the leaders that will keep them going, or the pathetic fools that will drive this company into the ground. ...

-M. Brown

The above comes from the famous cache of internal e-mails concerning touch voting systems that Diebold is attempting to suppress. (They think they can successfully suppress something that has already appeared on the WWW? Right there you know these guys don't understand their business.)

I don't necessarily believe that Diebold is playing dirty with the vote counting, although that is a legitimate concern. The point is, it doesn't matter, not even a little. The problem is that these systems leave no evidence whatsoever external to the machine of how many votes have been cast or for which candidate. Errors that occur are uncatchable and often undetectable. One Florida county in 2000 showed -16000 votes for Gore. That was obviously preposterous and at least led to the number being questioned, although it seems unclear whether the correct count was ever determined or properly awarded to Gore. But a more subtle error, although it might wipe out thousands of votes, could simply be invisible, even in a recount. Systems like these just aren't robust and reliable enough to use for something as critical to society as counting votes, not unless there is a paper trail to show what really happened. Forget intentional sabotage; even if you knew organized cheating wasn't going on, just plain screw ups are more than sufficient reason to demand that systems like this be banned.