Bug-Free Software?

I often read about buggy software and how vendors should be held accountable.  Usually it is from someone writing is USA Today or the Wall Street Journal probably quoting a lawyer or policitian who has never programmed a day in their life, but I also hear it when the Linux zealots blast Windows.

However what amazes me is when I hear it from developers themselves, such as this comment by Shannon J Hager on a recent post of mine.

While I can grudgingly forgive non-developers for being ignorant, I’m surprised when I hear developers complaining. I am not advocating we accept programs that exhibit bugs, far from it, but whenever I hear programmers complaining about bugs it is usually combined with intense emotion.  That confuses me as I would assume they would understand the nature of bugs.

As I see it, there are two primary reasons for bugs.  "Logic" bugs and what I’ll call "Assumption" bugs.  The logic bugs are the true bugs, and ideally would be uncovered with coverage and unit testing. Assumption bugs are where assumptions made by developers become invalid at runtime and the software fails which is viewed as a bug.  The problem is realistically you cannot program without making assumptions, so practically every piece of software has bugs.  I like to define the hunt to eradicate assumptions bugs as “The quest to prove there is NOT a needle in that haystack.“  But even logic bugs might not be so obscure they are not discovered in testing.

Developers of the software that is generally viewed as solid and stable have simply done a better job of handling exceptions for the assumptions that fail most often. Ones whose software is considered buggy have done a poorer job.

What’s my point?  I’m asking developers to acknowledge it is impossible to eliminate bugs, and stop emoting so strongly about bugs.  If a software vendor does a poor job of handling failed assumptions, make note of it, blog about it even, and then decide not to buy their software, but don’t morally condemn them. They didn’t put that bug in on purpose to make your life hell, and they would love it if they had caught the bug before the software was released. I’m sure of it.

So, I say let the first developer who has released software to his endusers without one single bug be the one to cast the first stone.

3 comments ↓

#1 Shannon J Hager on 04.05.04 at 12:49am

I don’t think we’re talking about "1 single bug" here, are we? We’re talking about a product that simply doesn’t work as advertised, if I remember correctly. I will leave my own experiences out of this except to say that I had never realized that "Catastrophic failure." was something VS would ever tell me.
Robert’s post makes it look like the component is useless. Yes, it was free, but isn’t it the same version that other people bought? Isn’t that the real issue? When is it okay to sell someone a component that does work? When is it okay to produce, package and ship a component that doesn’t work? "1 single bug" is not the same as a spell checker that "returns the input as the output" and "would always error out after all the words were checked".
I would chalk that up to "user error" if not for the fact that he checked the forums, saw it was a known issue, saw that ComponentOne apparently acknowledged the issue and had fixed the issue. So where does this become a moral issue? When a company says "yes, we gave you something that does not do what we promised, but we will gladly sell you a version that we promise will work."
I’ve worked for companies like that as a developer. I know it’s not fully the devs’ fault, but I know that excuses and refusal to correct the situation indicates a certain moral failing that I would steer clear of.

Please note that if the errors were actually user errors, then my rant above is totally incorrect. If the spell checker actually does work, someone please post that here and clear up the confusion.

#2 Mike Schinkel on 04.05.04 at 2:05am

>> I don’t think we’re talking about "1 single bug" here, are we?

My post was a general comment. Sorry that I referenced your post, but this was a topic I’ve wanted to blog about for a while, and yours was the one that triggered me to finally write.

Anyway, I personally have no idea how many bugs we are talking about. I would need specifics to address that. But the point is the same regardless.

>> We’re talking about a product that simply doesn’t work as advertised, if I remember correctly. I will leave my own experiences out of this except to say that I had never realized that "Catastrophic failure." was something VS would ever tell me.

Was this your regarding your experience with the demo, or Robert’s experience with the VB.NET Resource Kit?

>> Robert’s post makes it look like the component is useless. Yes, it was free, but isn’t it the same version that other people bought? Isn’t that the real issue? When is it okay to sell someone a component that does work? When is it okay to produce, package and ship a component that doesn’t work?

Not meaning to sound like Bill Clinton, but it depends on what your definition of "okay" is. :)
Seriously. So instead of saying it is okay, I’ll simply say that every component every shipped has bugs, some just haven’t yet been found, so I think whether it is okay or not is moot; it is reality.

>> "1 single bug" is not the same as a spell checker that "returns the input as the output" and "would always error out after all the words were checked".

You are using the approach "Guilty until proven innocent" because you only have one data point: Robert’s comments. Something tells me that Robert’s environment was different than their development and test environments, and in his machine one of their failed assumptions fired an exception. Evidently thet have since found and corrected the problem.

>> I would chalk that up to "user error" if not for the fact that he checked the forums, saw it was a known issue, saw that ComponentOne apparently acknowledged the issue and had fixed the issue.

Normally I would think the outrage would come if 1.) they didn’t acknowledge the problem, or 2.) they acknowledged but didn’t fix the problem. Right? Sounds to me like they did a decent job already. Instead the outrage came because the product that was free wasn’t upgraded for free. I do think it was poor judgment on ComponentOne’s part not to ensure everyone getting their free components becomes a raving fan, I think it is a bit harsh to take them to task for not fixing the free component. Had Robert said he thought they were foolish for not offering to fix it, I would have reacted very differently, but instead he “recommend avoiding ComponentOne” which I found to be unfair to ComponentOne for all the reasons I’ve given.

One thing to consider: other vendors sometimes offer good components for free in an hopes users will find them to be valuable. If this is how vendors are treated when offering free components, they may stop offering free components, bug free or not. Think about it.

>> So where does this become a moral issue? When a company says "yes, we gave you something that does not do what we promised, but we will gladly sell you a version that we promise will work."

Hmm. Turning this into a moral issue is a real hard sell for me. So if ComponentOne never gave away their software, it would be okay to charge for bug fixes? But since they gave it away, they are morally obligated to continue giving it away? Shannon: that just doesn’t sound reasonable to me.

Let me ask you this. Let’s say you offered to help someone write a program because you could do in an afternoon, even though you are (hypothetically?) normally a consultant who gets paid to write programs. Then they find lots of bugs in your app. Should you be morally required to fix them? Something tells me when the tables are turned you might view it very differently.

>> …a certain moral failing that I would steer clear of.

Revisiting the morality of this, what exactly is ComponentOne’s moral failing? They gave away software for free. Their paying customers are on subscription and understand that. ComponentOne fixed the bug once reported. Normal customers on subscription get the fix. People with the free software can get the fix if they pay for it otherwise not. Where’s the moral problem?

Now IF ComponentOne *planted* bugs in the free software to get developers to use it and then force them to upgrade, THEN I would be MORALLY OUTRAGED right along side of you and Robert. However, since ComponentOne provided the same version in the VB.NET Resource Kit they also sold to customers, I find that scenario highly unlikely.

One final thing: I hope you can see I strive to be as logical and objective as possible when making my arguments; anything else and I feel I’m being a hypocrite which I simply can’t abide.

#3 Robert W. McLaws on 04.16.04 at 1:12am

Mike, you’re missing the point entirely. It was not an error in my code. It was an error in the component. It was well documented in their support newsgroups that the flaw existed. This means the component was not tested before it was released. Subsequent builds also did not work. Why continue to take their side on the issue? Arguing that "all software has bugs" is a cop-out. You wouldn’t expect to buy a car that can’t drive, why would you buy a spell checker that can’t check spelling?

The bottom line is this: customer service is everything. I was fully in my right to recommend avoiding them, not because I didn’t get the fix for free, but because of the level of customer service I received. No one responded to my e-mail after I sent my response to their "solution". E-mails to their complaints address went unanswered. I waited two full weeks before my public redress. Nothing. Nada. Unacceptable. That’s two weeks of dev time wasted, plus 4 hours debugging a broken component.

So, lets bring the fact that it didn’t work back into the mix. You want me to pay for the component when you wasted 2+ weeks of my development time? That’s you’re the solution to the problem "we promise the one you buy will work?" If you think that this kind of mentality will fly when the component industry matures (which, after 10 years, still hasn’t yet) then you’ve got another thing coming. This might be acceptable for programmers in their 40s who enjoy having complicated lives because of code (you know, the ones who thing IDEs and Intellisense are for retards) but that won’t fly with people who want to focus their time and energy on building REAL solutions.

More commments to follow over on my .NET and corporate blogs.

Leave a Comment