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:
- Syntax errors
- Compile errors
- Misunderstood requirements (before you start writing code)
- Automated test errors (i.e., failing tests)
- Runtime errors
- Misunderstood requirements (after you've written the code)
- 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.