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.

Annoying bug in Microsoft Access

I use MS Access from time to time, and for what it is, it is a pretty nice tool. However, there are a few things I’d really like to see added (subject of a future blog) and there are a few bugs that I run across from time to time that really frustrate. For example, I just ran across one of them.

Let’s say you have a simple table in a SQL Server database and you have an Access Data Project (an .ADP file) pointing to that database. Let’s say that table is called tblPeople and it has fields ID, Name, and Email. Further, let’s say we want to require the values in the Email field to be either 1.) NULL, or 2.) Unique. Of course you can’t set a constraint for it to be unique because then it has to be non-NULL. But, you can create a calculated field, let’s call it EmailKey that refers to the Email field if non-null, or refers to the int ID field converted to character when Email is null, i.e.:

ISNULL([Email],CONVERT(varchar,[ID]))

Then, create a UNIQUE index on EmailKey, and everything works great!

Great that is, except for when you try to add or edit a record from within Access and then you get this following error message "UPDATE failed because the following SET options have incorrect settings: ‘ARITHABORT’":

Microsoft Access Error Message: UPDATE failed because the following SET options have incorrect settings: 'ARITHABORT'

Arrggghhh!!! Perchance anyone know how to fix this, or it is just something I have to wait for MS to fix? (btw, this problem has existed for several versions of Access.)