DEV Community

Cover image for The great mental models - Book notes (Engineering view)
Jorge Tovar
Jorge Tovar

Posted on • Updated on


The great mental models - Book notes (Engineering view)

The great mental models

The Great Mental Models: General Thinking Concepts

"The old saying goes, 'To the man with a hammer, everything looks like a nail.' But anyone who has done any kind of project knows a hammer often isn't enough."

This book aims to give you the ability to change perspective by applying knowledge from different disciplines.

We need to remove our egos be aware of the limits of our perspective, and be close to the result of our decisions.

Maps are not the territory - All models are wrong, but some are useful

Maps like many parts of the software are just abstractions of the real world with some limitations, but at the same time it allows us to navigate easily regarding the purpose of the abstraction

Circle of competence

  • We need to learn at least the basics of the realm we are operating in
  • talk to experts: follow them on Twitter, Open-Source Software
  • Falsifiability: use TDD to validate your assumptions

First principles

Socratic Questioning

  • Origin of the ideas
  • Challenging assumptions
  • Looking for evidence Use the 5 Whys: To debug a software or organization problem

Thought experiment

  • Ask a question
  • Conduct background research
  • Construct hypothesis
  • Test with THOUGHT experiments
  • Analyze outcomes and draw conclusions
  • Compare hypothesis and adjust accordingly

Sometimes the cost of replicating or changing something is just too high. we can replicate some engineering scenarios in our minds and let the magic happens

Second-Order thinking

  • Realize the long-term interests
  • Identify the effects of the effects

What are the consequences of bad quality software?
What happens if we add more testers?
We are hiring 100 new engineers... but the onboarding process is poor

Probabilist thinking

  • Bayesian thinking: using a base rate of information (taking outside information)
  • Fat-tailed curves: different from bell curves and normal distribution, something to be aware of
  • Causation vs Correlation

In estimation: Do we have a previous model of how long it will take? Can we provide a worst, media, and best scenario?


  • Approach the situation from the opposite end of the natural starting point
  • Set your assumptions
  • Identify what are you trying to avoid

What if we need to be flexible with a customer request?
Training to increase retention?

Occam's razor

  • simpler solutions are more likely to be correct than complex ones. "When you hear hoofbeats, think horses, not zebras"

Don't over-engineer. Senior developers tend to create simpler solutions

  • Passes the tests
  • Reveals intention
  • No duplication
  • Fewest elements

Hanlon's razor

  • Don't attribute to malice that which is explained by stupidity. It's less likely for two things to be true than one (less)

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.