”There are two classes of things […] One class of things that gain from disorder, and one class of things that are harmed by disorder.”
Nassim Nicholas Taleb, author of the best seller ”Black Swan” is out with a new book: ”Antifragile: How to live in a world we don’t understand”. He gave a lecture at the London School of Economics on December 6th 2012 during his book tour. The lecture is available as a podcast here.
”Technology is inherently fragile.”
The words are Nassim Taleb’s , and the statement should not surprise any testers: Testers can find bugs in even the best pieces of computer software: It is only a question of having useful testing heuristics, how much effort we’re using, and about observation skills of course.
”In psychology, people talk about post traumatic disorder. But very few talk about post traumatic growth.”
I am a big fan of Nassim Taleb for his original philosophical thinking and his ability to think and speak clearly about subjects which are very complex and sometimes even counter intuitive.
Taleb has a lot to teach us in testing, and it is very obvious to me that fragility is something that we should start looking for.
”The difference between the cat and the washing machine […] is you need to fix [the washing machine] on every occasion. The organic self-heals.”
Computer systems do not self-heal – they are inherently fragile.
But let’s step back for a moment, taking a broader look. Let’s look at the systems incorporating the computers and the software: Organizations using information technology to run their business, communities using IT to stay connected, factories with machinery, workers, managers and computers to run them. Can any of these systems be described as antifragile?
”You should never let an error go to waste.”
My question is ”Can testing be applied in such a way that it not only detects fragility, but instead facilitates the development of anti-fragility?”
I believe that the answer is yes. And yes; there are antifragile systems out there incorporating computers and IT.
Please consider a recent test activity you participated in. Now think about the system which was building the product you were testing (my apologies for using manufacturing terms here): The people, the project teams, the organization. Such a system is organized into layers, and while the bottom layer (where the technology is) is usually inherently fragile, some of the higher level layers were perhaps antifragile?
This is where I see the role of testing coming in:
”It’s not about trial and error – it’s about trial and small error.”
In this very statement, Nassim Taleb, in my humble opinion, speaks clearly about what testing is about. The antifragile system for developing products grow stronger when testers find problems, since not only will the system learn from experience; no the antifragile system will prepare itself for things that are worse than what was experienced.
Put in another way: The antifragile software project does not just fix the bugs it encounters. The antifragile software project fundamentally eliminates problems based on knowledge from the small problems testers find.
So my message to project and and program managers is this: Don’t hire testers to find the defects. You should hire great testers to ensure your projects experience many small problems, allowing them to grow stronger and build better products: If your project systems are anti-fragile by structure, leadership and management, not only will bugs found by testers not be found in production: The overall quality of the product will be better!
And that, to me, is where the real business value of testing is!
Thanks to Jesper L. Ottosen for very constructive reviewing and commenting of drafts of this blog post.