No More Bugs

During an email conversation last week, I suggested that my client change his naming of “bug” to “defect.” He asked why.

People don’t create bugs, but people create defects (or problems or faults). Bugs crawl in or fly in from the outside, when you’re not expecting them to. But we expect defects and problem in software. We can take actions (test-driven development, pairing, peer reviews, inspections, and more) to reduce the number of defects in our code, but those actions are very different than preventing bugs from flying into the house (putting on screens, closing doors). And, if we’re outside our houses, we can’t take similar actions to reduce the total bug population.

It’s possible that the last real bug was the first one, the moth caught in the hardware. Maybe there were more physical bugs that caused hardware to short out. But no longer. We rarely, if ever, have physical bugs to worry about.

But we have plenty of defects. I am convinced one of the reasons we have so many defects is that we call them bugs. When we call problems bugs, we avoid taking responsibility for the problems (defects or faults) that we have caused. The bugs didn’t just fly in and land on the hard drive. As the developers create the code, they also create the defects.

The first step in solving problems is to acknowledge that you have them. If you want to deal with the defect problem, stop calling those problems bugs. Bugs may be an acceptable name, but it’s not a helpful name. Call the problems defects or problems or faults — something that will help people realize they need to examine why it’s acceptable to allow defects into the code.

Call a spade a spade. And call those problems defects. They’re not bugs; they’re defects. Then maybe you can determine how to get rid of the ones you have and not make more.

19 Replies to “No More Bugs”

  1. Huh? I’ve been really enjoying your blog, especially the “Schedule Games”, but I don’t understand what you’re talking about here.
    The word “bug” in the context of computing has no significance to actual insects, and the connotation is barely there anymore either. Defect is an okay word, since it can be used to lump missing features in with actual problems, but I really don’t understand what’s wrong with “bugs”.
    And the statement, “People don’t create bugs” just doesn’t parse in my head. Of course they do, how else do they get in there?

  2. It’s just terminology – the word “bug” has a commonly accepted definition among developers that is synonymous with “defect”. Changing the terminology you use isn’t going to reduce bug count, it’s just going to make you sound more like a manager who likes big words.

  3. And I thought that ‘bug’ in the context of software always ment ‘defect in the code’.
    I can see no point in changing terminology without any clear benefits.
    More resopnsibility? I doubt it will bring any. For me ‘defect’ is more vague than ‘bug’. Bug at least has some unpleasant associations and asks for being exterminated, defct is well… a defect…

  4. You’re not going to reduce your defect rate if you blame the bugs on “lousy programmers”… many teams dramatically reduce defect-creation in various ways, but the teams still consist of the same programmers. [not unlike Toyota taking over the management of GM’s worst auto plant and suddenly producing quality work with the same employees.]
    The “blame” for bugs isn’t the people (programmers) so much as how the people work together and individually (programmers, testers, analysts, managers).

  5. If we were to call them defects, what would we call the act of removing the defects? Dedefect?
    Bug or defect, it’s still there in the code and must be removed. And a good programmer will want it removed, no matter what the manager calls it. 🙂
    The reason there are a lot of defects or bugs isn’t because of the term we use. It’s one of two things: miscommunication about what the code is supposed to do or lousy programmers.

  6. I love it when clarifying the language bring forward movement to anyones thinking.
    Changing bug to defect does not have any benefit. The only thing I can think of is that it takes you out of the hacker community a little bit.

  7. I agree with Keith Ray that to say “developers… create the defects” is to focus on a local part of the whole endeavour. As a developer, I don’t claim to create the whole solution. Except on my resume of course 🙂
    Who said “don’t say ‘defect’, or we won’t comply”? I wonder if they also had to fix plenty of -ahem- ‘bugs’, for other reasons… I’m sure I saw that somewhere…

  8. I’ve heard of “defect-prevention” activities, but not “bug-prevention” activities. Perhaps the language _does_ shape the thinking here.

  9. Changing the word is changing your perspective. In manufacturing, the goal is to reduce the number of defective products to zero. A defective product is a waste of resources and eats into the profits, aka the company’s “bottom line”. Of course you can never reach that, but that is why quality programs like Six Sigma exist – try to minimize your variation (some say your defects) as much as possible
    Now software development shares very little with manufacturing. However, if we think of “bugs” as defects (wasted resources), then we choose to be serious in our erradication of them. Each “bug”, or defect, eats into our profits because they are wasted resources and that is a “bad thing”. Now the defects might be the result of bad specifications, poor quality control, sloppy process or bad development practices. In any case, we can identify why the defect escaped into the real world and address the problem in the correct place.

  10. First, zero defects in manufaturing would be economical disaster, i.e.
    there is some optimal level and trying
    to improve beyond that would cost improportionaly lots of money.
    Second, sowtware development shares a lot with manufacturing. And the same goes for bugfixing: there are bugs not worth fixing (sure, I’d rather like them not to exist).
    Joel Spolsky has an excellent article:
    http://www.joelonsoftware.com/printerFriendly/articles/fog0000000014.html
    And third: changed wording sometimes indeed puts things into the different perspective. But not in this case.

  11. Now software development shares very little with manufacturing. However, if we think of “defects” as bugs (wasted resources), then we choose to be serious in our erradication of them. Each “defect”, or bug, eats into our profits because they are wasted resources and that is a “bad thing”. Now the bugs might be the result of bad specifications, poor quality control, sloppy process or bad development practices. In any case, we can identify why the bug escaped into the real world and address the problem in the correct place.
    IMO, the meaning of that paragraph is unchanged.

  12. I think this is an instance of potato or potatoe.
    IME, trying to “force” people to change their vocabulary (bug vs. defect) is generally met with a lot of resistence. Word choice is an extremely personal decision and making someone choose one word over another is trying to force people to not only say what you want, but think what you want.

  13. A thought – even though the distinction doesn’t really exist – is that bug and defect could be treated in a similar way to the IT Infrastructure Library’s “incident” and “problem”.
    Bug: a behaviour that deviates from an expected result
    Defect: a problem which causes one or more bugs (ie a code defect).

  14. Are bug and defect synonyms? Here’s my test: Are you willing to switch?
    If you would be willing to switch from bug to defect, then I’ll accept that you see them as synonyms. If you aren’t willing to switch, there must be a distinction that you care deeply about, and therefore you are not using the words synonymously after all. So what is the distinction that is so important that you won’t switch?
    What to call the act of removing defects? I like either correction or repair.

  15. I don’t think defect is synonymous with bug. Bug is a very loose term that can range from memory dump to mispelled string. If you’re buying a diamond and it has an imperfection, no biggie. If it has a defect, it’s near worthless. Same thing with manufacturing. I used to work on an auto production line. A defective stack of blanks is totally worthless. But problems of a lesser degree can be “reworked”.
    If people equate bug to defect, then no, nothing would change. But if defect signifies a serious problem, then I think changes could take place. As soon as a tab order bug becomes a defect, the power of “defect” is lost.

  16. I think you pulling the wrong piece of string on this one. Bug is a fine word. I think your suggestion that people don’t worry about “bugs” is wrong and similarly your suggestion that people would worry more about “defects” is wrong.
    Cheers,
    Fred.

Leave a Reply