An amateur programmer is looking for a way to get the job done. If he runs into a difficulty, all he wants to do is surmount it - the manner of doing so is of little consequence. Not so, however, for the professional. He may be well aware of numerous ways of circumnavigating the problem at hand. He may even employ one for the immediate purpose of getting the job done. But his work does not stop there; it begins there. It begins because he must understand why he did not understand, in order that he may better prepare himself for the programs he may someday write which will require that understanding. The amateur, then, is learning about his problem... the professional, conversely, is learning about his profession, and the problem being programmed is only an incidental step in his process of development.