一、邓宁-克鲁格效应
1、内容
邓宁-克鲁格效应表明,没有经验的人往往会高估自己的能力,而有经验的人往往会低估自己的能力。
你不擅长某件事,但你会认为你擅长它。如果你擅长某事,你认为你不擅长 - 这可能导致冒名顶替综合症,这让你怀疑自己的能力,以至于你在其他具有相似技能的人中感到不舒服 (害怕别人认为你说的不正确)。
2、应用在开发中
有助于消除邓宁-克鲁格效应和冒名顶替综合症的一种做法是结对或群体编程。 你不是独自工作,沉浸在自我怀疑或优越感中,而是与其他人密切合作,边工作边交流思想、学习和教学。
2、帕累托法则(80/20 法则)
1、内容
帕累托法则指出,通常 80% 的结果来自 20% 的原因。数字 80 和 20 无论如何都不是精确的,但该原则的总体思路是结果通常分布不均。
2、应用在开发中
我们可以从帕累托法则中获得的主要好处是专注。 它可以帮助我们专注于重要的事情(20%),而不是在不重要的事情(其他 80%)上浪费时间和精力。 不重要的事情对我们来说往往很重要,因为这样的事情总是有太多(而且看起来很紧急) 。但是最好的结果往往是通过关注重要的少数来达成的。
在软件开发中,我们可以使用它来专注于构建正确的功能,例如:
- 专注于实现 80% 产品价值的那 20% 的产品功能。
- 专注于导致 80% 用户使用异常的那 20% 的错误。
- 专注于实现 80% 的产品功能需要的那 20%总构建时间
- ……
只要问“现在最重要的事情是什么?”就可以帮助建立下一个最重要的事情,而不是下一个最紧急的事情。
顺便说一下,敏捷和 DevOps 等现代开发方法有助于获得这种关注!具有定期用户反馈的快速迭代允许对重要事项进行数据驱动的决策。诸如基于主干的带有功能标记的开发之类的实践可以帮助软件团队实现这一目标。
3、帕金森定律
1、内容
帕金森定律指出,工作总是会填满分配给它的时间。如果你的项目在两周内有截止日期,则该项目将不会在此之前完成。可能需要更长的时间,是的,但绝不会少于我们为它分配的时间,因为我们正在用不必要的工作或拖延来填补时间。
2、应用在开发中
帕金森定律的主要驱动因素是:
- 拖延症(“截止日期太远了,所以我现在不需要匆忙……”)
- 范围蔓延(“当然,我们可以添加这个小功能,它不会花费我们太多时间......”)
为了对抗拖延,我们可以在几天而不是几周或几个月内设定最后期限。 比如说在接下来的 2-3 天内需要做什么才能朝着目标前进?一个(健康的!)截止日期可以给我们足够的动力,不要陷入拖延症的低谷。
4、霍夫施塔特定律
1、内容
霍夫施塔特定律指出“它总是比你预期的要长,即使你考虑到霍夫施塔特定律”。即使你了解了这条定律,并增加了项目的时间分配,它仍然会比你预期的要长。 这与帕金森定律密切相关,即工作总是会填满分配给它的时间。 只是霍夫施塔特定律说它填充的时间超过了分配的时间。
2、应用在开发中
这条定律得到了心理学的支持,我们容易犯所谓的“计划谬误”,即在估算工作量时,我们通常不会考虑所有可用信息,即使我们认为我们已经考虑了。
在软件开发中(以及任何其他基于项目的工作,真的),我们人类的乐观主义占了上风。估计几乎总是过于乐观。 为了减少霍夫施塔特定律的影响,我们可以尝试尽可能客观地进行估计。 写下关于项目的假设和事实清单。将每个清单元素标记为假设或事实,以使数据质量可见并管理预期。不要依赖直觉,因为每个人的感受都不一样。写下估算值,让你的大脑思考它们。将它们与其他人的估计进行比较,然后讨论差异。
5、康威定律
1、内容
康威定律指出,组织创建的任何系统都将类似于该组织的团队和沟通结构。如果你有 10 个团队在一个系统上工作,你很可能会得到 10 个相互通信的子系统。
2、应用在开发中
我们可以应用所谓的逆康威机动:创建最能支持我们想要构建的系统架构的组织结构。 没有固定的团队结构,而是要有足够的灵活性来创建和解散团队,这对系统的当前状态是最好的。
6、布鲁克定律
1、内容
在经典著作“人月神话”中有句名言:为延期的项目增加人力会使项目更晚。尽管本书讨论的是软件项目,但它适用于大多数类型的项目,甚至是软件开发之外的项目。 添加人员不会提高项目速度的原因是项目的通信开销随着添加到项目中的每个人呈指数增长。
2个人有1条通信路径,5个人已经有120条可能的通信路径。新人安顿下来并确定他们需要的沟通路径需要时间,这就是为什么在项目中添加新人时,延期的项目会更晚。
2、应用在开发中
更改截止日期,而不是将人员添加到已经迟到的项目中。 对在软件项目中增加新人的期望要切合实际。