rob was here.

Monday, December 01, 2008

spreading the disease.


I don't normally make many passing comments about technology or what I do for a living (using computers) on this blog. I make an effort of that. I will depart from my non-inforced rule this time. So only read on if you are a ubernerd, like me!

In my career, I've been spending a lot of time lately fixing bugs (or helping other developers fix them) in programming and configuration code of a product that our company sells. These bugs range from poor or over-complex solutions, to blind mistakes in imlementation, to non-robustness, to failed attempts at other bugfixes, to mistakes in code control merging, etcetera, etcetera, etcetera. Surprisingly, I don't think anybody, even the best developers, are really innocent of participation in preparing this poison soup. There are a lot of reasons for this, I think. It has a lot to do with the volume of code, a large body of dozens of architects, developers, programmers, installers, and rapidly changing demands for both features and stability. I am also very aware that this is not something unique to any particular company. Because bugs are such a wide and all-encompassing topic, it's hard to make ANY sort of generalization because someone is bound to call you on it. I'm going to make some anyways.

To the point. Here are some realistic things about software bugs which I have noticed over the course of my rather short stint as a professional software developer. Feel free to contrast against them.

1. There is no such thing as a bug.

Unless you have one customer (or none), you have bugs, not a single bug. In the real world software gets released to many, many people. A single bug is replicated the number of times it's released. A bug is many bugs, and exists until every instance of it is eliminated. This sounds obvious on the surface, but when you try to control the tracking the simutaneous instances of bugs in the field it becomes rather challenging. In fact, it can easily become enormously complicated. Especially if your customers use varied reversions and altered configurations, or are scattered across various branches, or have customized solutions. Don't get me started about upgrades.

Most people associate the cost of the bugfix with the hours it takes a developer to fix it, or how much of a painful impact it has on the end customer. Unfortunately, this is often how bugs are prioritized. What's much overlooked, I believe, is the replicated cost of people on front-line staff that investigate, re-investigate, and re-re-investigate the same issue (and might not realize it). Due to the rampant possibility of effecting the many, weighing down your support staff may often far outweigh the more traditional views of cost.

2. A bug that doesn't occur might as well not exist.

Controversy warning! If a bug lives in an area of functionality that nobody uses, does it make a sound? This is probably a controversial statement, especially if fire-breathing security advocates read this blog. Every now and then somebody discovers a "what-if" bug, that may or may not be reproducable, or in a piece of code that perhaps isn't really used. In actual production environments is almost* guaranteed not to occur.

Unless you have endless resources, nothing to do, or the supposed bug is severe enough to threaten some facet of corporate survival, then I really don't see a case for fixing these.

3. Bugs exist for a reason.

Bugs are really interesting in that they hold a certain value. Bugs in your product are wounds delivered to your softspots, from the enemy. Not only do they point out your obvious mistakes which are often code problems in your display or business logic layer that most any developer can fix, they will often hint towards architectural or model changes which would strengthen the overall system. They are often deeper suggestions that are just whispers, but you can hear them if you put your ear really, really close to the monitor.*

* Nothing is ever certain. Ever.

Comments:
* Nothing is ever certain. Ever.

You seem pretty confident in this, but I'm not so sure. Ever.
 
you should be sure!!*

*Don't ever be sure. Ever.
 
Post a Comment

Subscribe to Post Comments [Atom]





<< Home

Archives

February 2005 , March 2005 , April 2005 , May 2005 , June 2005 , July 2005 , August 2005 , September 2005 , October 2005 , November 2005 , December 2005 , January 2006 , February 2006 , March 2006 , April 2006 , May 2006 , June 2006 , July 2006 , August 2006 , September 2006 , October 2006 , November 2006 , December 2006 , January 2007 , February 2007 , March 2007 , April 2007 , May 2007 , June 2007 , July 2007 , August 2007 , September 2007 , October 2007 , November 2007 , December 2007 , January 2008 , February 2008 , March 2008 , May 2008 , September 2008 , October 2008 , November 2008 , December 2008 , January 2009 , April 2009 , September 2009 , November 2009 , June 2010 , August 2010 , November 2010 , June 2011 , July 2011 , November 2011 ,

Friends

jeremy, pender, phil, reido, furlong, ajay, earl, angus, nadeana, charles, classBlog
Powered by Blogger Get Firefox! Get Thunderbird!<  Use OpenOffice.org  Rob's Music Get Songbird