Why should you design a system which fails?

Akash Deep


This statement looks counter intutive, right? Why would someone design a system which fails? All of us want our processes and systems to succeed. Well, reality is quite different. If you are not designing your systems to fail, then you are at a higher risk of getting unpredictable failures and unknowingly you can accumulating huge amount of technical/process debt.

Designing a system which fails is the only way to build scalable and predictable processes.

Consider the case of coding, if the compiler accepts a code with syntax/logical errors, then the programmer will never know if she/he has made any error in the code and it will be difficult to debug the error in future.

If your body stops sending signals after eating unhealthy food, then you will never know how much junk you are collecting in your body.

If cash counter machine/clert in the bank does not fail with counterfeit bills/cheques, then bank will end up with very high number of counterfeit currency and will also run huge litigation risk of fraud cases.

In Toyota assembly line, entire production line used to stop if any specific work station stopped processing because work stations down the line were dependent on output of previous work stations. This was the only way for Toyota to run a lean production system with minimum inventory.

Consider the process design like designing an electricity fuse. Only purpose a fuse exists for is to fail whenever there is overcurrent. If the fuse does not fail, then it is not serving its duty and you are running a risk of potential damage in your electrical appliances.

Having predictable failure points in your processes will allow you to easily diagnose the cause of failure and it will allow you to create scalable systems.