Psychology and Computers (Part I)
"Dual-Process Theory". Daniel Kahneman's Nobel Prize lecture is
probably the most famous paper in this field. Just to cut a long story
short, the Dual-Process Theory suggests that our cognition and
behavior use to operate in parallel in two quite different
modes. The two modes are denoted by System 1 and System 2 (well S1
and S2 for short) in the mentioned paper and they roughly correspond to
our common sense meaning of intuitive and analytical thinking. Have
no doubt the whole speech is quite interesting. You can find it in
full length at http://nobelprize.org/nobel_prizes/economics/laureates/2002/kahnemann-lecture.pdf
The intuitive thinking (S1) seems to be our best friend in many
situations giving us quick approximate answers in a facile manner.
Analytical thinking (S2) on the other hand involves careful
systematic rule-bound reasoning. This kind of mental process requires
time and effort.
But what in a world would have all this with the software development to do?
Well, it is commonplace to consider Object-Oriented Design (OOD) as being
intuitive. Even more, I would say OOD specially targets the innate
ability of humans to represent the reality in terms of objects.
Anyhow, is it effectively a proven connection between the mentioned innate
ability and the ease of operating with the OOD concepts?
If we tend to believe Deborah J. Armstrong's study "The quarks of
it might be exactly the opposite. Just to quote:
"One reason that learning OO is so difficult may be that we do not yet
thoroughly understand the fundamental concepts that define the OO approach."
In a recent study published in the May 2008 issue of CACM (see
http://portal.acm.org/citation.cfm?doid=1342327.1342336) Irit Hadar
from University of Haifa and Uri Leon of Technion - Israel Institute
of Technology, use research from cognitive psychology to trace the
sources of difficulties in coupling the intuitive and analytical ways
The two researchers invoke the Dual-Process Theory in the domain of
OOD in an attempt to explain relatively elementary mistakes sometimes made by
experienced software developers in industry while practicing design
There are 4 main categories of errors considered here:
1. Confusing the direction of inheritance.
2. Difficulties in identifying objects.
3. Confusing characteristics of abstract and concrete classes.
4. Identifying software development with coding (though not
necessarily OOD specific).
So, is Object Oriented Design intuitive or not? I would say in some
extent it should be since our cognitive system extensively operates
with objects and categories on which the whole OOD paradigm is
built. What is your personal experience in this sense?
Whatever the answer might be, I think the interconnection between
specific studies in psychology and computer science are worth a closer
Not to mention the impact of phychologic studies on computer
security. Bruce Schneier said it in a famous DDJ Interview: "Security
is a State of Mind" (http://www.ddj.com/security/210605067)
More about this in the next article. Be around!