俄勒冈大学的 Chattopadhyay 等人 (2020) 进行了一项名为《战壕故事:认知偏见和软件开发》的研究,研究对象是一家初创公司的开发人员,他们的工作经验从 1 年到 23 年不等。这项研究包括观察开发人员在执行日常工作任务的同时大声表达自己的想法;本质上是一项结对编程练习,只不过参与者是一位沉默的研究人员,而不是一位同行开发人员。在观察了 10 位不同的开发人员后,研究人员整理了一份认知偏见类别列表,并列出了由此导致的错误示例,如下表所示。
先入之见 确认、选择性感知 当其他数据结构 葡萄牙 WhatsApp 数据 更适合数据查询 API 时,P1 不断添加哈希图。
所有权 宜家效应、禀赋效应 P8 决定重复使用她的旧 CSS 文件,而不是 Bootstrap 项目中预制的 CSS 文件。
固定 锚定和调整、信念保存、塞麦尔维斯反射、固着 当环境只需重新加载时,P9 专注于改变函数定义。
诉诸违约 违约、现状、沉没成本 P2打开了一个新的代码文件,并将未使用的模板代码保存在文件顶部。
乐观 价效应、无敌、一厢情愿、过度乐观、过度自信 P4 对自己新编写的聚合地图代码感到很自豪,但是在打印出来之后却出现了错误。
方便 双曲线贴现、基于时间的偏差、吝啬的信息处理、代表性 P2 编写的代码过于冗长,满足了他当前的需求,但却变成了拖慢未来进度的意大利面条式代码。
潜意识行动 误导性信息,效度效应 P6 专注于修复错误消息中列出的文件,而不是导致整个系统错误的核心依赖文件。
无知的幸福 常态效应 P10 习惯性地忽略了所有编译器警告,没有注意到详细说明其构建失败原因的新异常。
表面选择 对比效果、框架效果、光晕效果 P4 直接从他的文档中复制并粘贴了一个函数到他的语法中,而没有先检查它。
记忆偏差 首因和近因、可用性 P1 重用了在最近的任务中运行良好的设计模式,因为他可以轻松回忆起代码的结构。
摘自 Chattopadhyay 等人于 2020 年 5 月 23 日至 29 日发表的《战壕中的故事:认知偏见和软件开发》。检索自 https://dl.acm.org/doi/pdf/10.1145/3377811.3380330
了解偏见以打破恶性循环
我确实从自己作为一名开发人员的经历中认识到了其中的一些错误。如果有人问我为什么在知道什么是认知偏见之前会犯这些错误,我可能会说,“因为我认为这是正确的做法。”说到无意识行为,很难理解它从何而来,甚至很难理解它的存在。它目前看似无害,但随着时间的推移,这些错误会导致严重的负面影响,因为坏习惯已经形成,很难改掉。如果不加以控制,系统中会出现越来越多的错误,资源会被浪费在修复这些错误上,而且可能还是以错误的方式——这是一个恶性循环。
拥有外部视角,就像一个沉默的研究员,可以更容易地发现这些行为。如果观察者知道这些行为的存在,并被允许在发现时指出它们,那就更有帮助了。由于这些错误最终会影响业务,因此组织必须了解快速生产带来的这些影响。这种理解可以证明投资实施适当的程序和培训是合理的。虽然我只关注了认知偏见在软件开发中是如何出现的,但人们可以想象这些偏见也会出现在其他部门。基本上,任何希望在工作中提高效率的人都可以从理解认知偏见中受益。
有兴趣在这样的团队文化中进一步发展你的职业生涯吗?查看以下空缺职位,第一时间了解新机会。