We try to avoid failures as much as possible. But there are certain situations where failures can be beneficial.
For example take a situation where things are not going according to the best possible path but it it is beyond your control to take it back to the correct path. There are few alternatives in such situations.
- One option is to fight all out and try to get it back to the track.
- Second option is to let it go & brace for the disaster.
- The third option is to led the way towards a small & controlled failure.
The purpose of this discussion is to explore the third option. First let’s look at the first & second options. If you use the first option & fight with all guns blazing, it would require significant amount of energy and time. After all it may be that you are fighting a losing war.The second option can lead to a total disaster & the chance of revival can be slim.
What is a “Controlled failure”?
If you look at the third option next, there are many advantages. My definition of controlled failure is that you let certain variables to fail. Those variables are carefully selected as well as limited.
For example consider a situation where a project team is pushed to deliver under unrealistic deadlines over and over. You are trying to explain to the decision makers about the risk but you hear back every-time “our customers demands it and without meeting those demands company will not survive“. There are many variables to this situation. Examples are “Code quality”, “Functional quality”, “Developer burnout”, “Penalty of missed deadlines”, etc.
So in a controlled failure you open only the cards (variables) you want to play. For example it can be that you select the “Code quality” variable and let a internal deadline to be missed. (Normal option would be to ask the developers to work in another weekend). This can lead to decision makers to realize the importance of adjusting unrealistic deadlines and start working on them.
The important aspect of controlled failure is the word “Controlled“. The failure should be such that it does not lead to significant loss and should be possible to control the situation through non-failed variables.
Some further examples for situation where controlled failure may help
- The request to improve code quality being ignored for a period of time
- Request for full regression cycle being ignored
- Certain teams are not preparing for the sprint demo & review & come up with all the excuses
- In personal life example, kids are ignoring the instruction to go to bed early
The natural tendency of a leader is to work with the situation and get it back to track. It takes some considerable energy and situations where there are multiple of such scenarios. It requires leader’s heroic effort & it is not a sustainable strategy.
So setting up a controlled fire can help the situation!
For example connecting to above situations
- Let the next change request to over-run (than working late to finish on time) due to brittle code
- Let the staging release (before the production release) to have bugs which are noticed by the customer
- Let an important demo to fail
- Let the kids to take their own time to go to bed but get them to wake up exactly to the time you want next day
Failures are good on long run if you learn the lesson out of it. A controlled failure will help to learn the lesson and “Control failures” are an important tool in management.