The bounds of complexity

Simplicity is nature. People on the other hand are working hard to transform everything they see into a complex mesh of mangled logic. They tend to group and accumulate things into more “manageable chunks”. Unfortunately this very act tends to create more confusion. The accumulation of the various elements also happens with the implicit flavoring of assumptions that people make with their acquired logic. When this tasty dish of information and invisible logic is served to another person, the confusion of where to start or how to proceed arises. Then we are forced to again deconstruct the while chunk into smaller and again “more manageable” chunks.

Here again there is resistance to bringing everything down to a fine grained level of clarity. In our efforts to not break things down to their elements in order to not have to put them back together again, we end up doing exactly that with a lot of reluctance and in a very inefficient manner. I guess we feel that the ‘basic’ elements will be too many and hence are prone to think it will be too tedious/complex to put them back together again.

I don’t know if what I am going to say is really the right way to go about things but it seems to make sense to me at this moment in time. Basically I feel too many decisions are assumed/taken prematurely without having enough clarity. In many cases the decisions are taken for the actions or consequences of other people who we do not control.

In computer programming there was a paradigm that was created some time ago, where the idea was that a piece of code would be in a state of waiting till all data it needs is ready. The data would be ready when it gets created/processed by possibly another piece of code or is provided by an external source. Once the data was ready, the code would simply execute and do its job of giving an output. The code is never going to have to worry about invalid or unavailable data or how to handle such situations as it is never going to run until the data in its proper required form is available.

But in reality, we write code that will start running regardless of whether the data is available or not. Then it check for absence of data or invalidity of data and then either requests the user for the correct data or throws up an error. There is so much ‘policing’ happening that often the objective of the piece of code is lost and it may not do properly the one thing that it was originally supposed to do.

Exactly like this, if we could break down things to the very basic set of things that we needed to do, and only did it when the circumstances were exactly right for it, and did not worry about ever doing it if the circumstances never turned up for it, things would be much simpler.

I have seen myself and other people get into complexities of daily work only because we took simple decisions too early or before we had enough clarity. In some cases I could see that these decisions would lead to further complexities in the future but could not convince others to defer them till we had the required clarity. They just felt I was getting too involved in it and that I was over-thinking it (no offense to you if you said this and are reading this). But I could see so clearly (at least for myself in that circumstance) which assumptions they were making implicitly and how these could affect the final outcome. Maybe the effect would have been negligible finally but I just could not let things go after seeing where it was heading. It is like watching a bomb with the fuse burning (well the situation was not nearly as dramatic but more like a firecracker, which probably would have fizzled out anyways). But I guess I am too deep into this whole perfect code thought process to let something that seems illogical go away even if it is trivial.

On a future note, I believe I should start simplifying things for myself at the level at which I feel I have things in proper flow. Only way to test my theory of the operating simplicity of things.