软件开发中的10个认知偏差

最近,在和同事们讨论产品经理职责的时候,聊到了关于产品的定义,如果不能准确定义“产品”的时候,可以考虑其必要条件,即可没有用户的产品肯定是没有意义的。产品有了用户, 必然存在用户与产品的交互——UI。令我有些意外的是,得到的反馈是产品都要有web 页面。显然,这里存在着认知偏差。那么,软件开发中的认知偏差有哪些如何面对和解决呢/p>

认知偏差是影响产研人员的固有行为,可以会把软件产品的开发置于不正确的过程中,因此,有必要进行一些深入的学习和理解。认知偏差影响了产研团队的哪些行为呢论和学习的前提仍然是概念澄清,需要从认知偏差的定义开始。

799c41fbeefa1198045e657a59f75f31.jpeg

2.软件开发中的认知偏差

软件开发中,认知偏差可能是对最佳推理的系统性偏差,它影响我们如何发现、评价和记忆信息。以下,为了简练,直接用“认知偏差”指代软件开发中的认知偏差。

软件开发的产研同学对这种行为无法免疫,并且可能由于多个原因而表现出为认知偏差。例如,易用默认的认知偏差可能促使产研人员根据自己容易记住的知识来选择解决方案,简单的说, 就是先干容易做的,作自己容易产出的交付,但是对业务的核心诉求可能帮助不大。另一些认知偏差可能来自过往的经验,例如,坚持个人解决问题的风格,缺少了包容以及解决方案的多样性。

并非所有的认知偏差都必然导致负面结果,有时候参与者采取的行动少于预期,也可以带来积极的影响,例如,所谓的“傻人有傻福”。然而,在一个不受控制的环境中,认知偏差也可能造成重大的负面后果。在软件开发中,一般可把反向的操作作为负面后果,具体发反向操作包括那些以后需要撤销、重做或丢弃的任务和流程。

尽管可以确定认知偏差对软件开发的一些方面存在有害的影响,例如bug密度、软件需求的说明、设计原创性、功能设计等,但是,仍然无法中知道这些认知偏差怎么样地影响了产研人员的行为和决策。或许,可以通过归纳认知偏差的种类,然后尝试如何减少这种非最优行为。

5bba0006b67b4803ece253265366b323.jpeg

4. 如何面对认知偏差

认知偏差在软件开发中经常出现,例如,以技术债务来换取中短期交付的成果,三个月后,发现项目失败了!回顾过去的时候,发现有人改写了一些东西,因为那样做更容易,结果把一切都搞砸了。

记忆偏差、过度简化和先入为主可能是在人们经常感受到的认知偏差,而感受不深的认知偏差发生的频率也并不很低。尽管目前的软件开发流程和工具并不是为了避免认知偏差而设计的,但开发人员可能仍在使用它们来避免认知偏差。消除认知偏差可能是不现实的,但还是有一些方法可以减少认知偏差,或者减少认知偏差造成的负面后果。

4.1 系统方法

为避免成为认知偏差或其他错误的受害者,产研人员应该系统地探讨问题空间,并探索可用的解决办法和工具。这种不同任务参数的系统综述有助于避免偏见,例如先入为主、记忆偏差和固步自封 ,因为开发人员会更好地意识到潜在的坑,也可以提前考虑替代解决方案。

除了可供选择的解决方案之外,系统探索还可以帮助人们牢记“大局”,以大局为重。换句话说,它迫使产研人员更明确地欣赏和承认更大的目标,希望最大限度地减少他们在非核心诉求上分心的可能性。对开发人员而言,这可以通过促进使用现有的相关代码来防止所有权(CB2)等偏见,这有助于保持较大的代码库向后兼容。

4.2 文档阅读

在开始一项任务之前查阅文档也可以避免某些认知偏差,比如先入为主、记忆偏差和一亩三分 ,因为开发人员可以意识到解决问题的多种方法以及每个解决方案的缺陷。例如,开发团队的文档空间是记录库和包使用的指导方针,这些文件一般会指出如何使用某些代码以及避免陷阱。

关于如何处理错误及其严重程度的标准化描述文档也可以帮助开发人员更快地找到错误,从而克服诸如无知无畏和盲目乐观等认知偏差。

4.3 多维的视角

欣赏不同的视角,加上相关的反馈,可以帮助避免某些认知偏差,如先入为主 ,固步自封 和表面选择。接触不同的方法可以帮助产研人员打破认知“引导循环”,迫使他们重新考虑、评估并证明任何后续行动的合理性。例如,结对编程可能帮助避免表面选择的认知偏差。

4.4 流程优化

良好的软件工程方法,如频繁迭代和测试,敏捷软件开发等,可以在一定程度上帮助避免很多类别的偏见。对于开发人员而言,可以通过编码标准和使用标准库来避免一亩三分和易用默认等认知偏差。这也有助于开发人员找到合适的代码来实现重用。

4.5 有意义的回顾与分享

从现有的开发模式中抽出时间进行回顾与分享,可以帮助产研人员意识到有益的实践方法(比如清晰的代码) ,这可以避免一些认知偏差,比如先入为主和记忆偏差。

最后,有效的问题解决策略也可以帮助减少一些诸如固步自封 ,过度简化和潜意识行为等认知偏差。例如,收敛性思维可以确定一个问题的具体解决方案,帮助产研人员迅速地找到特定的解决方案,而发散性思维则探索问题的多种解决方案,帮助产研人员从一组备选方案中确定最佳解决方案。这样可以防止产研人员将注意力集中在单一解决方案上,从而减少了固步自封的认知偏差。

94b8f2873026930fa916af9dc67e5c22.jpeg

5 小结

认知偏差经常干扰软件的开发,损害产研人员在任务执行和投入时间方面的问题解决能力。应该让产研人员意识到,认知偏差对软件开发构成了重大威胁,而且可能比他们意识到的更加普遍,但有缺乏防止或帮助产研人员减少认知偏差的工具。本文整理出10种在软件开发中出现过的认知偏差,指出了每种认知偏差的可能表现形式和负面后果,并提出了5种方法来减少甚至避免这些认知偏差,希望对大家有所帮助。

【关联阅读】

  • AI系统中的偏差与偏见

  • 老曹眼中的敏捷开发

  • 产品的指标初探

  • “低代码”十问

  • 老码农看到的技术债务

  • 复杂性,科学,方法论/p>

  • 计算机体系结构的一知半解

  • 导致系统性能失败的10个原因

  • API设计中性能提升的10个建议

  • 远程软件工程师的10个最佳实践

  • 看一点逻辑学,试图理解一点真相

  • 关于软件开发,都应该知道的10个常识

  • 纸上得来终觉浅——成长的10条…

  • 阅读札记——创新与思维范式

  • 嵌入式开源软件的10大弊端

  • 软件架构的10个常见模式

  • 性能,10点系统性思考

  • IoT产品10个最佳实践

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91693 人正在系统学习中

来源:半吊子全栈工匠

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月18日
下一篇 2022年7月18日

相关推荐