Mastering the Mind: Top 3 Mental Models Every Software Engineer Should Embrace

a man standing in the middle of a desert

As software engineers, we are always occupied with building things, writing tests, making design decisions, or scoping out projects. It is not uncommon to miss out on important things just because we are in the moment or when things get heated.

Just as we use tools, paradigms, and techniques to write our software effectively, we need tools, paradigms, and techniques for our minds to think and make decisions effectively.

These 3 mental models are abstract concepts, just like the world around us. They will (like me) make it easy for you to navigate the terrain of productivity when building software.

Parkinson’s Law

Parkinson’s Law states that ‘work expands so as to fill the time available for its completion’.

It is attributed to Cyril Northcote Parkinson, a British historian, and author. It states that people have a tendency to work faster, smarter, or prioritize better when imposed with a shorter deadline.

It simply means allowing ourselves to take a week to do a small task, it will take a week.
Next time you have a task at hand, try challenging yourself with a stricter deadline and see how it goes.

Parkinson’s Law true essence is not time management but the power of constraints. Adding constraints to the task or situation at hand forces us to be more creative and smarter with our approaches. e.g. Eating in a smaller plate automatically makes us eat less.

Limitations:
This is not true 100% of the time. Some tasks simply take longer. Cutting some tasks short can result in degraded quality and/or put the people working on them under high-level stress.

As an exercise, reflect on the recent tasks that you did and if you really needed that much time (80% of the time the answer would be no. Why 80%? Check out below).

80/20 or Pareto’s Principle

What if I tell you eighty per cent of issues/bugs are coming from twenty per cent of your codebase? Or only twenty per cent of the product features are adding eighty per cent of the value to the product?

This pattern of inequality is called the 80/20 or Pareto principle. It was discovered by Italian economist Vilfredo Pareto in 1897.

To put it simply, 80% of the output is the result of 20% of the input.

Pareto happened to be looking at patterns of wealth and income in nineteenth-century England. He found out that most of the income/wealth went to a minority. He also figured out the relationship to be mathematically consistent between the proportion of people and the income (i.e. 80/20).

He went on to discover the same mathematical relationship irrespective of the time period and the country and not just with wealth but the same pattern can be seen in all sorts of areas. For example, in an internal combustion engine, eighty per cent of the energy is wasted in combustion and only twenty per cent of the energy gets to the wheels.

We are often made to believe that the results we get in life are directly proportional to the effort we put in, with Pareto’s principle we now know it is not true at all.

With Pareto’s Principle, we can align ourselves with the things that matter. Figure out where most of the problems are coming from in your project and devise a remedy for it, where most of your time is going into, and try to optimize it as much as possible.

Fail-Fast & Iterative Development

This mental model encourages us to embrace failure as a learning opportunity.

Failing fast and iterating on that tightens the feedback loop. It allows us to identify issues early in the development process through continuous testing and iteration.

In software engineering, failing is cheap in comparison to other forms of engineering. We should take advantage of this to learn faster and build more robust products.

Adopting these mental models

These mental models are productivity-related concepts. Once applied properly, they’ll help you improve your software engineering skills and immensely improve your overall productivity.

1 comments On Mastering the Mind: Top 3 Mental Models Every Software Engineer Should Embrace

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar