A Tale from the Trenches: Cognitive Biases and Software Development

  title={A Tale from the Trenches: Cognitive Biases and Software Development},
  author={Souti Chattopadhyay and Nicholas Nelson and Audrey Au and Natalia Morales and Christopher A. Sanchez and Rahul Pandita and Anita Sarma},
  journal={2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE)},
Cognitive biases are hard-wired behaviors that influence developer actions and can set them on an incorrect course of action, necessitating backtracking. While researchers have found that cognitive biases occur in development tasks in controlled lab studies, we still don't know how these biases affect developers' everyday behavior. Without such an understanding, development tools and practices remain inadequate. To close this gap, we conducted a 2-part field study to examine the extent to which… 

Figures and Tables from this paper

The Influence of Cognitive Biases on Architectural Technical Debt
A series of semi-structured interviews with software architects was performed to identify how cognitive biases influence the occurrence of architectural technical debt and a set of debiasing techniques that can be used in order to prevent the negative influence of cognitive biases.
Is knowledge the key? An experiment on debiasing architectural decision-making - a pilot study
The preliminary results show that a simpledebiasing presentation reporting on the influences of cognitive biases can provide a debiasing effect, and a set of modifications that could result in a better effect are proposed.
A Systematic Literature Review on Trust in the Software Ecosystem
This study defines trust in the worldwide software ecosystem, including a theoretical framework that decomposes and signifies a theoretical understanding of trust, and provides a list of trust factors that can be used to assemble an overview of software trust.
Anchoring Code Understandability Evaluations Through Task Descriptions
This study investigated in a randomized, controlled experiment whether a hint about the difficulty of the code to be understood in a task description anchors participants in their own code comprehensibility ratings and shows that participants are significantly influenced by the initial scenario description in their assessment of code comprehensible.
Psychometrics in Behavioral Software Engineering: A Methodological Introduction with Guidelines
An introduction to psychometric theory for the evaluation of measurement instruments for SE researchers and presents guidelines that enable using existing instruments and developing new ones adequately, as well as conducting a comprehensive review of the psychology literature.


Maintaining mental models: a study of developer work habits
It is found that many problems arose because developers were forced to invest great effort recovering implicit knowledge by exploring code and interrupting teammates and this knowledge was only saved in their memory.
Cognitive Biases in Software Engineering: A Systematic Mapping Study
This paper systematically maps, aggregates and synthesizes the literature on cognitive biases in software engineering to generate a comprehensive body of knowledge, understand state-of-the-art research and provide guidelines for future research and practise.
Analyzing the Effects of Confirmation Bias on Software Development Team Performance: A Field Study during a Hackathon
This study analyzed the relation between confirmation bias levels of development teams and their performance and employed Reich and Ruth’s categorization scheme and found that each participant belonged to one of the following categories based on his/her written test outcomes: Falsifier, Verifier, Matcher and None.
Software Development Estimation Biases: The Role of Interdependence
It is proposed that this connection between estimation bias and developer dimensions may be enabled by an activation of one's self-construal when engaging in effort estimation, and a connection between a more interdependent self- construal and increased search for indirect messages, lower ability to ignore irrelevant context, and stronger emphasis on socially desirable responses.
Empirical analyses of the factors affecting confirmation bias and the effects of confirmation bias on software developer/tester performance
Having strong logical reasoning and hypothesis testing skills are differentiating factors in the software developer/tester performance in terms of defect rates, and these skills would improve the prediction performance of learning based defect prediction models which have been building over a decade.
Novice software developers, all over again
A two-month in-situ qualitative case study of new software developers in their first six months working at Microsoft, shadowing them in all aspects of their jobs: coding, debugging, designing, and engaging with their team, and analyzed the types of tasks.
The Work Life of Developers: Activities, Switches and Perceived Productivity
A monitoring application was deployed at 20 computers of professional software developers from four companies for an average of 11 full work day in situ and found that developers spend their time on a wide variety of activities and switch regularly between them, resulting in highly fragmented work.
Software developers' perceptions of productivity
It is found that developers perceive their days as productive when they complete many or big tasks without significant interruptions or context switches, and such apparent contradictions in the findings are analyzed to propose ways to better support software developers in a retrospection and improvement of their productivity.
Information Needs in Collocated Software Development Teams
This work analyzed software developers' day-to-day information needs at a large software company and transcribed their activities in go-minute sessions to identify information types and cataloged the outcome and source when each type of information was sought.
The life-cycle of merge conflicts: processes, barriers, and strategies
It is found that developers rely on reactive strategies of monitoring for merge conflicts and defer responding to conflicts based on their perception of the complexity of the conflicting code and that deferring affects the workflow of the entire team.