Mental Models for Software Engineers: Regret Minimization Framework


I became aware of Regret Minimization Framework quite recently while reading a random post on the web. With in that timeframe it has helped me take a couple of big decisions with clarity. Had I known this earlier I could have avoided taking few bad decisions.

Regret Minimization Framework is a mental model that wants you to project into the future and look back at your decision so that you can quantify which of the options could lead to minimal regret. Then, you should go with the option that will lead to minimum regret.

You start with the question: In X years, will I regret not doing this?.

Jeff Bezos used Regret Minimization Framework to decide whether he should go for startup that sells books online or not. This mental model helped him to take action and start Amazon.com. He talks about it in a video published in 2008.

The key text from the video is:

I knew that when I was 80 I was not going to regret having tried this. I was not going to regret trying to participate in this thing called the Internet that I thought was going to be a really big deal. I knew that if I failed I wouldn’t regret that, but I knew the one thing I might regret is not ever having tried. – Jeff Bezos

The best part of this mental model is that it makes you think from the future. It is always easy to track back decisions when looking back. Steve Jobs once said You can connect the dots looking backward not forward.

Another question that you can also ask yourself is this decision helping me reach my full potential. Most of us do not want to die without achieving our full potential but it still happens to majority of us.

I want to be thoroughly used up when I die, for the harder I work, the more I live. I rejoice in life for its own sake. Life is no ‘brief candle’ to me. It is sort of a splendid torch which I have a hold of for the moment, and I want to make it burn as brightly as possible before handing it over to future generations. – George Bernard Shaw

One question that might come to mind is how far in future you should go to take a decision. I think there is no right answer here. It all depends on the impact of the decision on your life. For decisions like going for a startup or whom to marry you should look at your decision when you will be close to 80 years old but for decisions like should I ask for a raise to my manager timeframe could be shorter. In my view Regret Minimization Framework is more useful when decisions need to be made on big, and hard life-altering, situations.

Applications of Regret Minimalization Framework in Software Engineering

I think the best place to apply Regret Minimization is software architecture decisions. I like Martin Fowler’s definition of software architecture.

Software architecture is those decisions which are both important and hard to change. This means it includes things like the choice of programming language, something architects sometimes gloss over or dismiss. Both aspects land squarely on the economics of software development. Said another way, software architecture is those decisions which, if made poorly, will make a project either succeed or fail, in a needlessly expensive way.

You can apply Regret Minimalization Framework to reason about choices you made in software architecture. As a software architect, you project yourself to a time when application is used by users. Think about decisions will keep you awake at night the most? These are the decisions you should think hard while designing a system.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s