Some Bugs are Better than Others

Not all bugs are created equal. Avoid the expensive ones by making more of the ones that are easy to find and fix.

Some Bugs are Better than Others

Bugs are easiest to fix immediately after you create them.  The longer a bug goes undiscovered the longer it will take to fix.  Not to mention all the damage an undiscovered bug can wreak on your users (i.e., customers and clients).

With that in mind, here's a list of bugs in order from the easiest and least expensive to fix through the most difficult and most expensive to fix:

  1. Syntax errors
  2. Compile errors
  3. Misunderstood requirements (before you start writing code)
  4. Automated test errors (i.e., failing tests)
  5. Runtime errors
  6. Misunderstood requirements (after you've written the code)
  7. Logic errors

Moral of the story

You (and your team) are going to make mistakes.  You're human.  Accept this fact and design your processes so that you make more mistakes at the top of the list and fewer mistakes at the bottom.

Referenced articles

The Curse of Reliable Software
How does one avoid the reliability paradox? One option is to intentionally write unreliable, buggy software. There’s a better option.
Syntax Errors
Every programming language has its own syntactical quirks. The C family loves braces. Python loves indentation. BASIC loves words. And Perl loves #%@!{}]&.
Compile Errors
Compile errors are easy to keep out of deployed code (just remember to Debug > Compile). Which is good because they hard crash Access in Runtime mode.
Misunderstood Requirements in the Project Design Phase
Your client knows what’s wrong. They *think* they know how to fix it. But treating symptoms is never as effective as treating the disease.
Automated Test Errors (aka, Failing Tests)
You can have a bug in your code and/or in your test. You’re unlikely to have the *same* bug in your code and your test.
Runtime Errors
It’s impossible to predict every possible scenario that could befall our applications in the wild. But we need to at least try.
Misunderstood Requirements (After You’ve Written the Code)
As you install the final piece of crown molding in the dog’s second bedroom, you can’t help but smile at the absurdity of it all.
Logic Errors
The logic error is the most dangerous and insidious of all software errors.

Image by HotelArizonaHD from Pixabay

All original code samples by Mike Wolfe are licensed under CC BY 4.0