Category Archives: mental-models

Mental Models for Software Engineers: Improve Your Productivity by Using the Eisenhower matrix

One of the mental model that I find useful for prioritising my todo list is Eisenhower matrix named after US president Dwight D. Eisenhower. Dwight D. Eisenhower once said

I have two kinds of problems, the urgent and the important. The urgent are not important, and the important are never urgent.

Eisenhower matrix is a simple decision making tool for organising your tasks. You can use it to find the task you should act on first.

Continue reading

Mental Models for Software Engineers: Validate your Assumptions

In my last assignment, I was asked to mentor a software development team as part of the Dojo program. I am not a big believer in Training initiatives, but because Dojo program has a different format I decided to take up the assignment. The Dojo program involves working on a real project with the team, helping them embrace good software development practices, solving team’s real problems, and finally delivering a quality software. In this post, I want to talk about a lesson that I had shared with the team — the lesson which I named it as Validate your assumptions. Continue reading

Mental Models for Software Engineers: Feedback Loops

All real-world systems have some form of a feedback loop. Feedback loop is so called because output of the system is fed back into the system as input, increasing or decreasing its effect. The most common example of a feedback loop is audio feedback. I am sure most of you have experienced it at least once in your lifetime. Audio feedback loop occurs when a sound loop exists between an audio input(ex. Microphone) and audio output. Watch the video in case you want to experience it again. I am waiting….

Continue reading

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.

Continue reading

Mental Models for Software Engineers: Occam’s Razor

Occam’s Razor helps us choose between two or more explanations of a problem. It provides a useful mental model for problem-solving. A razor is a principle or rule of thumb that allows one to eliminate unlike explanations for a phenomenon, or avoid unnecessary actions.

One popular definition of Occam’s Razor is:

If we face two possible explanations which make the same predictions, the one based on the least number of unproven assumptions is preferable, until more evidence comes along.

This mental model help us look for explanations that are least complicated. It does not mean explanation has to be easy so that anyone can grasp it with limited effort but it means explanation can be logically reasoned without making too many assumptions.

Continue reading

Mental Models for Software Engineers: Hanlon’s Razor

It is difficult to be sanguine when people around you does something wrong with you. The wrong doing does not have to be extreme it could be as simple as a colleague not replying to your email when you expected them to reply. In many situations like these we tend to assume that other person does not want our good and they are doing it intentionally. The result of these explanations is that we strain our relations with people around us. We can’t read their mind but still we end up assuming what is in their mind. Hanlon’s razor mental model can help us overcome this bias.

Continue reading