Nassim Nicholas Taleb has written a nice book recently about what one may gain from disorder. No wonder it became applicable to software development and that’s when internet blew up with Antifragile theories and practices that should either be implemented to or even replace Agile. Does this idea actually deserve its spot in software development? Well let’s figure that out together.
Our software is already Antifragile!
First of all we require to define antifragility Taleb was writing about in his book. Literally is something’s Antifragile it is gaining from disorder, meaning gaining value from unexpected and unpredictable events. There was a nice comparison made in the chapter about the cat and the washing machine showing the difference between something that is created by nature from things done by man. So a cat is born with muscles and they are constantly evolving and improving because are in use. If muscles are not used often they degrade. And something like a washing machine does not improve itself, it’s just working as built until it wears of and breaks.
But if we are to use such a definition software is closer to natural things as is improving more and more while used. Surely software does not update itself but it is supported by us and bugs are constantly being tracked and eliminated meaning more software uses does equal better quality.
Of course there is the other side of the coin as new features that are demanded if your software is used and is successful bring in new defects making the debugging process a constant. But still, within time when most curtail defects are defeated new features are not as terrifying as thy used to be, hence software does tend to evolve due gaining from disorder.
How does this relate to Agile?
Agile does also seem like Antifragile in a lot of ways as the concept is to reject relying on suggestions. Instead developers should take advantage of situations they end up in. Sounds a lot like Extreme Programming methodologies, doesn’t it? Tweaking and adjusting any idea makes the world go round not the theory itself. A tight schedule will indeed focus you on top priorities when a lot of less valuable things are being missed. That’s described as today’s lack of variability by Taleb. Sure those words could work out great in a perfect world, but our world way too unpredicted to be called perfect. Thus tight budgets and deadlines do not always allow developers to truly experience randomness of the development process. Is that a bad thing? Should we quit Agile and go for Antifragile?
I don’t think so. Things are working well as they are now as we are living in a world where time’s money and if you are not releasing your solution first you may end up broke and If you ask me there’s nothing to gain from being broke. And if developers are allowed to truly experience all that a project has prepared for them before the release they will get carried enough for your solution to never see the world in the first place. Are you prepared for that outcome?