Cluelessness
From APIDesign
(12 intermediate revisions not shown.) | |||
Line 1: | Line 1: | ||
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]]. | 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 [ | + | 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 [[API]]s and do in the right way. All of that helps to increase [[Cluelessness]] of [[HtmlForFood|assemblers]] of our software applications while improving their quality. | + | [[Cluelessness]] principle influences the way we deal with reliability, it justifies the importance of testing and explains why it is necessary to create [[API]]s and do it in the right way. All of that helps to increase [[Cluelessness]] of [[HtmlForFood|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 | + | 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 [[cluelessness|cluelessly]] OK with the abstraction and those who need to understand more. |
Line 14: | Line 14: | ||
At the same time, the great minds across the [[wikipedia::English_Channel|English Channel]] created [[empiricism]]; a philosophy where knowledge is preceded by experience. [[wikipedia::David_Hume|David Hume]], [[wikipedia::John_Locke|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. | At the same time, the great minds across the [[wikipedia::English_Channel|English Channel]] created [[empiricism]]; a philosophy where knowledge is preceded by experience. [[wikipedia::David_Hume|David Hume]], [[wikipedia::John_Locke|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, | + | Although these two philosophical approaches seem quite contrary to each other, the modern [[wikipedia::Science|science]] managed to marry them together. In fact even [[wikipedia::René_Descartes|René Descartes]] understood the value of scientific [[wikipedia::Experiment|experiment]] to verify or reject a [[wikipedia::Hypothesis|hypothesis]], which is kind of [[Empiricism|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 | + | 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]]. |
Current revision
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.