敏捷开发 具体做法

你们是否有Product Owner?是不是有人可以代表客户与你们一起工作?

当团队在决定应该构建什么样的产品时,这个人就是他们要询问的对象,这个人代表着客户的需求与利益。

 

如果有Product Owner的话,他们是否拥有一个待开发功能的Product Backlog?此Backlog是否根据业务价值排定了优先级?是否已经估算过开发这些功能需要多少时间?

这是一个Product Owner为一次版本发布构建路线图所需要的依据。

 

团队在开发过程中,有没有使用 Burndown图,来展示当前迭代中随着时间的推进,剩余工作量的变化,以跟踪进度?并且能否基于Burndown图来推算团队的速度?

首先,Product Owner可以根据它来构建发布规划;同时团队可以根据它来真正改进流程。只有知道自己的速度如何,这有助于一个团队进行更好的估算,同时帮助他们在继续后续工作时提升速度。

 

Scrum团队依赖自组织的过程,这就意味着团队负责挑选工作、职责分配,并要找出最快交付工作的途径。所以,Nokia的最后一条规则是:在迭代中,项目经理不能干涉团队工作,因为这会停止自组织的过程,并且得到解决方案的过程将不再是最优化的了。

 

为什么非得要专门的Product Owner?PM代替不可以吗?

首先,产品Backlog是Scrum的核心,从根本上说,它是一个需求或故事或特性组成的列表,并且按照重要性进行了排序,一定是客户想要的东西,并且用客户的语言进行描述。产品的Backlog应该仅仅由那些产品相关的较大的任务(ticket)组成,有关在产品开发中完成某项工作时候涉及的东西,太细了就不适合。

 

其次,在维护产品Backlog的时候,Product Owner(就是那个能替最终客户发言的人)必须参加,由他排列优先级。Product Owner必须是离客户最近的人,你作为研发项目管理人员,不可能是离客户最近的人。如果没有这个角色,你们怎么知道哪个重要哪个不重要?和Product所有人交流,你们才可以做出来一个有优先顺序的列表,把最重要的功能放在列表的前面。

 

 

 

那这个Backlog条目除了优先级外,还有其他什么要求?

每一个条目应该有估计完成时间,这个并不需要很准确。我们只需要有一个大概的估算即可,这样才能够决定把多少工作放到一个Sprint里。

另外,在你开sprint规划会议之前,你的产品Backlog应该保持一种合适的格式。你可以是把它们都放在一个Excel中,也可以是一个Word文档,或者是某种Scrum工具中……采用哪种形式都可以,只要你们自己觉得方便就行。

 

Sprint计划会议除了你的团队成员和Product Owner外,还可以邀请更多的人参加。

在Scrum框架下,没有“个人”的概念,Scrum依靠的是团队的力量。尽管Scrum Master在这个框架下的作用很重要,但这个人不是独裁者。做Sprint计划时,一定要让整个团队参加。

 

大家一起做计划,岂不是很乱?

首先,你们要先定下来Sprint的目标,即作为一个团队,你们要完成什么,然后再决定完成多少。

 

我们当前没有任何历史参考数据,怎么知道完成多少呢?

事先计算出在一个Sprint内,团队的可能工作时间。譬如,在未来三周内,一个5人小组,每人每周工作40小时,那么总的工作时间=5×40×3=600小时。

要将总的工作时间扣除任何预期的非工作时间。譬如,有一个人要休一个礼拜的年假,还有人要看牙,需要占用3天,这样算起来是600-5x8-3x8=536小时。

得把每天花在参加会议、谈话、处理邮件、上网等时间都除去。

我们把它用百分比表示,5/8,那么就是60%左右,然后用这个“负荷指标”(Load Factor)乘以总的工作时间小时数,你就得到了536×小时。

 

 

然后从产品Backlog中,按照优先级从高到低,选择出你们认为能在322小时内完成的条目,作为你们当前Sprint的Backlog。注意:选择的Sprint Backlog Item一定要强内聚、松耦合,这样你们才能不受或者少受外界的干扰,目标明确。

 

那个“负荷指标” 60%应该是变动吧?我们刚做一个项目,跟项目做了一段时间相比,肯定是不一样的。再譬如我有新员工加入时,他的效率肯定是要比老员工低的。

你可以利用它把Sprint计划得很准确。当你遇到低的“负荷指标”时,要试着找出根本原因,这会使你门的Sprint更有效率。

 

 

对于每个细化后的任务,都需要一个非常明确“完成”(Done)的定义。这一点非常重要,必须保证每一个人的理解是正确的、一致的。

估算时,可以用“计划扑克牌”来估算完成时间。

 

做Sprint任务细化时,一个最佳实践就是把每个任务控制在2~16 小时之间。任务太细,会涉及更多的微观管理,太粗,估算就会不准确。

 

下一步,就是让大家自己认领任务,而不是指派!这一点非常关键

 

首先,每个人认领任务后,实际上就是对整个团队有了一个承诺,更能保证按计划完成。其次,让每个人选择自己愿意做的事情,这样才会更有主动性,毕竟“做自己有兴趣的事情,才会真的做好”。这样,不仅满足了个人发展的需要,还可以达到快速的知识共享、团队技能的整体提高。

 

 

此外,跟任何其他会议一样,对于跨度一天的计划会议,确定好会议日程非常重要。因为Sprint计划会议一定要基于Time-Boxed,在规定的时间内,一定要结束,就像一个Sprint一样,同样要有紧迫感。

还有,Sprint计划会议必须在一个完整天内开完。

Sprint计划会议开始的那一天,也就是Sprint开始的一天。如果Sprint计划会议要跨越两天,可不是什么好玩儿的事情,你的Burndown Chart就会像我们的这样很难看。你会看到Sprint才一开始,似乎我们的工作量只有150,怎么第二天时工作量就快到了190,出现了一个凸起。如果不了解内情的话,一定还以为Sprint出了问题呢。而实际上是因为我们曾经在前一天的下午开了4小时,第二天上午又开了3小时,对任务进行细化,结果任务估算增加。

 

采用Delphi方法进行任务工作量的估算。当进行任务细化的时候,每个人的估算是不一样的,如果最高估算值跟最低估算值相差一半以上,二者就要沟通一下,看看为什么二者的理解相差这么多。沟通明白后,再重新估算。即使这样,还是会有分歧的,此时采用Delphi估算方法,简单讲就是进行一次加权平均。

 

为了提高任务细化的效率,可以将团队分成两个小组分别进行。

 

把Team分成两个小组,分别对任务进行细化。细化时,不再用投影仪,而是把Sprint Backlog中的内容按大块张贴在墙上,大家站在墙前,拿着记事帖直接进行细化和估算。当两个小组都进行完后,互相检查对方对任务的细化,解决争议,澄清模糊的地方。这样一来,就把大家的积极性调动起来,参与程度非常高,效率也高。

 

 

 

产品负责人(Product Owner)一定要参加。实在不能参加的话,也要指定一个人授权代理。否则,就不要开Sprint计划会议。

 

最后一点,虽然我们采用了Scrum,但即使不再采用Gatt图,但是传统的Risk/Dependency分析还是不要丢弃。在Sprint计划会议结束前,进行Risk/Dependency的分析,还是会帮助我们发现一些问题的,然后再稍微重新调整任务的优先级,更能保证Sprint的成功。

 

Scrum依靠的是经验管理,所以他没有定义出很细的工程实践。这样才能很好地跟组织原来的工程实践融合起来,譬如跟CMM、ISO 9000、RUP,甚至XP等都能很好地工作在一起。因为Scrum主要是想解决项目管理和组织实践范畴的东西,更多的是关注在敏捷团队建设上,它的终极目标就是自我管理自我组织的高效团队。作为一个敏捷框架,具体的编程实践,可以靠XP去补充。但我还是建议你们,最初先努力适应这个框架,待成熟后再考虑引入其他敏捷实践。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值