Short list of cognitve biases realted to software engineering.
Anchoring. When a particular piece of information - usually the first one acquired on the subject - influences decision making decisions or estimates.
A team is distributed across two separate offices. Both teams have a large whiteboard for sprint planning. In the middle of office A’s whiteboard it says “What can we finish in the next two weeks?“,but office B’s whiteboard says “two days”. Now suppose the team has a virtual meeting to estimate the time needed to build a specific feature, which will take about a week. Anchoring bias explains team members in office A giving higher estimates than team members in office B.
Planning fallacy. A tendency to underestimate task-completion times due to optimism. When you estimate the duration of a given tasks, you overlook possible setbacks. It only affects estimations about one’s own task.
Hofstadter’s Law: “It always takes longer than you expect, even when you take into account Hofstadter’s Law”.
Suvivorship bias. When you concentrate on the people that were succesful in some selection (survivors) and overlook the ones who failed. You also tend to concentrate less on the people who failed due to lack of visibility.
You hear about Mark Zuckerberg’s success but you don’t hear it from the people who tried to build a social network and failed.
Confirmation bias. The tendency to pay undue attention to sources that confirm our existing beliefs while ignoring sources that challenge our beliefs.
For example, developers tend to write unit tests expecting data to always be consistent and the program to work “the way it is supposed to work”. This impairs the one of the main goals of testing, which is to reveal failures.
Framing effect The tendency to give different responses to problems that are essentially the same.