认识组织选项背后的系统动态:需求还是任务

认识组织选项背后的系统动态:需求还是任务

  在辅导敏捷团队时一个重要的杠杆是增加对需求而非任务的聚焦。这篇文章描述其背后的动态。 传统的项目在两个层次跟踪进度。一个是里程碑,经常跟诸如需求分析完、集成准备就绪、测试完成这样的阶段相关联。另一个是任务状态,经常通过每周汇报会议来跟踪。相比之下,敏捷开发却跟踪需求的进度(注:更好的是跟踪那些需求的价值,但这不在本文范围内讨论)。我们将看到不同选择背后的动态,希望由此带来的理解能对成功的改变有所帮助。 为什么聚焦任务?  聚焦任务有它的原因。   任务焦点本质上代表了资源焦点。当面临成本压力时,我们尝试增加资源焦点,以提高资源效率,从而减轻成本压力。 我们如何增加资源焦点呢?一种方式是通过任务。事实上当跟踪任务时,次序经常是按人,问每个人在做什么任务。这样就能确保每个人都忙着。如果没有匹配他们技能的任务呢?我们创造任务来适应他们的技能。我们会在后面看到这将带来有趣的影响。 为什么聚焦需求? 聚焦需求也有它的原因。 需求焦点代表了客户焦点。当面临市场压力时,我们尝试增加客户焦点,以提高流动效率,从而减轻市场压力。 我们如何增加流动效率呢?一种方式是通过需求。我们不是跟踪任务和人,而是跟踪需求确保它们流动。我们较少关注谁闲着,更多关注如何让需求流动得顺畅。 两者之间的矛盾 如果两个平衡回路相互独立,成本和市场的目标能同时得到满足。然而,在资源效率和流动效率之间存在矛盾。 我们讨论资源效率时曾经提及,当一个需求对某些人来说没有他合适的任务时,我们就开启另一个需求以使他有合适的任务做,从而提高了资源效率。注意如果需要学习,他就不是资源有效的。并行需求的增多意味着客户焦点的降低。因此,资源焦点对客户焦点有负面的影响。 反过来也是一样。当我们聚焦客户,通过限制并行工作的需求个数以追求流动效率时,它不可避免会产生某些人没有合适的任务做的情况,这就不是资源有效的。因此,客户焦点对资源焦点也有负面的影响。 现在两个平衡回路就相互作用了。当市场压力变大时,加强客户焦点以提高流动效率。同时,这减弱了资源焦点,降低了资源效率。这时候是B2回路主导。当成本压力变大时,加强资源焦点以提高资源效率。同时,这减弱了客户焦点,降低了流动效率。这时候是B1回路主导。 理解这个矛盾帮助我们以不同的方式看待变革中的抵制力。虽然聚焦客户令人难以反驳,根本性的系统结构却产生反向的力量。 这个矛盾也提出了关于系统目标的重要问题。对特定的组织来说,你更想优化哪个目标 - 资源效率还是流动效率? 产生影响的杠杆 有可能两者兼得吗?或者至少在以某一项为主的同时能兼顾另一项? 来看一下我们是如何实现资源效率的。我们开始更多并行的工作以适应技能,但牺牲了客户焦点。我们可以让B3回路而非B1回路工作,也就是通过学习扩展技能,最终提高资源效率。B3回路对客户焦点并没有负面的影响,但学习也需要更长时间才见效。不令人意外的是,真正的杠杆在于我们如何能有效地学习和扩展技能。 上图是来自于《This is Lean》书中的效率矩阵。图中的蓝线表示通往“完美状态”的演进路径,首先实现B1回路(提高流动效率),然后再是B3回路(提高资源效率)。然而很多组织自认为它们的现状是“高效岛屿”,也就是B2回路主导,这样一来演进路径变成了图中的红线。从变革管理的角度来看,沿红线演进是困难的,因为它意味着资源效率会先降低。你可以改变认知以从更为真实的“浪费之地”出发,或者确保资源效率的降低是可以掌控的。 聚焦于需求还是任务本质上是在客户焦点和资源焦点之间的选择。 英文版:https://blog.odd-e.com/yilv/2018/02/seeing-the-system-dynamic-requirement-vs-task.html...
阅读更多
一个快速有效提升团队效率和质量的方法

一个快速有效提升团队效率和质量的方法

在为客户提供教练服务过程中,我尝试过各种方法,发现其中有个方法提升团队的效率和质量最快速有效。简单概括就是实例化需求,但其实只用做一部分就可以有不错的效果。 为什么说这个方法快速有效?说快速是因为只需改变需求讨论会议或者Scrum中Product Backlog Refinement(PBR)的方式,通常就会在当前迭代看出效果来。有效是因为通常改善了团队的工作效率,减少了迭代内的bug,从而减少了开发和测试间的来来回回,提升了工作质量。过往的客户有做过Bug的根源分析,发现有一半是因为需求沟通的问题导致的。 具体做法是: 在开始开发前举行需求讨论会议。也就是Scrum中的PBR,通常在迭代的中间发生,用于讨论并澄清后续迭代的需求。 会议需要三个角色,产品经理或者Product Owner(PO),开发人员和测试人员。Scrum中就是PO和开发团队(包括了开发和测试等) 会议中产品经理简短介绍一下要讨论的需求,开发和测试用测试用例的方式描述需求,即验收条件。以5个需求和8人团队为例: PO花10分钟左右简单介绍5个需求 团队分成3个2~3人的小组,每个小组选一个需求进行讨论,写出需求的验收条件。20分钟一个时间段。此时,PO应随时帮助团队澄清疑问。 再10分钟每个小组分享一下各自的验收条件,其他人给出反馈 再做一轮20+10分钟的讨论,可以根据反馈来调整验收条件。如没有调整,可以拿下一个需求讨论。 如果需要,可以再做一轮。但通常2个星期的迭代,2个小时足够完成整个会议。 用具体的例子来描述验收条件来减少产生误解的空间。比如,买3本书包邮的例子 买一本《实例化需求》和一本《用户故事与敏捷方法》,快递费是12元 买一本《实例化需求》,一本《用户故事与敏捷方法》和一本《单元测试的艺术》,快递费是0元 用业务的语言描述。验收条件应当是业务人员都能看懂的,因此描述的语言应该是业务语言,不应包含技术或操作细节。这样更容易沟通,同时避免过多的讨论实现细节,关注于“需求是什么”而不是“如何实现” 通常来说帮助团队实现1到3比较容易,团队多练习几次就能习惯4和5的表达方式。至于是否一定要用“假如……当……那么……”的格式,如果只是帮助大家澄清需求,那重要的是大家理解这样的结构化表述,对需求规则理解的表述包含了“条件-行为-结果”。当然,我更倾向于使用这样的格式来帮助大家习惯结构化的表述,同时也能方便以后自动化。 经过这样的需求讨论会议后,团队将带着这些验收条件来进行开发,开发一开始写代码的时候就知道测试将怎么测,测试不用来来回回重复测之前已经讨论的情况,可以花更多的时间来发现之前没法预测到的问题。 如果想要有更进一步的效果,那就需要将验收条件自动化,并且不会为了自动化改变原本验收条件的描述,最终形成活文档。当然这需要的投入就比仅改变讨论方式要多很多了,也比较难完全掌握。用实例化需求来实现从外向内的开发——从PBR到Acceptance Test Driven Development(ATDD),再到Unit TDD。这将极大改善产品开发。这些将在以后的文章中讲解,或者来参加我们的培训。:D...
阅读更多