What are Cognitive Biases?

A cognitive bias is a systematic thinking error that affects our decisions and judgments. They’re our brain’s shortcuts to simplify information processing but can lead to inaccurate conclusions.
Knowing these biases can enhance decision-making and outcomes in software development.
Let’s look at 7 cognitive biases which can impact us in the software development sector …
1 – Confirmation Bias:
This is the tendency to search for, interpret, favour, and recall information in a way that confirms one’s preexisting beliefs or hypotheses.
For instance, a developer might prefer a certain programming language or tool because they’re more familiar with it, not necessarily because it’s the best choice for the job.
2 – Anchoring Bias:
This is the tendency to rely too heavily on the first piece of information encountered (the “anchor”) when making decisions.
For instance during “Planning Poker” if a developer reveals their estimate too early, it can anchor the rest of the team to this initial number, thereby influencing the estimates of others and potentially leading to skewed results.
3 – Sunk Cost Fallacy:
This is the tendency to continue a behavior or endeavor as a result of previously invested resources (time, money, or effort).
For example, a software project is significantly delayed, over budget and it’s clear it can’t meet original expectations. Management still opts to continue investing resources, arguing “we’ve invested too much to stop now”. A more rational approach would be to cut losses and redirect resources.
4 – Availability Heuristic:
This is a mental shortcut that relies on immediate examples that come to mind when evaluating a specific topic, concept, method or decision.
For instance if a developer recently learned a new design pattern, they might be inclined to use that design pattern everywhere, even when it might not be the best fit. This is because the pattern is readily available in their mind.
5 – Dunning-Kruger Effect:
This is a cognitive bias in which people wrongly overestimate their knowledge or ability in a specific area.
In software development, this could lead to developers overestimating their ability to implement a feature or fix a bug, leading to poor time estimates and possible project delays.
6 – Hindsight Bias:
This is the tendency to see past events, especially unpredictable ones, as being predictable at the time those events happened.
If a project fails or is more difficult than expected, developers might claim they saw it coming, even if they were initially enthusiastic about the project. This bias can cause an oversimplification of the reasons the project failed, overlooking the complexity of factors involved.
7 – Not Invented Here Syndrome:
This is a tendency to avoid using or buying already existing products, research, standards, or knowledge because of their external origins.
For example a dev team might spend weeks developing functionality from scratch, even though a well-documented, thoroughly-tested open-source library exists that accomplishes the same task. It leads to unnecessary duplication of effort and time.
Have you seen these biases in your day to day work?