PHILOSOPHY OF SOFTWARE

August 30, 1996

Baffling Mystery

When Carnegie-Melon Software Development Institute and others who have spent a lifetime attempting to define an academic discipline, all but admit that there is no clear definition. When professors as well as business management are baffled by the apparent metaphysical (or black magic) nature of this art form that preoccupies colossal proportions of our population. Then why can't somebody define it, explain it, get a handle on this eccentric thing! Why can't some genius (a Newton or Steinmetz) reduce this amorphous monument of confusion to a science, engineering discipline, or institutional standard?

Large portions of our population, especially the business, engineering, and academic communities treat computers and software as an everyday word. They talk to their computers with varying degrees of absurdity. Yet these silent sentries staunchly defy all threats and accusations. Software is everywhere; yet it forever fails, breaks down, and eludes reason. Programs crash, files have incorrect definitions; yet fickle fingered masters of the art are full of tricks and shortcuts for luring it back to support their fleeting whims and illusive dreams.

Sluggish software and internet access absorb enormous amounts of time. Yet this icon of the modern age is totally addictive. Once hooked, normal people are quickly enslaved to the mundane details of file manipulation, loads, and reloads. Much of the overhead of enduring this monster is due to the shortcomings of the software that manipulates it. We can build skyscrapers, race cars, and high performance electronics. We can understand quantum mechanics and subatomic particles; so why can't we produce quality software?

The Truth Behind the Mystery

The truth about software is that it is based upon thinking. The computer and the software to run it are mirrors of the brain of mankind. Software, therefore, suffers from the same inherent problems as psychology and psychiatry. These medical professions are studies of the human soul (psyche). Just as psychology is forever trying to understand the elusive soul, software is perhaps worse off since it is a model of the mental processor of mankind. Software comes from the mentality of mankind; and, like it or not, mentality is part of the soul (or psyche).

Software is in many ways more closely associated with psychology than engineering, technology, or mathematics. Software comes directly from the thoughts of the human soul. The best software often takes advantage of the creativity of the soul. It falls short of the beauty of art and lacks the discipline of engineering. Furthermore, it will forever be doomed to the psychological makeup of its creator.

Software reflects the psychological perspective of its developer. There a number of factors which contribute to this perspective. They include: The individual programmer/developer, the development environment, and the System. The individual programmer/developer brings to the job his own psychological perspective. The development environment includes all the computer hardware, software, and procedures used to develop the product. The System includes all the people, development environments, components, organizational relationships, and everything else that combine to accomplish the purpose of the system. This is a paraphrase of the definition of a System according to Deming.

Software is as fluid and flexible as people. It is subject to whims, imaginations, fears, and hopes. It reflects the viewpoint of the developer, his understanding of the objective, his feelings about the customer, his concept of perspicacity, his idea of quality, his respect for authority, and his knowledge of the customer. If you want to build a better product with computers, software is the key. It represents the mind of the system. The thing that gives the product its touch and feel - it's human side - its personality.

Inanimate Personality

Does software have a personality? Yes, without a doubt. When the developer is finished, it will have a vocabulary for communication, internal analytical logic, audio visual support, and memory. All these resources are virtually unlimited with today's technology. So where's the rub? It lies in the definition programmed, borrowed, and kludged by its creator, the indomitable software developer. This person begins with a clean slate, and then pieces together a wonderful robotic companion or a demon monster that waits to devour the master's work.

First, there are the vocabulary traits. Whether internal or external, the vocabulary constitutes the basic building block of thought. One cannot think beyond his vocabulary. The power of communication with the inanimate machine lies in the vocabulary. The computer can be easily taught to respond to any vocabulary. It's capabilities are virtually unlimited. So where's the rub? First, whereas the computer has unlimited vocabulary potential, its human master is usually very limited. The human wants everything short and simple. That means that good computer support must simplify, reduce, and shorten communication with its humanoid companion. That means it must consolidate, compact, and conclude. Secondly, software with a large vocabulary may be large, complex and difficult to develop and maintain. So, whereas, the computer offers limitless possibilities, it is constrained by the limitations of its developer.

The Creator/Creation Relationship

The creation will never exceed the capability of the creator.
The potter is the master over the clay pot. The pot will never exceed the capability of the potter. This analogy applies to the computer and software developer as well. The programmer will never get more capability out of the computer than his own mentality permits. This doesn't mean that the programmer can't do bigger jobs faster than his human computer, but it does mean he can never make the computer accomplish what he did not first conceive. Of course, this applies to errors as well. A trivial mistake on the part of the programmer may take the computer on voyages beyond our ability to understand, but the spark of genius or ignoramus originated in the mentality of mankind.

The programmer system developer has a monumental challenge. He has the power to play God with the computer. He can create anything within his mental limitations. The computer will do precisely what it is programmed to do. It will obey every command precisely as it is trained to do. The developer can incorporate all the eccentricities of his genius, the frills, the taciturn meandering through cyberspace into his sole creation. His human limitations can be overcome. He can achieve new heights, hopes, ambitions. He has computational power at his disposal. He enters a new dimension of mentality.

Although the programmer can do great things, his skill soon exceeds his intelligence. And with souls of yesteryear, he finds himself looking for a job. Unable to think up the requirements for himself, he bows to those who will feed him, clothe him, pay him an income. He lets them give him the requirements, select the colors, decide upon the frills, and determine his delivery schedule. His life, even with the power of the universe at his disposal, is soon reduced to the daily schedule of the common laborer. How could such a magnificent genius bow to the labors of life; give up his authority over his creation to a boss or a capricious customer; stoop to the drudgery of maintenance; or become a slave to configuration control? How could he allow others to dictate his life?

The Business Cycle

The company decides the products, the programmer makes them sing and dance. The tester tries to break them and pick them apart. The customer buys them, especially the ones he likes best. Who tells the customer what to buy? He is often driven by his ever fickle soul. He buys what he wants, what he needs, what he might need. Who knows why? But the cycle ever spins round and round:
Build it - buy it,
Test it - try it,
Send it - sell it,
Dump it - trash it!
Of all the products, software seems to have the shortest span. But why? It can be as short or as long as its maker likes or the customer demands or the boss wishes or the bugs destroy. It is amazingly flexible. It can be built to expand out, to rise up, or to cycle. It can live for years, or pop in an instant. The product life cycle is in the hands of the designer. It can be short, long, big, broad. It can be incremental, evolutionary, or spiral. So why all the fuss?

It is precisely all this flexibility that causes the trouble. There are numerous variables, many decision points, and limitless options. Like the human mind, software has a basic support operating system that runs all the time, storage, logic, viewers, sound and communication ports. There are also the transient tasks that run only a short time. Systems often reach confusion and stop so the mess can be sorted out. Computers don't like confusion any more than people.

The more one looks at it, the more the computer is a mirror of mankind. In it we see our own mentality - our strokes of genius and our stupid mistakes! It mimics our psychological makeup. It transforms our thoughts into a mechanical executor, an electronic translator, a physical decision device. It gives us back what we make it do. Of course, it may be without finesse, out of tune, or just plain wrong.

Once programmed and performed, a unique personality emerges. The inevitable result of programming the mechanical monster is to give it a mechanical soul. The soul of a robot - the mind of a genius? Perhaps, but more likely a highly efficient helper with quirks and ridiculous aberrations. Why all the problems? We are forever playing God. We know what we want. Why all the mess? Face it: The master made a monster. And we're the master.

The computer should be more stable than us, since it is without emotion. It should be objective, logical, and right. It has no feeling and it cannot reason. It can rationalize but not reason. Although it has no feeling, it certainly evokes them from us. People get angry, and fuss, and speak harshly to this deaf, dumb, dead, insensitive icon. It isn't human; but it is entirely rational. The one thing it never has, or ever will have, is an ounce of love. It can't love; it has no life. It can't love; it can't hate. It has no opinion. It is objective - entirely logical, quick, efficient; but dumb as hell!

Computer Humor

The colossal contradiction of this device of mankind is ironic. Why the contrast of opposites? So smart - so dumb; brilliant - absurd; rational - illogical; instant recall - the same mistake. This is computer humor - irony and satire. It has the ability to make mistakes and to make them perfectly - to the 10th decimal place. Wow?

The maturity level of the average computer is somewhere between a dog and a three-year-old. Perhaps that's why computer users are often heard to be saying, "Yeah!", "wow!", "oh", "byte", "bit", "uh - o!", "no - no - no!!!" Now does this sound like the vocabulary of a genius or of an adult? So, if the vocabulary evoked by this mechanical partner is so childish, what does that say about its creator, programmer, user? Is this simply a child's toy? Are we regressing back to childhood? 'Tis a true psychological question. One that would be expected from an imminent psychiatrist.

The irony is phenomenal: All those serious scholars speaking in monosyllabic gutturals, "uuh", "ah", "oh." Mankind is forever trying to learn something, to produce something, to master something. But is he progressing or retrogressing? There is much to be said for simplicity (the KISS principle), but is this naiveté or simplicity? I think the computer would say, "Naiveté!" If the computer could talk, it would speak of man as naive, stupid, dumb. It would say, "You dummy, why did you program me without my constant; you know I have to have my constant." Or, you left off the comma (or the designated delimiter, dummy)! What do you expect me to do, read your mind? If you have one?"

Interesting, isn't it? The computer would sound almost human. It would likely say the same things we would say. Why is this? Is the computer right or the humanoid right? There is quite a bit of evidence to suggest both are right - both are dummies. Since the computer is the mirror of the humanoid, then it should, indeed, reflect the glory of its creator. Would a dummy call a dummy a dummy? Yes, it's psychological denial and projection. We observe in others what we know about ourselves.

The Source of Psychological Aberration

There are many sources that influence our lives, but the humanoid has volition. He makes his own decisions. He ultimately decides for himself no matter how pressured he may feel. The computer has no volition. It follows the code. It is therefore, a slave that obeys every instruction - no matter how simple or complex, how trivial or small, how long or short. A total slave to the master cannot be held accountable. The master made him do it. But who is the mastermind for the computer? Is it the programmer, the supervisor, the CIO, or the CEO? Or is it the customer whose whims determined the market? Or is it the "unmoved mover" of Descartes - God or Satan?

There are obviously many influences that determine the resulting personality of the computer product. As robots mature, the personality aberrations will become more prominent. However, in spite of all the factors, the programmer still has a volition, and he is ultimately responsible for his creation. The supervisor may get credit for his productivity, the CIO for his ingenuity, the CEO for his profit while the lowly programmer is recognized only when there are bugs. Yet the programmer developer is responsible for his creation. And his creation is a psychological mirror of himself.

Now, we've made a full circle. It started with the programmer, and now what is reflected back is the psychological perspective of the programmer as translated into the code (or other computer product). Of course, the efficiency of modern mass production may duplicate the resulting canned personality of the programmer onto the desktops of millions of unsuspecting patrons. However, the key ingredients of the psychological makeup of the programmer developer are prevalent, namely, the mentality, left and right lobes, vocabulary storage, visual cortex, memory, list processor. And missing are the emotion, conscience, volition, and love. Volition doesn't qualify because although there are choices, there is no freedom to choose. That was taken away when the computer was made a slave to its code.

The computer product is a psychological aberration - an imperfect image of its creator.
Solomon once said, "There is nothing new under the sun." Is the computer? Apparently not. It only gives us back what we give it. It takes our instructions and translates them into the things which help or amuse us. We pour our mental energy into it, labor over it for hours; and then as quick as light it radiates the result. The hours of thinking and manipulating come back in an instant along with the imperfections which are magnified a thousand times. The computer can screw up things never before imagined.

We put into the computer our logical algorithms, our mental meandering, and our pitiful insight. We get back an instant answer that is no better than our assumptions, our logic, and our academic skill. We haven't changed, and our products, whether automated or manual, reflect it. After two generations of studying computers, we are not even near deciding upon a basic vocabulary for them.

Our products - ourselves!

Conclusions

Computers, software, and computer products will not be classified or declassified anytime soon. They are closely akin to the psychological perspective of the developer. As with all mental, soulish, psychological disciplines, there are profound problems. We are ill equipped to comprehend the magnificent creation, mankind, who was created by the ultimate Creator. When we invent a mirror image translator that enables us to project our own mental processor into it and play God, we receive a strange combination of contradiction.

Computer technology helps and hurts, works and fails, runs and stops. Is it so different than the most complex entity of all creation? The best of computers have never duplicated the capabilities of the human mind; and they never will. Think of a computer that can be born with no vocabulary; and then learn to think, relate, reason, and love; work for a lifetime; store all the imagery of life; and never have to be redesigned for all of human history. No way!

The self-righteous, legalists have made a big mistake in thinking they can define the software development process. They understand neither its beginnings or its consequences. The academic community tried it briefly and then gave up. The business community never cracked the code. The giant software houses are pouring enormous energy into the process of creating code, playing God, and pretending to be servants of mankind. All are looking at themselves in the mirror. The computer is laughing back.


August 30, 1996 - Revised August 3, 2001- Public Domain.

Top Author Comments Home

Author: Larry Wood, Email lwood5@cfl.rr.com


This document was created with the assistance of
WebMania! 1.5b - ©1995,96 Q&D Software Development - http://www.q-d.com