When creating software, whether writing requirements specifications, design specifications, code, or tests, considerable effort is made to remove syntactic errors. This is laudable. However, the real difficulty in constructing software comes from conceptual errors. Syntactic errors often look like silly mistakes that can be laughed off. In contrast, developers often feel flawed, or incompetent, when a conceptual error is located. No matter how good you are, you will make conceptual errors. Look for them.
Ask yourself key questions throughout the development process.
- When you read the requirements ask yourself, "Is this what the customer really wants?"
- While you are designing a solution, "Will this architecture behave appropriately under stress?" or "Does this algorithm really work in all situations?"
- During coding, "Does this code do what I think it does?" or "Does this code correctly implement the algorithm?"
- During test, "Does the execution of this test convince me of anything?"
Reference:
Brooks, F., "No Silver Bullet: Essence and Accidents of Software Engineering," IEEE Computer, April 1987.