'. '


From APIDesign

Jump to: navigation, search

Cluelessness, or rather selective cluelessness is a kind of life style and programing meta-methodology introduced in TheAPIBook's chapter The Art of Building Modern Software.

The roots of the term Cluelessness can be traced back to 2006. At OOPSLA 2006, MartinRinard gave his presentation (slides available here Image:RinardOOPSLA06.pdf) about minimizing understanding in construction of complex systems. Cluelessness is a great meta principle that allows us to evaluate whether an advice is good or not. If something allows people to achieve more while knowing less, then that something is good. As a result, almost every Good Technology, needs to exhibit signs of Cluelessness.

Cluelessness principle influences the way we deal with reliability, it justifies the importance of testing and explains why it is necessary to create APIs and do it in the right way. All of that helps to increase Cluelessness of assemblers of our software applications while improving their quality. Cluelessness is a way to measure whether particular design advice is Good Advice or not.

Selective cluelessness is appropriate way to deal with Leaky abstractions that happen whenever we create an API (which is an abstraction, a facade over some implementation). Majority of users then deals with the abstraction only. Just experts affected by leakages need to dig into the leaking details behind such API. Quality of an API can then be judged by the ratio between those who are cluelessly OK with the abstraction and those who need to understand more.

Historical View

The renaissance of modern philosophy and science gave birth to two opposite ways to perceive and explain the real world. On one side there was rationalism which sees reason as the primary source of knowledge. The real world is then believed to be discoverable by reasoning. Indeed, in order to be such, it needs to be reasonable, it needs to have some structure beneath. The progenitors of Rationalism include René Descartes, Gottfried Leibniz, etc.

At the same time, the great minds across the English Channel created empiricism; a philosophy where knowledge is preceded by experience. David Hume, John Locke and others. This school of thought believes that first of all one needs to see, hear and observe things and events happening in the real world and only than one can create proper understanding for reasons and motivations of such events.

Although these two philosophical approaches seem quite contrary to each other, the modern science managed to marry them together. In fact even René Descartes understood the value of scientific experiment to verify or reject a hypothesis, which is kind of empiristic approach. Since then the modern science seems to oscillate between the extreme approaches represented by rationalism and empiricism. This means that sometimes the science seeks beauty and elegance, as that is the necessary sign of rationalism, while sometimes it is satisfied with seeing the things to work - e.g. satisfy the senses, seen together with empiricism as the most important source of our understanding, leaving the explanation for the future.

Yet the approach of majority of people towards understanding to real world is even simpler. It is total Cluelessness. We do not care about what is the reason why things work, if they work for us. Cluelessness is the modern result of the marriage between rationalism and empiricism.

Personal tools