A programmer who truly sees his program as an extension of his own ego is not going to be trying to find all the errors in that program. On the contrary, he is going to be trying to prove that the program is correct — even if this means the oversight of errors which are monstrous to another eye. All programmers are familiar with the symptoms of this dissonance resolution — -in others, of course.

More often, then, we will be doing evaluation of programs not with respect to one another but with respect to a situation — a total situation — in which they are developed. Looking honestly at the situation, we are never looking for the best program, seldom looking for a good one, but always looking for one that meets the requirements.

One typical computing example of social fixation is the adoption of one programming language by an installation. Once the language has been adopted, a new language has more difficulty making an entry, because with most of the people using the old language, advantages accrue to following the beaten path.

… intelligence has less to do with the matter than personality, work habits, and training. These things, unlike intelligence, can be changed by experience later in life, which turns the problem from one of selecting programmers to creating them.

"Denise: "So your present project is ready to pass to the testing people?" Ralph: "Absolutely." Denise: "Okay, since you're so sure it's adequately tested, I'm going to make you the following generous offer: If fewer than three bugs turn up in your component during testing, I will give you a raise. But if three or more bugs turn up during testing, you won't earn a raise this year." Ralph: "Um . . ." Denise: "Um what?" "Could I just have the component back for a few little tests I want to do?

Human knowledge is by necessity incomplete. We cannot know in advance what we might be able to know and what might be essentially unknowable. But of one thing we can be sure: if we do not try to find things out, we shall never succeed.