Why having bugs is good for your project

July 1st, 2007

Time and time again i reach the same conclusion – having bugs is good (if not great) for your project. And before i start explaining the reasons why, you’re welcome to read Joshua Bloch talking about why we will all have them (even if you’re “the best” and not “the worst”):

We programmers need all the help we can get, and we should never assume otherwise. Careful design is great. Testing is great. Formal methods are great. Code reviews are great. Static analysis is great. But none of these things alone are sufficient to eliminate bugs: They will always be with us.

So, let’s start:

  1. It shows that you’re human. We all make mistakes, and it’s only human to deny that. But if you just make an extra effort to acknowledge this and listen to those who know better, you project will benefit greatly.
  2. It opens the dialog with your users. If you’re quick to fix it, you will have established a great relationship with the user that reported that bug. He will see that his time in reporting the bug was not spent in vain. The faster you do this, the better for you, your users and your project.
  3. There is no such thing as bad bug. You might not like the core APIs, but people are using them. Adding documentation might be annoying, but if your users get lost, they will blame you and choose some other library. And every once in a while you will learn a thing or two from your users.
  4. It shows that people are interested in your project. Not only that person downloaded and used your code, he also went an extra mile in writing you a mail and describing the problem. To ignore this is at least insulting to that person. The same applies to accepting bugs only through the project tracker. If people choose to write personal e-mail, respect that.
  5. Fixing a bug can (and will) establish professional relations with other developers. You might (and will) get preferential treatment when you find bugs in their libraries that you’re using. Your request to add new features might (and will) get preferential treatment as well. But don’t expect that people will recognize you when you go to the neighborhood grocery store.

I could go on and on, but you get the idea. And last, but not the least – i am proud to say that there hasn’t been a single piece of code that i ever wrote that didn’t (or doesn’t) have a bug. If anybody (including myself) tells you different, he’s a liar.