When building a software system the biggest problem we face is change. Requirements change, technologies change, traffic on our web application changes, everything changes and our software that was perfect just a moment ago, now is broken and no longer suitable for our purpose.
The usual solution to this problem is to ignore it or, even worse, to resist changes. So we end up with a requirement change that requires the system to be completely rewritten or with a spike of traffic that will collapse it.
Antifragile software instead of fighting the change, embraces it and thrives in it!
How to build antifragile software:
- Avoid BIG decisions. Big decisions are huge architectural decisions that cannot change. They are instead a big problem because they change and everything has to change with them.
- Instead decide at the last responsible moment as you will have a better understanding of the problem.
- Keep your software simple. A simple system is easier to change. Use the Single Responsibility Principle as much as you can to build simple components.
- Develop for failure. Everything fails, design for it. A good way to achieve this is to make the people that develop a system support it.
- Treat your code like bottled water. The code that you write today will already be obsolete tomorrow.
- Your infrastructure will fail so be ready. Infrastructure should try to recover if any problems arise. Using the cloud is a good solution to this problem.
- Monitor your system and be prepared to react and learn from it.
- Use the right tools and the language for the job.
Building an antifragile system is a great challenge but it will help you and your company to evolve fast and to adapt to the world and, in the end, to provide a fantastic and ever-evolving user experience.