The Tipping Point and Agile Software Development
Some days ago I was re-reading the inspiring book The Tipping Point by Malcolm Gladwell and like the first time I read it a lot of thoughts arose in my mind. If you don't know anything about the Tipping Point - a dramatic moment when something unique becomes suddenly common - Google is your friend (reading the book is better though).
Gladwell identifies three driving forces that make social and marketing phenomena and trends happen:
- little causes can have big effects
- change happens not gradually but at one dramatic moment
I see some interesting relationship with my experience even if I'm missing something and the result is two directly contrasting propositions I would like to delve into.
First of all the last concept reminds me the scientific revolution ideas of Thomas Kuhn where science is not a steady, cumulative acquisition of knowledge. Instead, science is "a series of peaceful interludes punctuated by intellectually violent revolutions" [Nicholas Wade, writing for Science], which he described as "the tradition-shattering complements to the tradition-bound activity of normal science." After such revolutions, "one conceptual world view is replaced by another".
Then the idea of contagiousness as a geometric/epidemic progression versus a more simple proportional one. Gladwell writes:
"As human beings we have a hard time with geometric progression, because the end result - the effect - seems far out of proportion to the cause. To appreciate the power of epidemics, we have to abandon this expectation about proportionality. We need to prepare ourselves for the possibility that sometimes big changes follow from small events, and that sometimes these changes can happen very quickly".
Little causes can have big effects immediatly reminds me a lot of things :-) like Stephen Wolfram work on cellular automata, his A New Kind Of Science in particular but also Chaos Theory and Complex Adaptive Systems, the butterfly effect and so forth.
And now I'm ready for my absolutely non-structured thought burp (mainly related to the Agile software development but not only):
little less than enough, at the edge of chaos might mean just before the tipping point (?)
Emergent design (tdd + refactoring) can be/is a way to reach the tipping point without the need to forecast the tipping point itself or a way to avoid a "bad" tipping point keeping the code simple?
Little causes can have big effects is reflected by the fact that refactoring (which is a series of small trasformations by definition) can lead to very lean, mean, clever solutions. But can doesn't mean that it will. There are other forces then and that's why an Agile approach stresses the fact that the practices reinforce each other.
BDUF is a way to try to avoid any non planned tipping point (not being planned means automatically it is bad): from this point of view BDUF and requirements freezing (resist to change) make sense (!). The problem is that BDUF doesn't take into consideration the fact that "little causes can have big effects". Or better: it recognises it, and that's why it attempts to forecast and plan everything in details but it misses the fact that even a very little and apparently not important change might have a geometric progression. This is because a mechanistic approach believes that a system/organisation is exactly the sum of it's components.
An holistic/hermeneutic view considers an organisation from a systemic point of view (the whole is more that the simple sum of the components, self-organisation, etc, etc). This is directly connected IMHO with Maturana and Varela Autopoiesis theory. In their book Autopoiesis and Cognition: The Realization of the Living Humberto Maturana and Francisco Varela explain the autopoietic concept, a word coined in the 1972 from the greek autos ("itself") and poièsis ("creation, production"): the creation of itself.
The authors first of all define the autopoietic machine concept as a homeostatic system to demonstrate how a living being it's, at the end, a living autopoietic machine.
Now I think you understand what I mean when I say scattered ideas :-D