We’ve frequently heard that art imitates life and life imitates art. More recently, the late mythologist and author Joseph Campbell suggested that likewise our science, as a form of human expression, also imitates life and conversely. Thus we might look to our science as a meaningful metaphor for our contemporary human existence. Naturally that brings us to the question, “What is Object-Oriented technology telling us about ourselves?”
There are a variety of things in O-O technology that do seem to reflect our human existence as individuals, as corporate entities, and as a society at large. For example, the transition from a master/slave program structure to a collection of collaborating individual, “autonomous” objects seems to mirror our human social transition from a feudal state to a federation of individuals. It’s probably not surprising that O-O technology originated in and has been embraced by Western cultures where individualism is highly prized. Even the notion of privacy which is so highly valued and instituted in many countries laws is reflected in the concept of encapsulation where no object is allowed to diddle with another object’s data. The range (public, private, protected, and friend) of visibility of an object’s operations parallels the levels of human behaviors that span a variety of social spheres from intimate partnerships, to family, friends, acquaintances, and strangers. For a well socialized individual as for a well formed object, the “visibility” of human behavior is appropriately defined – e.g., you don’t discuss your most intimate feelings with new acquaintances…usually.
That an O-O designed and implemented system is made up of collaborating objects also mirrors our “new found” corporate understanding in the US that business is accomplished by effective collaboration of individuals. Of course, we’re still trying to unravel the mysteries of what “effective” means. Additionally we recognize that business opportunities sometimes are most sensibly pursued through strategic alliances with other companies. Nonetheless within companies, it is still considered proper protocol for person A who wants something from person B to raise it up the chain of command to get official agreement – i.e., A talks to his/her manager to make the request of B’s manager. This is similar to what is considered good design for members of an aggregate. Specifically, aggregate members should work through their controllers first rather than just talk to each other.
One of the thrusts of good object design is to make objects coherent – focus on one purpose and do it well. Likewise we see a continuing thrust for people to specialize in a technology or a skill. On the other hand, one of the problems we see frequently in our corporate organizations (especially in development projects) is the absence of generalists to help solve problems that have a larger scope than just the specialties of the individuals – for example, during integration of subsystems or during optimization of system performance [K. E. Mackey, Why Bad Things Happen to Good Projects, IEEE Software, May 1996.] We might look to our successful O-O systems and the role played by the system and/or subsystem controllers to get better ideas for our human organizations.
Taking this one step further, one would expect our human organizations to be in some sense isomorphic to the organization of a system under development [M. E. Conway, How do Committees Invent? Datamation 14, 4, April 1968.] However, how many times have you engaged the help of the “responsible” person only to discover that they don’t have the power or authority to get their job done? We recognize that system architecting has a much larger element of art versus engineering. So, it’s not surprising that our human organizations suffer from the same lack of architectural clarity as our systems.
Regarding human behavior, Eleanor Roosevelt said that no one can make you feel bad about yourself unless you let them. We understand that with an object, it cannot respond to an event if it has no corresponding operation. I’m sure that therapists around the world are counseling people to become better objects by taking ownership of their own operations and eradicating the undesirable ones. On the object side of the analogy, what if we built “learning” objects so that they could be vulnerable to importing undesirable operations (dysfunctional behavior)? Of course, our networked computers already are experiencing problems of downloading undesirable stuff. We must teach our objects not to talk to strangers.
Another interesting mirroring of human existence in our object technology is in ternary relationships. They’re a real pain to draw, the O-O notations don’t easily accommodate them, and we usually aim to reduce a ternary relationship to a set of a binary relationships. Interestingly from a human development perspective, as noted by Jean McLendon of the Satir Institute of the Southeast, Inc., the relationships that give us the biggest problems are the triangles, both within the family and outside the family. Perhaps when we figure out how to deal with triangles more effectively, we’ll be able to develop improved modeling techniques for ternary and even n-ary relationships.
Another analogy to consider is the relationship between an unreferenced object and the isolated human. Some languages/runtime environments (Java, Smalltalk) handle them and some don’t. Likewise some cultures attempt to handle the disenfranchised and some don’t. And how about objects that poll (obsessive-compulsive) versus those that are interrupt driven (not assertive enough)? How about an object instantiated from a class with multiple inheritance (children from a blended family)?
At any rate, pondering question “What is O-O technology telling us about ourselves?” may give us some additional insights into ourselves. They may be profound and possibly allow us to use an O-O metaphor to characterize and analyze our contemporary social problems. Or they may just be fun to explore and give us good grist for object-oriented limericks:
There once was a object named Lee,
Who did not have a good O-I-D,
He got to a state
That had no escape,
Reboot was the only known key!