Antifragility
When software is first written, often it is "fragile"; users can find keystroke combinations or inputs that "crash" the program. Many a web page has been hacked by people who have discovered ways to break the normal behavior. It takes a lot of work to build the software so that it is able to gracefully handle bad input or aggressive attacks. We need systems that are not fragile. The same is true with corporate systems. We need antifragile corporations.
All systems are fragile at first. This is true for corporations, computers, mechanical systems, and roads. When steam engines were first invented, they didn't have the same controls and designs that we have today. The result was a lot of boiler explosions, deaths, and other accidents. When the railroads were first built, they didn't have the same brakes, lights, signaling systems, or coordination between competing railroads. We had numerous runaway trains, head on collisions, and accidents when one train ran into another crossing its rails. Many a corporate structure was fragile when first developed and many failed.
In software development or systems invention, it takes a different mind set to write code that can be attacked or to build a system that is resilient.
Normally, when a person is writing code, the main emphasis is on how to make the desired function work. Some desired functions are quite difficult to get working and it can take quite a bit of thought to figure out some of the more challenging requests.
To write code that can be attacked requires thinking about the code in a different way. The first aspect is still to make sure that the code performs the function requested. The next aspect is to look at all the inputs to make sure that no input can cause a problem either in the program's execution or in the meaning of the data saved. After that, thought is given to the environment in which the program runs. Many times, a program will run well in one environment but fail in another. Finally, one has to think about how valid input might cause an undesired result because of timing or size of result (to avoid things like the Wall Street Flash Crash).
Similarly, in corporate life, we need to think not just about how things should be done, but also what humans will do with the directions we give them and how the outside environment affects us. Human beings fail in known and predictable ways; they make mistakes, they fail to understand, they come in to work after a night of partying, and some will actively try to cause problems. The environment in which we operate has many who want to fight us and prevent our success.
We do well to consider how to make our efforts "antifragile". Some factors include looking at how to protect the real corporate assets; the people and the data. We may ask what risks our people are taking both with themselves and with the corporate data. Techniques such as creating back up systems and testing methods of failure all help.
Our lives are safer when we plan on failures and how to handle them.