为什么最后期限和冲刺对你有害

在一个软件开发项目中,找到一个适合该项目的流程是很重要的。良好的流程可以帮助开发人员、经理、客户和用户。一个伟大的流程应该改善每个人的日常生活,帮助避免滋生工作问题或者个人生活健康问题。 在本文中,我主要关注持续多年的长期敏捷项目,这些原则或观点可能也适用于较短的项目。

 团队中的角色  

软件项目团队通常由软件开发人员、用户体验设计师、图形设计师和产品经理组成。角色可以大致分为两部分:开发和产品经理。产品经理引导开发团队在正确的时间构建“正确的东西”,并尝试确保产品的持续相关性。另一方面,开发团队决定如何构建“正确的东西”以及如何交付它。除此之外,开发团队还负责确保软件高可用,并验证产品的总体质量。 

 简而言之:

 产品经理:我们应该建立什么?我们什么时候建?

 开发:我们应该如何构建它?我们应该如何交付? 

 冲刺会造成短周期的最后期限

 近年来,敏捷开发越来越受欢迎。它还使Scrum作为一种流程方法而出名,以至于有些人将它用作敏捷开发的同义词。 Scrum中的一个关键元素是冲刺。冲刺是一种时间限制的开发迭代(通常持续一到三周),在此期间,团队将重点放在冲刺开始时计划的一组任务上。在冲刺计划中,团队从积压工作(工作队列主要由产品管理部门管理)中获取最高优先级的项目,对它们进行计划,并承诺他们认为可以交付的工作量。在冲刺结束时,通常会有一个关于所做工作的回顾会议。 该系统为项目生成多个短期截止日期。本质上,不管项目的长度如何,冲刺都会迫使人们每天工作的最后期限。 对冲刺的承诺会产生多个问题。为了保证工作量,团队现在需要评估以下因素: 

 每项任务要花费多少精力?

 这段时间有人要请事假吗?

 每个人都是百分之百地致力于项目相关工作还是有其他的责任?培训?这周?还是一直? 

 在冲刺中会有多少病假?

 团队在冲刺过程中会遇到多少个错误?

要解决这些问题有多困难?

 是否有人离开或加入团队? 

 冲刺期间有公司活动吗? 

 国家假日会影响短跑吗? 

 是否会出现硬件问题?

 虽然这些评估可以通过统计数据变得更容易:“一般来说,我们每个冲刺都要完成这么多的工作”,等等。底线是:在不同的冲刺中,有大量的变量导致输出变化。有时你达到了目标,有时你没有。但你确实有一个目标,一个最后期限。

 一些人认为冲刺承诺是不必要的(在某种程度上忽略了scrum过程),并且冲刺不应该被认为是最后期限。我在理论上喜欢这个想法,但在实践中,人们最终会困惑地冲向最后期限,不管目的是什么。尤其是当冲刺承诺在默认情况下被认为是Scrum过程的一个重要部分时。 即使是“sprint”这个词的语义概念对于一个长期的项目也是不明智的。它暗示了一种100米短跑的心态,尽可能快地跑完终点线。与以稳定的速度跑完50公里相比,一个长的软件项目要准确得多,在这个过程中,任何中点的过度运动都会破坏整个跑步,或者把你送到医院。在长项目中,人们可能甚至不知道终点线在哪里。冲刺似乎更像是一个营销术语,而不是一个首先作为工作方法的术语。

 人类健康的最后期限  

最后期限对人类有多种影响。尤其是当他们接近的时候。其中一些包括健康风险,如压力增加、脑细胞丢失、创造力下降、消化问题、头痛等。当最后期限接近时,人体可能最终会感觉到对其生存的威胁,并触发战斗或逃跑反应。(来源:今日心理学,最后期限的黑暗面) 其他影响包括动机诱惑。有研究表明,最后期限对工作动机有积极影响。我会争辩说,存在着其他更有价值、破坏性更小的动机诱惑。只需列出几项即可开始: 

 创造一个很棒的产品

 高质量交付

改善人们生活质量

帮助人们解决问题 

 让人们快乐 

 最后期限甚至会破坏其他激励因素产生的激励。(来源:今天的心理学,最后期限是如何被谋杀的) 此外,最后期限造成的压力“建立了一个恶毒的反馈循环,让一个人依赖于最后期限,就像一个喝咖啡的瘾君子去拿他们早上的咖啡一样。”对一些人来说,达到最后期限会让人兴奋不已,以至于下次他们可能会推迟一项任务,直到他们出现打架或逃跑的身体症状。反应。(来源:今日心理学,最后期限的黑暗面) 

 软件项目的最后期限 

 你以前听过多少次这些解释?

 我们不得不跳过测试… 

 我们不得不增加技术债务… 

 我们无法修复代码… 

 我们得快点… 

 我们设计得不好… 

 我们得走捷径… 

 这些句子常常以……结尾,因为我们没有足够的时间。为什么人们没有时间?可能有多种原因,但最终,它往往回到最后期限,对吗?  

人们会试图偷工减料,生产低质量的产品,并在不顾自身健康状况的情况下冒险,以达到最后期限。(来源:IShn,截止日期可能会损害安全并促进风险承担

 截止日期快到了,我们迟到了,现在怎么办? 

 如前所述,变量通常会导致不可预测性,项目最终会错过最后期限。那么现在能做什么呢?

 走捷径(降低质量)

 加班加点 

 跳过或禁止团队其他职责,如培训 禁止事假

 减少功能的数量

 优化功能范围 

 雇佣更多团队成员 

 移动最后期限

 偷工减料通常会损害产品质量并产生大量的技术债务。这类债务的利率非常高,项目迟早要偿还。最坏的情况是,它会导致生产环境中的错误,这可能是非常昂贵的。

 另一方面,让人们加班或拒绝休假(本质上意味着休息),可能会导致一系列健康问题和生活管理方面的其他问题。

 拒绝或跳过其他职责,例如员工培训,是另一种形式,是一种缓慢移动的技术债务类型:它最终会导致技能过时的人和一个不会从新技能中受益的项目。 

 开发团队在与最后期限作斗争方面的能力是相当有限的。

 简单来说: 开发团队用来应对最后期限的工具是不可持续的:

 走捷径(本质上降低了质量)

 加班工作 跳过培训或其他职责

 产品经理控制着唯一的可持续选择: 减少功能的数量 细化功能范围 雇佣更多团队成员 移动最后期限 上述分类意味着,如果需要,管理层也可以求助于不可持续的选择。我相信,如果管理层有意做出选择,而不是让团队中的个人自己做出选择,那就更好了。这些对最后期限的个人反应正是问题的核心:它们产生了无形的问题,不可预知地跳到你身上。

 嗯,我们有什么选择?

 与Scrum不同的是,还有一个类似的过程叫做看板(精益开发),它没有冲刺和时间拳击的概念,因为在看板中,它们被认为是浪费。 在看板中,只有“东西”要做,开发团队应该按照产品管理优先顺序来做。这是一个非常连续的过程,很自然地适合长期的开发项目。没有必要花时间讨论承诺、日期、最后期限或与冲刺相关的任何事情。更重要的是,系统不会像系统那样生成截止日期或截止日期,因此消除了拥有截止日期的压力。相反,当一个任务完成时,开发团队从积压工作的顶部接受下一个任务,依此类推。 看板(lean)过程消除了Scrum所需要的一些不自然的东西。例如:

 当冲刺提前完成时会发生什么? 

 当冲刺没有及时完成时会发生什么? 

 当Bug在冲刺中出现时会发生什么?

 如果我们不能在冲刺计划中充分计划怎么办? 

 如果我们在冲刺计划上计划太多怎么办?

 如果我们想在冲刺结束前释放呢? 

 如果产品管理层真的想在冲刺过程中重新划分优先级,会发生什么?

 如果在冲刺开始时一切都没有准备好进行开发,会发生什么?

 这些问题可以通过更多的过程或步骤与指导来回答。然而,在看板中,许多问题甚至都不适用,因为它们对于我们完成项目来说是不必要的。

结论  

截止日期对人类健康有很多负面影响,但一些人说,截止日期是工作动机和项目组织的必备条件。我认为除了最后期限和冲刺,还有其他的激励因素和组织项目的其他方式。这让我明白了我的主要论点,即最后期限和冲刺的负面影响大于正面影响。

 Scrum作为一个流行的敏捷框架,以冲刺的形式为我们的日常生活带来了一系列的最后期限。团队最终致力于冲刺内容,没有可持续的工具来管理它。有人说冲刺承诺是不必要的,冲刺不应该被认为是最后期限。我倾向于同意,但我再次问你:为什么首先要这样做?  

短跑和时间拳击给一个项目增加了很多人为的噪音。这种噪音几乎没有严重的不良副作用,最大的副作用是可能危及生命的健康问题和不可持续的团队和项目。最后,还有其他的工作方式(比如看板)没有这种噪音,也给了他们更多的灵活性。

 如果利益相关者和产品所有者还没有准备好在截止日期前拔掉插头,那么产品管理层可能会在某种程度上与他们进行合作。开发团队不应该处理截止日期,因为他们没有管理它们的工具。相反,团队应该关注任务的交付,并确保按照产品管理层认为合适的顺序交付任务。可以将其视为开发团队的保护层。在这种情况下,团队可能需要给出每个任务所需时间的估计,但这与提交截止日期还是有很大的不同。