jump to navigation

What is a bug? 04/02/2010

Posted by TBoehm30 in Software.
Tags: , , , ,

What is a bug? Of course, I am talking about a software bug, and not the 6 legged variety. To me a bug is any quirk of the program that I find should and could be done better. That puts the entire definition in my hands. I am the one that gets to define what is and isn’t a bug. As the user, I get a say in how I think the program should work.

I don’t always get my way. Recently, I got into an argument over some software that wasn’t performing according to my needs. The problem was minor, the workaround was easy, and the reason for its existence was obvious. That doesn’t change the fact that this was a bug (see the definition above). The software vendor took offense at my criticism and explained that it was not a bug and that the underlying code is, in fact, written correctly.

Wikipedia defines a bug as:

A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways.

By this definition I have to admit that he was right. Their system was designed by the software company to meet their requirements. Since he insists that the result meets their requirements, then there is no error, flaw, mistake, failure or fault.

So who is right?
This argument goes on all the time. Users often incorrectly think that something is a bug in all kinds of situations:
It is their own fault (PEBKAC).
They haven’t read the manual and therefore don’t understand the software.
They want the software to run better, and suggest an improvement.
They need new functionality in addition to what they’ve got.
They don’t like the output of the system, but they don’t have a way to change it.
The system isn’t as intuitive as it could or should be.
(Yes, some of these overlap; No it is not a complete list. Feel free to add to it in the comments; I’ll add them later if they are good enough.)

The software vendor can reply to almost any “bug” report that it fits into one of the above categories. Unless the bug is something obvious like “the computer crashes when I enter a 10 digit number in the text box prompting me for a phone number”; the vendor can come back to deny that it is a bug.

If the vendor actually does call something a “bug”, then they will be forced to fix it. If they can deny that is a bug then the cost of a fix can be avoided or at least delayed. Vendors have several choices in arguing against calling something a “bug”. They can say that it is not reproducible, so it must have been the computer. They need more information because they can’t reproduce in on their own systems.

My favorite is the SWAD excuse – System Works As Designed. This means that what I am seeing, not liking, and getting frustrated with, is not actually a bug. It means that the software programmers deliberately set out to annoy me. It means that they don’t really care that a simple peon like me has an opinion about their gigantic company. They don’t believe that I could have an inkling of an idea about how hard it is to write enterprise software; how difficult it is to please everybody.

The problem is that I do have a technical background. I do have an idea how hard it is to write large software programs. I do know the difference between a bug, a design flaw, a feature request, and a user problem. I’ve been on both sides of this argument. I’ve been the one who explained that the system works as designed because I designed it. I’ve been the one that denied the bug until it was reproduced in front of my face. I’ve tested software to report bugs. I’ve also used plenty of good and bad software.

If a user was asking for their accounting software to automatically search the internet for recipes, that would be a new feature. It is completely understandable for software vendors to reject those ideas as being too big a project to take on, and too costly an investment.

However, if the software allows the user to re-order the dropdown lists in the system, but ignores the text for some of those lists, that is a bug. Why is it up to the user to know that he shouldn’t use the re-ordering functionality on some lists? The software should either prevent the user from making the change, or allow the change and evaluate the choice in the dropdown correctly and dynamically. The latter suggestion would be my preference. It would make the software more intuitive, easier to customize, and better for everyone.

Reading this, you might get the impression that I recently found a bug in some software, but was rejected by the vendor. I like my software to be usable, intuitive, consistent, and complete. Most of the time software we use works well. Sometimes we have issues with it; and sometimes we report our issues.

All I really want is to be acknowledged. I want the vendor to either explain to me how I can accomplish what I am trying to do with a workaround, or agree to put this bug on a list that will eventually be fixed. I have no illusion that my little problem will ever be important enough to be completed. I don’t expect immediate results. All I want is for the people I am working with to recognize that a bug is defined by the user, and work to resolve the issue, not ignore it. How about you?