Discover more from Code Crafters by Anas
Embracing Antifragility in Tech
Have you ever read a book that completely changes how you see the world? That's exactly what happened to me when I read "Antifragile" by Nassim Taleb.
It's a wild ride of a book - Taleb doesn't hold back in his opinions and isn't afraid to call out people he thinks are full of it. But that's also part of what makes it such a fun read.
The world is full of randomness, and the best way to thrive in it is by being antifragile. Antifragility is the idea that some things not only survive shocks and unexpected events but actually benefit from them. It's the opposite of fragility when something breaks under pressure.
What does this have to do with technology? The answer is everything.
The tech industry is all about change and uncertainty - new technologies and approaches are constantly popping up. Technology is the result of antifragility, exploited by risk-takers in the form of tinkering and trial and error, with nerd-driven design confined to the backstage.
We are largely better at doing than we are at thinking, thanks to antifragility. I'd rather be dumb and antifragile than extremely smart and fragile, any time.
One of my favorite takeaways from the book is that trial and error is the best and most consistent success strategy. Think about it, when you experiment and try things out, you get hands-on practice.
Some people might argue that theories and formulas make things work, like how airplanes fly because of Aerodynamics and Aerospace engineering. But innovation is never that neat and tidy. It's messy, it's chaotic, and it's all about trial and error.
Scranton showed that we have been building and using jet engines in a completely trial-and-error experiential manner, without anyone truly understanding the theory. Builders needed the original engineers who knew how to twist things to make the engine work. Theory came later, in a lame way, to satisfy the intellectual bean counter. But that's not what you tend to read in standard histories of technology: my son, who studies aerospace engineering, was not aware of this."
Taleb presents an even more extreme example: geometry in Mathematics. In school, we learn that ancient Greeks invented geometry and that once they had those magical formulas, they could do extraordinary things.
But this is another case of history being taught wrong. People were building houses, bridges, pyramids, temples, and other complex structures long before geometric theories were formally established.
But Don't Take Foolish Risks
Trial and error doesn't mean just making random guesses. That's where the Barbell strategy comes in. It's all about finding the right balance between two extremes - playing it safe in some areas while taking small risks in others. This way, you're exposed to the potential upside without risking everything.
This represents playing it very safe in some areas (staying robust to negative black swans), and taking a lot of small risks in other areas (open to positive black swans), to take advantage of antifragility. While avoiding being "in the middle."
If you put 90% of your net worth in cash or blue-chips and use the other 10% for highly aggressive and risky investments, you can never lose more than 10% of your net worth, but you're exposed to the massive upside.
Or, you can take a very safe day job while you work on your literature. You balance a writing career's extreme randomness and riskiness with a safe job.
Embracing Risk and Uncertainty in Software Engineering
Now for the folks in tech, let's talk about something that we all know and love: uncertainty and randomness in our work and career. I've come to realize that certain mental models can help us navigate these murky waters.
First, embracing uncertainty and randomness can lead to more creative and innovative solutions. Instead of being overly focused on predicting and planning for every possible outcome, being open to unexpected developments can lead to unexpected breakthroughs.
Second, valuing and encouraging experimentation and failure can lead to faster learning and improvement. This is especially important in the rapidly changing field of software engineering, where new technologies and approaches are constantly emerging. By embracing the potential for failure, engineers can take more risks and try new things without being overly cautious.
Third, focusing on building robust and flexible systems rather than trying to anticipate every possible use case can lead to more resilient and adaptable systems. This is particularly important in software development, where requirements and user needs can change rapidly.
This concept is especially relevant when faced with a situation like the one in my current project with a close friend. We are still building the MVP and have leads on potential customers. Some even already became paying customers. But we are facing a difficult decision on how to move forward. There are some options, but each has unique target markets meaning that we might lose significant potential growth if we choose the wrong one.
But maybe, we have to take the bull by the horn and take whatever option has more potential upside. Take the risk of being wrong, but just enough that won't destroy the business.
Maybe, we just have to embrace the risk and uncertainty.