Software as Art
Software is not properly recognized. It is most commonly viewed as a rather prosaic algorithm (whatever that means) designed to produce an accurate, computer assisted result. Software programmers, those who write the software, are characterized as nerdy, socially inept recluses who wear stained, collarless pullover shirts and dwell alone in remote, dark rooms. In the modern era, software supports and enables a huge variety of activities such as banking, space flights, accounting, pattern recognition, census counts, home budgeting, DNA analysis and countless more activities. Did I mention AI? Software is vital, a sine qua non, to the modern technical age.
Software is a language. Like our human spoken and written languages, it has many forms each with its own structure, uses and words – COBOL, BAL, BASIC, C++- But like any language, its major purpose is to communicate. Our human languages are designed to communicate ideas, structures, and instructions between individuals. (They also communicate emotions, nuances, and the many wanderings of the mind. That is a different topic.) Software itself, and its many languages, has a narrower focus. Its purpose is to communicate to a computer a set of instructions designed to produce a specific and prespecified result – send humans to the moon or see if we met our budget goals.
There is good software and there is bad software. Bad software is soon recognized. Your screen goes blank, the computer program goes into a loop, a “bug” crashes the program, the moon rocket veers off into endless space. Good software is implicitly recognized by the fact that it achieves its predefined goal – it doesn’t hang up, the screen doesn’t go blank, and our humans reach the moon – and return.
But can software be considered an art? Can a software program be in the same class as a Mona Lisa, a Beethoven 9th, or a Pulitzer Prize novel? Would it even be fair to promote good software from a working and mundane effort by some nerdy individuals into a technical age class of art? I say yes.
The good or great programmer (and I speak from experience) enters a state of intense concentration. He is totally focused and holds every program instruction in what is similar to a colloidal suspension. Any interruption causes this mental suspension to collapse. It must then be reabsorbed into the mind. Every program instruction in whatever language is used, must reflect in explicit detail what the corresponding computer instruction can do. The sequential progression of instructions must reflect the proper IFs, THENs, ANDs, ORs, NANDs and NOTs which express the program’s logic. Many programs must be aware of time to the millisecond – when to jettison the lift off rockets from the main module, the precise instant to issue a ticket for a “right turn on red” violation. All programs must make the right decision based on sampling a previous test. All programs must be aware of and handle all possible outcomes of a previous test or logical conclusion. If a program tests only for an expected “right” or “left” result and the result is “straight ahead”, then the program may crash, go into a loop, or produce an erroneous result. Great programs make the best possible use of the computer’s limited assets – instruction set, speed, and available memory.
Great music demands that the singer masters his vocal chords and the score. Great painting demands that the artist masters his palette and the painted surface. Great prose demands that the author masters his language and the nuanced story line. A great program demands that the programmer accounts for every possible detail of the predefined result and makes efficient use of the computer’s limited assets. But many times the “great” adjective gives way to “Wonderful”, “Magnificent”, “Awesome”, or “Remarkable”. How does this happen? This happens when the singer, painter, author, or programmer goes beyond the expected and infuses a part of himself into the effort.
If there was a Nobel or Pulitzer or NYT or Guiness Book prize for remarkable software, I would nominate the software that controls our moon shots. I would also nominate the Microsoft Excel product. These are both magnificent software examples.