Thursday Dec 11, 2008

In defence of the bug

Lately I've heard from many blog posts and current and former colleagues on this thing we call a "bug". Frankly, I'm not the greatest giant fan of insects but to name a whole plethora of issues after an entire order of the animal kingdom, seems to be a bit harsh. I mean in some parts of the world, bugs are a delicacy. But yes, back to software bugs.

In this day and age, it's almost impossible to find a piece of software without a bug. I encounter a software bug every hour of every waking day and chances are you do to. Now admittedly some bugs are more serious than others, some are hilarious. Game bugs which do weird things and make you laugh for instance, are common and sometimes fun, if distracting.

Wired magazine has a history of what they call the most serious bugs in history, some of which have caused deaths.

Now, I'm not defending the practice of writing buggy code. Far from it. However, let's define buggy code?

echo "Hello World!";

The above is not buggy code right? What if I released that same code in a country which spells "Hello" as "Hallo". Then theoretically I have created a piece of buggy code in the eyes of some people. And this is where we get into trouble: not all bugs affect people the same way, nor are all bugs considered a bug always.

A software "bug" is "an error, flaw, mistake, failure, fault or “undocumented feature” in a computer program that prevents it from behaving as intended" to quote Wikipedia. It is technically a "glitch". It is the same as your brain confusing two memories, it is the same as you mistaking where you last put your car keys. The reality is, how can you possibly trust someone to write perfect non-faulty code when most of us forget where we put our car keys from time to time. Software bugs are typically human caused because we ourselves are imperfect.

But naturally, some bugs are worse than others, and due to my passionate and genocidal hatred: I will call such bugs "cockroaches".

What we as consumers and software developers need to do is to evaluate and test software with as much personal criteria as possible. It is impossible in this day and age to produce software which is 100% bug free, or even to utter the phrase "zero known fatal bugs". Because the truth is that that attitude is naive at best and dangerous at worst.

To say the phrase "zero known fatal bugs" is to give the false impression to anyone that you have produced "perfect" software when the reality is that given a secondary "ant-like" glitch in a related but separate system combined with a benign "bumblebee-like" glitch in yours may spawn a giant malevolent cockroach in a hospital system which causes death. If I ever heard a piece of software or a software company claim "zero known fatal bugs" I would call them irresponsible because they are falling to marketing and misleading hype and potentially their own hubris.

Bugs are here to stay until we create a computer which logically thinks in a manner that can create software which is bug free, at which point I am afraid that the human species might as well be doomed because truly we would be useless.

What you as the consumer need to do with \*any\* piece of software is to test, read and understand what it is you are about to run when you have control over it. I'm sorry to say I don't generally have control over my operating systems and that annoys the crap out of me. However, I do have control over what MySQL version I run, what PHP version I code with, what version of my IDE to use. When I update software, I read the known bugs, I test my application and I see if one of the documented bugs does indeed catch me out. Or worse, whether one of the undocumented, heretofore unknown cockroaches floats through my application space.

Frankly, do not live in the ignorant and naive world of a piece of software with no bugs, do not live in the world where you decide not use a piece of software simply because it might have a bug (which may or may not affect you). If you did that then I suggest, next time you "forget" your car keys to rip out your brain (uninstall) or go in for some neurosurgery (patch it). By refusing to try a piece of software because you \*think\* it might not work before even trying, you may in fact lose out an amazing chance to make your life, your five minutes, the world or the universe a better place.

In defence of the bug? The bug shows our humanity. When we all think alike, look alike, share the same language, then I would think we would lose all bugs. A truly boring place if you ask me. Like the story of Spencer Silver, the inventor who by accident (ie. a "bug" or "glitch") discovered the glue used for post-it notes, bugs are important and here to stay.

This is the blog of Dups... currently I'm one of MySQL's Community Relations Managers for Sun Microsystems, post, contact me, I want to hear from you!


« July 2016