Saturday, May 02, 2009

The Nature of Simplicity

As typing these words, and hearing the beautiful waves of creations of classical music, I am filled with appreciation for what my anonymous as well as immortal predecessors have handed over to me. May it be that I too will have something to hand over to my successors? Remembering friends of a few decades ago, or my heroes that I only read about, I realize that immortality can only exist in the form of memories, for so long as there can be memories. May it be that our species will survive the tyranny of our sub-intelligent greedy subset?

Turning to the topic of this note, the inherent complexity of software development is not open for debate. But one must differentiate between the natural complexity and the superficial one imposed by marketing strategies. Presently, the imposed complexity is greater in size and degree, and is simply taken for granted. Only a fraction of the imposed complexity is a plain consequence of lingering earlier attempts, more often due to marketing strategies.

The focus of Z++ research is the removal of the imposed form of complexity. The natural complexity is in fact simple and beautiful in the eyes of experts. After all, a mathematician firmly believes that mathematics is simple and beautiful. Beethoven must have thought of his music as simple and beautiful. If it were not simple for him, there would be no Fifth Symphony.

A brief digression is in order. Einstein believed that Mozart was a better composer than Beethoven. In his opinion, Mozart found the beauty naturally while Beethoven created his music. Thinking of the notion of gravity as created by Newton, and Einstein’s way of looking at it as a property of space, gives some hint as to what Einstein was trying to say.

It is unfortunate that Einstein chose a poor example in this particular case. Indeed, taking the example literally, it seem like Einstein is contradicting himself. After all relativity is not simpler than Newton’s approach. Beauty comes with underlying complexity that need not be visible beyond the beauty itself. It is hard to believe that Pele had an inspiration on the soccer field and was able to perform his bicycle kick without sufficient prior practice. It appears as if once his theory was demonstrated through actual observation, Einstein forgot all about the years of calculations that went into the one moment of his inspiration about the nature of gravity.

However, looking at how some people put things together in the name of invention, as Einstein did, there is a truth to be observed. Two people can have an inspiration for solving a particular problem. The beauty of their solution depends on their eagerness to acquire more knowledge in the area until they have found the most natural solution. That is how Beethoven, Pele and Newton created their beauty, and Einstein is no exception. Behind the skin of beauty hides all the years of fighting with the flesh of complexities.

In the context of this note, one can say that a simple solution for a complex problem must necessarily rest on a complex foundation. The beauty of the solution is in its being natural for the domain experts. Furthermore, much of the confusing complexity has been planted into the process of software development for gaining and locking market shares. The elimination of the planted complexity is a giant step towards simplifying software development.

Complexity is the inherent nature of simplicity. Without a sufficiently complex foundation, the simplicity of a process or tool will be lost to the complexity of its usage. The beauty of a tool for software development is in its simplicity without loss of generality, as well as extending the generality of previous tools.

Debugging distributed programs is not a simple task. Suppose, we could test all distributed components of a piece of software on one single physical machine as if each component was running on its own remote host. This would be beautiful if after the completion of testing we could send the software for actual use without changing any code. That is how it works in Z++. The beauty here lies in the fact that communication among distributed components is transparent in Z++ language. Thus, the Z++ approach is as simple as it possibly can be, and yet as general as it can ever be.

The point is that, simplicity becomes beautiful only when it automates sufficient complexity. That is the style of beauty of mathematics, except mathematical abstractions need no automation.

Labels: , ,