一、敏捷估算的困境

在软件开发项目里,敏捷估算工作经常容易陷入无休止的辩论当中。就好比一个团队要开发一款新的手机应用,里面有很多功能模块,像用户注册登录、商品展示、购物车结算等等。对于每个功能模块的开发时间和工作量评估,不同的团队成员会有不同的看法。

有的成员觉得用户注册登录功能很简单,一天就能搞定;但也有成员认为,要考虑到安全性、兼容性等问题,得花上三天时间。大家各执一词,谁也说服不了谁,这就导致辩论没完没了,浪费了大量的时间和精力,项目进度也因此受到影响。

1.1 无休止辩论的原因

造成这种无休止辩论的原因之一是团队成员之间存在偏差。由于每个成员的技能水平、工作经验、对业务的理解都不一样,所以对同一个任务的估算就会有很大的差异。比如,有个刚入职不久的新手程序员,对项目的整体架构和技术栈还不太熟悉,他估算某个功能的开发时间可能就会比经验丰富的老程序员要长很多。

另一个原因就是锚定效应。当团队中某个有影响力的成员先提出了一个估算值后,其他成员就很容易受到这个值的影响。例如,项目经理先提出购物车结算功能需要五天时间完成,后面的成员在估算时就会不自觉地围绕这个五天来思考,即使自己原本的想法和这个时间相差很大,也可能会因为这个“锚”而改变自己的观点。

二、Planning Poker 是什么

Planning Poker 是一种用于敏捷估算的方法,它能有效减少团队成员在估算时的偏差和锚定效应。简单来说,它就像玩扑克牌一样,每个团队成员都有一副写有不同估算值的卡片。

2.1 Planning Poker 的基本流程

在进行估算时,团队会先确定一个需要估算的任务,然后每个成员默默思考这个任务的工作量,选择一张代表自己估算值的卡片。接着,大家同时亮出卡片。如果大家的估算值比较接近,那就可以快速达成共识;但如果差异很大,就需要成员们解释自己的估算依据,进行讨论,然后再重新进行一轮估算,直到大家的估算值比较收敛。

举个例子,还是那个手机应用开发项目,团队要对商品展示功能进行估算。成员们各自思考后,同时亮出卡片。有的成员亮出了“3”,表示他认为这个功能需要三天时间;有的成员亮出了“5”。这时大家就开始讨论,亮出“3”的成员说他觉得商品展示功能只是把商品信息展示出来,不需要太多复杂的交互,所以三天足够;而亮出“5”的成员则说要考虑到商品图片的处理、不同设备的适配等问题,五天才能完成。经过讨论后,大家再进行一轮估算,可能这次大家的估算值就会更接近了。

2.2 Planning Poker 的技术原理

从技术角度来看,Planning Poker 利用了群体智慧的原理。每个成员都有自己的知识和经验,通过这种方式让大家的信息充分交流和共享。就像在一个大的拼图游戏中,每个成员都有自己手中的那一块拼图,通过交流和讨论,大家把各自的拼图拼在一起,就能得到一个更完整、更准确的画面,也就是对任务更准确的估算。

三、用 Planning Poker 收敛偏差与锚定效应的心法

3.1 营造开放的讨论氛围

在使用 Planning Poker 进行估算时,要营造一个开放的讨论氛围,让每个成员都能自由地表达自己的想法。比如,在团队会议中,要鼓励新成员大胆说出自己的估算依据,不要因为害怕说错而不敢发言。

例如,有个新手程序员在估算某个功能时,提出了和其他成员差异很大的估算值。这时,团队的老成员不能马上否定他,而是要耐心倾听他的想法,也许他从一个新的角度发现了一些大家都没注意到的问题。通过这样的开放讨论,团队成员就能更全面地了解任务,从而减少偏差。

3.2 多次迭代估算

一次估算往往很难得到准确的结果,需要进行多次迭代。每次估算后,成员们根据讨论的结果重新思考,调整自己的估算值。

比如,对于手机应用的搜索功能估算,第一轮大家的估算值差异很大,经过讨论后进行第二轮估算,可能差异会小一些。但还是没有完全达成共识,那就再进行第三轮,直到大家的估算值比较接近。就像爬山一样,每次迭代都朝着目标更近一步,最终找到一个合理的估算值。

3.3 依据客观事实

在讨论和估算过程中,要依据客观事实,而不是个人的主观臆断。比如在估算某个功能的开发时间时,要考虑到项目的技术栈、团队成员的实际技能水平、以往类似项目的经验等。

例如,以往开发过类似的搜索功能,根据那个项目的经验,开发时间大概是五天。那么在估算这次的搜索功能时,就可以把这个作为参考依据。但也要考虑到这次项目和上次项目的不同之处,如数据量的大小、搜索规则的复杂程度等,进行合理的调整。

四、应用场景

4.1 软件开发项目

在软件开发项目中,Planning Poker 非常适用。因为软件开发项目的任务复杂度差异很大,不同的功能模块可能涉及到不同的技术和业务逻辑。通过 Planning Poker 可以让团队成员对每个功能模块的工作量有一个更准确的认识,从而合理安排项目进度。

比如,开发一个电商网站,有用户管理、商品管理、订单管理等多个功能模块。每个模块的开发难度和工作量都不一样,使用 Planning Poker 可以让团队成员进行充分的交流和讨论,确定每个模块的大致开发时间,为项目的整体规划提供依据。

4.2 项目需求变更时

当项目需求发生变更时,也可以使用 Planning Poker 对变更部分的工作量进行估算。例如,在电商网站开发过程中,客户突然要求增加一个优惠券功能。这时团队成员就可以使用 Planning Poker 对这个新功能的开发时间和工作量进行重新估算,以便及时调整项目计划。

4.3 团队新成员加入时

当新成员加入团队时,他们对项目的情况不太了解,估算可能会和老成员有很大差异。使用 Planning Poker 可以让新成员快速融入团队,和老成员一起对任务进行估算,同时也能让老成员帮助新成员更好地理解项目,减少差距。

五、技术优缺点

5.1 优点

  • 提高估算准确性:通过大家的交流和讨论,可以综合各成员的知识和经验,得到更准确的估算结果。例如在软件项目中,不同专业背景的成员(如前端开发、后端开发、测试人员)对任务的看法不同,通过 Planning Poker 可以把这些不同的观点融合起来,使估算更符合实际情况。
  • 增强团队协作:在估算过程中,成员们需要相互交流、倾听和理解,这有助于增强团队的协作能力。比如在一个任务的估算讨论中,成员们通过分享自己的想法,增进了彼此的了解,也提高了团队的凝聚力。
  • 减少锚定效应:每个成员先独立思考并选择估算值,避免了过早受到他人观点的影响,减少了锚定效应。例如,如果没有使用 Planning Poker,可能项目经理先提出一个估算值后,其他成员就会不自觉地迎合这个值,而使用 Planning Poker 可以让大家更独立地思考。

5.2 缺点

  • 时间成本较高:多次迭代估算和讨论需要花费一定的时间。例如,对于一些简单的任务,使用 Planning Poker 可能会显得有些繁琐,花费的时间比直接估算还要长。
  • 依赖团队成员的参与度:如果团队成员参与度不高,不愿意充分表达自己的想法,那么这种方法的效果就会大打折扣。比如有成员在讨论时敷衍了事,不认真思考和发言,就无法得到准确的估算结果。

六、注意事项

6.1 保持中立

主持人在 Planning Poker 过程中要保持中立,不能对成员的估算值发表倾向性的意见。例如,在团队估算时,主持人不能说某个成员的估算值“好像有点高啊”,这样会影响成员的判断和讨论的公正性。

6.2 合理选择估算值范围

要根据项目的实际情况合理选择估算值的范围。比如对于一个小型的软件项目,估算值范围可以设置为 1 - 8 个工作日;而对于大型复杂项目,范围可以扩大到 1 - 20 个工作日。如果范围设置不合理,可能会导致估算不准确。

6.3 及时总结反馈

每次估算完成后,要及时总结经验教训,为下一次估算提供参考。比如分析这次哪些任务的估算偏差较大,是什么原因导致的,以后如何避免。

七、文章总结

敏捷估算过程中出现无休止的辩论和受偏差与锚定效应的影响是很常见的问题。而 Planning Poker 是一种有效的解决方法,它通过独特的流程和方式,让团队成员能够充分交流和协作,收敛成员之间的估算偏差,减少锚定效应的影响。

在实际应用中,我们可以根据不同的项目场景灵活运用 Planning Poker,同时要注意它的优缺点以及相关的注意事项。通过营造开放的讨论氛围、多次迭代估算、依据客观事实等心法,可以更好地发挥 Planning Poker 的作用,提高项目估算的准确性和团队的工作效率,让项目能够更顺利地推进。