You've encountered a bug, but where does the responsibility for it lie? Software developers say that's a question that needs an answer for software quality to really improve.
During both our recent discussions about the need for bug-free software and the earlier topic of software maintenance programs, I've received a large number of thoughtful messages from software professionals. While very earnest in their desire to see the overall quality of software get better, they see a major stumbling block. How can we know for sure who ultimately bears the responsibility for a bug? How indeed can we be sure it even is a bug?
Take for example the problem of the bug that can't be reproduced. "Once or twice a year we receive a report from an anguished user that our software doesn't print properly," wrote one software developer. "What they know: All their other programs print fine. What we know: No one else with the same printer has ever reported a problem. We are unable to duplicate it. Whose bug is that? Ours? Printer vendor's? Windows? Are we going to investigate or fix it? For two users a year? No way. We offer to refund their money, it's cheaper. But you can bet those two people will holler like they were 200."
In a complex world, how can a software developer possibly avoid all bugs? "I don't want to sound like I'm beating a dead horse or anything, but a major problem with getting bug-free software is the multitudinous types of hardware out there," another reader wrote.
"Which motherboard with which chip set, with which graphics card, sound card, and hard drive controller, and which version and service pack of the OS, and on and on and on. With all those thousands of potential conflicts in a single box, how does a software developer make sure its software works? Is the developer community even able to figure out what standards they should be writing to remain compatible for future updates and competitor's software? [If not], one's bug fix is another's bug creation," the reader said.
Even those in businesses where software is tested thoroughly say bugs still happen. "I am a software developer in the process control industry and would like to feel that my software is adequately tested prior to release," wrote another reader. "The software developed is tested at four phases: by the development engineer, by an engineering technician, by a quality assurance engineer, and finally as a beta release. Even though there is a reasonably rigorous test procedure in place, on occasion software gets released with bugs in it. These tend to be bugs that only show themselves when the instruments are used in an unusual manner or in a manner that causes a succession of events to occur. To test for every possible usage of a system is an unfeasible goal."
Today's bug may not have been a bug when the software was designed. "A good share of our bugs come from users doing things that were hard to predict when we developed the software, and because those requesting the software had no way to accurately predict what they were going to need," wrote a developer in the telecommunications industry.
"We have to guess sometimes when we are pioneering things. It is somewhat hard to trap errors that were not thought of in advance and are rarely caught until the software is hammered on in the real world for a while. Using your car analogy, even the auto manufacturers can't stop drunk drivers from driving for example, or stop a user from running a red light and causing an accident. The only thing that they can do is try to protect the 'user' from killing himself when he does unpredictable things. The user can be controlled by limiting his options and offering 'bug-free software' which is also very limited in scope. This is not acceptable to the user, nor should it be," the developer added.
Maybe the old it's-not-a-bug-but-a-feature line is truer than we thought. "There are a number of factors that will continue, despite our best efforts, our acquaintance with buggy software," another software developer wrote. "Whether we legislate or otherwise adjudicate them into an illegality or not, the laws of man tend to pale in the face of the laws of nature. It might seem a simple thing to declare some program behavior as a bug. That notion can oft be quickly dashed by sitting in a committee judging a piece of software, or pretty much any other system. What's one man's bug is another man's feature, often enough."
OK, I think we can all agree that bugs can be hard or sometimes even impossible to pin down. But where does that leave us? A user may be wrong in thinking a particular bug is the fault of a particular developer, but the user still needs to start somewhere to find a solution. Buggy software would be much less of a problem if it didn't always (at least with the big software publishers) seem to go hand in hand with poor support, over-priced maintenance programs, and upgrades that just add new bugs to the old ones.
"I can accept the fact that some bugs will remain in commercial software, even if the company tries hard to eliminate them," one reader wrote. "What I can't accept is that a company can charge its customers extra support dollars to deal with those bugs and charge serious sums for bug fixes. In my view, it's the combination of buggy software and how the vendor deals with bugs that matters."
It's one thing to say it's not your fault, it's quite another to say you won't accept responsibility whether it's your fault or not. The latter is what too many software customers hear too often from too many software companies. So I reiterate: We may never actually see software that is truly bug-free, but that doesn't mean we shouldn't start demanding it.