ACM Article: How Intuitive is Object Oriented Design?
There is an incredible article that was published in the Communications of the ACM entitled “How Intuitive is Object Oriented Design?” by Irit Hadar from the University of Haifa, Israel and Uri Leron from the Israeli Institute of Technology.
It goes through the process of examining the disconnect between intuition and OO design for engineers and software designers.
The object-oriented programming paradigm was created partly to deal with the ever-increasing complexity of software systems. The idea was to exploit the human mind’s natural capabilities for thinking about the world in terms of objects and classes, thus recruiting our intuitive powers for building formal software systems. Indeed, it has commonly been assumed that the intuitive and formal systems of objects and classes are similar and that fluency in the former helps one deal efficiently with the latter. However, recent studies show that object-oriented programming is quite difficult to learn and practice. In this article, we document several such difficulties in the context of experts participating in workshops on object-oriented design (OOD). We use recent research from cognitive psychology to trace the sources of these difficulties to a clash between the intuitive and analytical modes of thinking.
It is currently hidden behind the ACM referred library portal but if you are an ACM member you can access it here.

May 18th, 2008 at 5:00 pm
[...] Brandon Werner » Blog Archive » ACM Article: How Intuitive is Object Oriented Design? - There is an incredible article that was published in the Communications of the ACM entitled “How Intuitive is Object Oriented Design?” by Irit Hadar from the University of Haifa, Israel and Uri Leron from the Israeli Institute of Technology. It goes t [...]
May 19th, 2008 at 10:20 am
Interesting article and conceptually right along with my practical experience with OOA/D. The root cause is simply that analysis of the problem domain can at times be more art than science. If we could produce an analytical algorithm that could repeatedly convert real world experience (requirements produced by subject matter experts albeit typically non-technical) to instructions a machine is capable of interpreting and executing, there would be no need for software design. Secondly, because we, as software designers, cannot agree on the right amount of abstraction, we tend to fail with too few abstractions which result in inflexible, expensive systems to maintain or create too many abstractions which result in systems that are far from the intuitive, easily understood systems that OOD intended to create.
So, we really on the experience of senior developers to make critical design decisions. We presume they have acquired some understanding of the business domains in which the system is being designed. However, because each developer has unique experiences and unique value measures, critical design decisions are made differently.
Some of the best designers I have ever met actually have liberally arts degrees as opposed to computer science degrees. By its nature, the concept of abstraction isn’t purely empirical and thus those who have trained to presume reasoning must follow a logical path with a finite solution, tend to fail miserably at modeling the real world as viewed by non-technical, business-oriented SMEs. We objectify concepts and create generalizations and inheritance patterns which do not model accurately with the real world as viewed by SMEs.