发展中的认知偏差:它在真实环境中的表现
已发表: 2023-03-17我们今天生活的世界是建立在海量数据收集和处理之上的。 在某个时间点,公司发现通过足够大的数据集和正确的处理,他们可以找到关于客户的非常有价值的见解,并有可能利用这些见解。 对于我们这些在日常生活中依赖现代技术的人来说,感觉我们所做的几乎所有事情都以某种方式被跟踪和衡量。 我们现在拥有来自各地来源的大量数据。 归根结底,所有这些信息都必须在一个处理点结束——我们的大脑。 信息世界正在快速发展,人脑正在竭尽全力适应并与之一起成长,但它只能做这么多。
什么是认知偏差?
输入认知偏差; SimplyPsychology 的 Ruhl (2021) 将认知偏差描述为“由与记忆、注意力和其他心理错误相关的问题引起的无意识思维错误”。 她解释说,这是“我们的大脑努力简化我们生活的极其复杂的世界的结果。” 换句话说,当我们不断收到新信息时,我们的大脑试图通过做出假设来有效地处理这些信息,以帮助一切都变得有意义——其中一些是不正确的。
认知偏差如何出现在软件工程中?
将其置于软件工程的背景下,随着技术以指数速度发展,工程师需要快速学习,以便他们能够维护和更新他们构建的系统。 为了保持高效的步伐,做出假设变得不可避免,因为确定地了解任何事情都需要时间,而时间是有限的。 因此,能够识别并仔细考虑所做的假设成为工程师工作的一部分。 这通常在解决方案设计过程中完成,并伴随着对失败结果的潜在成本的分析。 然而,以这种方式做出的假设与由认知偏差产生的假设之间的区别在于,一个是有意识的,而另一个是无意识的。 所以为了防止后者,我们需要意识到它的存在。
作为一名工程师,能够识别自己的认知偏见非常有用,因为它有助于防止代价高昂的错误。 然而,了解如何培养这项技能可能不是自然而然的,因为它更受心理学的约束,而不是工程学。 值得庆幸的是,在这一领域已经进行了大量研究,并且可供公众使用。 组织可以使用此信息来设计和实施有用的开发实践,供工程师遵循,从而避免错误。
Chattopadhyay 等人。 来自俄勒冈大学的 (2020) 进行了一项名为“来自战壕的故事:认知偏见和软件开发”的研究,研究对象是一家初创公司的开发人员,他们的工作经验从 1 年到 23 年不等。 这包括观察开发人员执行他们的日常工作任务,同时大声说出和表达他们的想法; 本质上是一个结对编程练习,除了一个沉默的研究人员而不是一个开发人员。 在观察了 10 位不同的开发人员之后,研究人员编制了一份认知偏见类别列表以及由此产生的示例错误,如下表所示。
偏置类别 | 偏见 | 例子 |
---|---|---|
先入之见 | 确认,选择性感知 | 当其他数据结构更适合数据查询 API 时,P1 不断添加 hashmap。 |
所有权 | 宜家效应、禀赋效应 | P8 决定重用她的旧 CSS 文件,而不是 Bootstrap 项目中预制的 CSS 文件。 |
固定 | 锚定和调整、信念保持、Semmelweis 反射、固定 | P9 专注于在只需要重新加载环境时更改函数定义。 |
诉诸默认 | 默认、现状、沉没成本 | P2打开一个新的代码文件,将未使用的模板代码放在文件的顶部。 |
乐观 | 配价效应,无敌,一厢情愿,过度乐观,过度自信 | P4 为他的新聚合地图代码感到自豪,但在打印后出现错误。 |
方便 | 双曲线贴现、基于时间的偏差、吝啬的信息处理、代表性 | P2 只是简单地创建了满足他当前需求的过于冗长的代码,但却变成了拖慢未来进度的意大利面条代码。 |
下意识的行动 | 误导性信息,有效性效应 | P6 专注于修复错误消息中列出的文件,而不是导致整个系统错误的核心依赖文件。 |
幸福的无知 | 常态效应 | P10 出于习惯忽略了所有编译器警告,并没有注意到一个新的异常,详细说明了他构建失败的原因。 |
表面选择 | 对比效果、取景效果、光晕效果 | P4 没有先检查就直接从他的文档中复制并粘贴了一个函数到他的语法中。 |
记忆偏差 | 首要性和新近性,可用性 | P1 重用了一个在最近的任务中效果很好的设计模式,因为他可以很容易地回忆起代码的结构。 |
了解偏见以破坏恶性循环
作为一名开发人员,我确实在自己的经历中认识到了其中的一些错误。 如果有人问我为什么会犯这些错误,在我知道什么是认知偏见之前,我可能会说,“因为我认为这是正确的做法。” 当谈到无意识行为时,很难理解它从何而来甚至存在。 目前看似无害无害,但随着时间的推移,这些错误可能会导致严重的负面影响,因为坏习惯已经形成并且变得难以改掉。 如果任其发展,系统中会引入越来越多的错误,并且会耗尽资源来修复这些错误,而且还可能以不正确的方式进行——这是一个恶性循环。
拥有外部视角,就像一个沉默的研究者,可以更容易地发现这些行为。 如果观察者知道这些行为存在并且被允许在看到时指出它们,那就更有帮助了。 由于这些错误最终会影响业务,因此组织有责任了解快速生产的这些影响。 这种理解可以证明对实施适当程序和培训的投资是合理的。 尽管我只关注认知偏差如何出现在软件开发中,但可以想象这些偏差如何出现在其他部门。 本质上,任何希望在工作中富有成效的人都可以从理解认知偏差中受益。
有兴趣在这样的团队文化中进一步发展您的职业生涯吗? 查看下面我们的空缺职位,第一时间了解新机会。
Nhu Tran
Nhu Tran 是 Rewind 的一名软件开发人员。 Tran 是一位经验丰富的程序员,熟悉软件开发的整个生命周期,从设计到开发到实施再到测试。 当她不在屏幕前时,人们会发现 Tran 在冬天从山上爬下来,或者在夏天搭建舒适的露营地。