Building a system to learn from failures
Do not fail. We all have been raised by parents, teachers, and society by that. If you ever fail at some point in life, you might have belittled for that or if you are in a managerial position, blame someone for the mistakes. Everybody fails at some point in life. By the time we were there, we should bring ourselves up, learn from it, and make sure we do not put ourselves in the same situation again. Failure is indeed a stepping stone, only if each stone is learning to move up to the next.
A system to learn from failures - "5 Why"
Eric Ries, the author of Lean startup, uses these 2 rules for him and his team - 1. Be tolerant of all mistakes the first time. 2. Never allow the same mistake to be made twice. The first rule is about being compassionate about making mistakes. The second rule is about taking action to prevent it next time. We have talked about the importance of the system to choose valuable tasks. Also, we need a system to focus on the mistakes that will impact us most, avoiding working on mistakes that are not so important. "5 why" is a technique used to find the root cause of a failure and also create the opportunity to learn and make an action. The technique is to question five why repeatedly on a problem that impacts a lot. This also opens up room to face the unpleasant truth about ourselves which we must confront and try to provide proportional investments to learn from it.
"5 Why" - Example Scenario
Be it any mistakes we might encounter from personal productivity to a development bug - "5 why" helps us to identify the root cause. Below is a scenario that happened in IGN when they encountered a production issue on editing or posting comments. Asking 5 why opens an opportunity for improvements in each stage. And also two outputs in each stage - learning & doing.
- Why was the edit feature not working ? Reason - API is throwing 500.
- Why was the API throwing 500 ? Reason - ruby gem added was incompatible with others. Fix - Remove the gem
- Why was the gem incompatible ? Reason - Added a version of gem in addition to existing version, app used incorrect. Fix - Use bundler
- Why added in production without testing ? Reason - Didn't think needed for updation. Fix - Add a functional test to API to capture this
- Why are we deploying weekends ? Reason - We used to wrap the sprint by deploying at the end. Fix - Avoid deployments on weekends as there will be fewer resources available for support.
- List down the most recent thing you have failed and cost you a lot
- Try to apply the five why technique. We have added a spreadsheet template that you can use to validate and identify the root cause
- List the incremental action items in each stage and make sure what you should have done, if this should not be here the next time.
- In times you have failed, remember you are not alone. There are lots of people out there who can help you. Feel free to share & raise feedbacks.