Saturday, November 3, 2018

Assume Failure

We all make mistakes. It happens to the best of us. We break our diet and eat a bunch of sweets until we feel sick. Or we set a resolution to write everyday but our calendar says we haven't written in our blog in a month. 

If we assume that we are not perfect and build imperfection into the model itself, we would do better.

So if I plan on going on a diet I should assume that I will have times where I will be peer pressured into enjoying deserts out with friends or have a late night pizza craving once in a while. That means my rules should allow cheat days. Or, maybe the real metric I should be tracking is how many days it takes me to get back on track after a miss.

That might be the most important thing. Psychologically, one day of breaking the diet might make us feel like we failed. We are incapable of staying on the diet. That might cause us to give up. But challenging ourselves to correct course after veering off keeps us in the game.

In my days of software development, almost every engineer will write code where the main way of using the feature will work. We call this the happy path. However, the excellent engineers are the ones who are able to see and plan for the failure cases ahead of time: "System A is supposed to get data from system B. But what should the user expect to see if system B unexpectedly goes down?"

When setting up a goal. The same thing should apply. Don't just think about the happy case. But consider what you plan to do when things don't go right.