Many people equate defects with programming errors. However, to paraphrase Gerald Weinberg, a program that has a lousy design but no programming errors is still a lousy program. The most important person in the program's design is the person who is going to use it. Make sure that the program follows the user's task, rather making the user follow the programmers' functions and procedures. Forestall the first wave of beta test reports in most betas, you'll get plenty of suggestions on how to improve the user interface or the feature set of the program by being highly conscious of the user during the design process, by reviewing functional specifications and prototypes carefully, and by performing usability testing on your product long before the beta ships.
Programmers are sometimes resistant to participating in code review.
However, review is used by all other forms of engineering. No-one would consider working alone to build a bridge, and no engineering company would permit it. Development managers should make sure that the reviews are conducted by the development team with the goal of finding defects , not with finding fault . Code review is also a very inexpensive way to for developers to teach and to learn. Automated tools, such as Lint and BoundsChecker can find subtle problems, improving quality while saving enormous amounts of time.