Occam's Razor and Entropy
It's appropriate to consider the ideas of entropy and Occam's Razor. These ideas have been weighing on me for the past few months. Ever since reading David Isenberg's SMART letter #72. I've heard the term Occam's Razor and generally knew what it meant. But the reference by Isenberg prompted me to do some further study.
Occam's Razor can also be stated as "the rule of simplicity." In science the practical application is most common when there is a necessity to choose between two competing theories. Using Occam's Razor would lead one to compare the two theories and choose the option that is simplest. That is why Einstein's theory of relativity was chosen over one with similar math, conclusions, etc. The competing theory included speculation about "ether", something that could not be observed or proven.
Of course, this only applies until a theory is disproved. Something that almost always happens in science.
Entropy is an idea that has captivated my imagination every since I first heard it. On a general note, entropy is the idea of chaos. Chaos is a simple definition for entropy, as well as a synonym.
More specifically I've heard the term "software entropy." This is the idea that software will be the least complex, most simple when first created. An application will never be more simple than its first version. Never. Whatever an engineer does will always make the software more complex.
For this reason it is essential to make long-lived applications as simple as possible in the beginning and then make each successive revision simple, also. Easier said than done. Entropy is the best justification for spending more time planning software development, more time planning revisions and more time thinking through elegantly simple code, rather than first attempts that do not take advantage of these tools. I believe the common term for what is produced by ill conceived methods is "spaghetti code."
And just by the way, I don't know what a "long-lived" application might be. Certainly there is nothing so permanent as a temporary solution. So planning is essential to the maintenance prospects of any development project.
Is there such a thing as network entropy? I don't know for sure. I suspect that this is the case, however. I had an interesting discussion with Dan a couple of weeks ago. He insisted that we are simplifying our network with the installation Ethernet circuits. It's a well know, easily understood technology, right? Well, only to a point. Perhaps Ethernet circuits are less complicated than T-1 circuits, or multiple T-1 circuits.
But what about rate limiting issues raised by placing, for the first time, capacity at the edge that can easily overrun the core? What about the management problems that will be introduced the network? And what about the reliability issues introduced by TCP, IP and the like?
And what about Occam's Razor? How might this idea fit with entropy to make a network perform better and meet user needs quickly and precisely?
Tomorrow: Simplicity, Chaos & thoughts on the Ephemeral