The psychology of learning
I have often observed that students are very inefficient in their work. They frequently use methods of working that are unproductive and slow. Some examples:
Students do not know how to touch-type. Instead of taking the relatively limited time to learn to do it, they waste many hours per week on slow typing and typing errors.
Students frequently do not know how to use advanced features in the text editor such as the interface to the version-control system, the interface to the Lisp system, etc. Again instead of taking a short time to learn, they waste much more time.
Students do not know how to use a debugger. Instead, they waste time debugging programs with trace output.
etc.
As it turns out, this practice is not restricted to students, but is also common in the software industry.
But why do people deliberately waste time when there are much more efficient ways of working? This is a very good question. In fact, it is such a good question that I decided to ask a well-known professor of psychology at one of the top universities on the east coast of the USA. What she told me was no doubt a simplification so that a layman like myself could understand it. Despite such simplifications, her explanation both gave me a much better understanding of the phenomenon and some ideas about how compensate for it.
She told me that (with respect to this phenomenon) people can be roughly divided into two categories that she called perfection-oriented and performance-oriented.
The people in the category perfection-oriented have a natural intellectual curiosity. They are constantly searching for better ways of doing things, new methods, new tools. They search for perfection, but they take pleasure in the search itself, knowing perfectly well that perfection can not be accomplished. To the people in this category, failure is a normal part of the strive for perfection. In fact, failure gives a deeper understanding of why a particular path was...