Bugs vs. Mistakes
run4yourlives: It depends on how you choose to define both, really.In my mind, there is no difference, but there are different categories of "bugs".1. The first the "mistake". In that there is universal agreement that a piece of code does x yet it does y. These are usually trivial and often picked up either prior to ship or in initial testing phases, whatever that may be. In order words as long as you are competent, you will catch and fix 90% of these.2. The second is where the result does not match the intended result. There are two sub-classes of this bug.
 a) The spec/directive/customer request is not properly followed, or interpreted in a way that is incorrect.
 b) The spec/directive/customer request does not exist for a specific component.
 c) The spec/directive/customer request is incorrectly defined or invalid within the business context.This second class is where there are more opinions than stars in the sky, and it's also where we differ from building houses and such. Interpreting a customer's intent and desire (even if the customer is you) and translating that into a functional program is one of the most difficult parts of being a programmer.