论坛首页 综合技术论坛

Scrum之成败——从自身案例说起,仅供参考

浏览 24372 次
精华帖 (8) :: 良好帖 (10) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-05-23   最后修改:2011-05-23
ggokind 写道

请参考一下我的类似的总结。
2008年的体会:敏捷,想说爱你不容易--从CMM向敏捷过渡的一点体会(1)
2010年的体会:后CMM时代的思考

这位朋友跟我遇到的情境确实完全不同,说说我这边的情况:

 

1.TDD、DDD、CI

这两块我算是高手,项目启动期就对大家进行了培训,理论到编程、代码覆盖率,单元测试方法、测试路径、圈复杂度神马的,全部各个演习了,再让开发人员制作培训PPT,团队一起开会培训,所以项目中没遇到什么阻力;CI,从第二个Sprint开始用,让大家了解几种图例的含义,主要是我在看CI的结果口头通知修复问题,很顺畅。

 

2.敏捷中测试如何做

这块确实是自己花了力气寻找出一套办法,参见:

《基于Team Foundation Server 2010 Scrum 1.0与持续集成的最佳实践》

http://www.cnblogs.com/RCFans/archive/2011/01/06/1927628.html

我们团队的测试人员很牛逼,自动化什么的全会,又擅长自己学习、找解决方案;我们的敏捷测试方案是让测试人员在开发过程中参与,直接在开发环境上测试,提交Bug,测到几乎无Bug时发布到测试环境。最初是每周一版;然后是每周三版,现在因为质量越来越好,是由测试人员直接从CI上取最新版本直接发布到测试环境测试,同时,有一名高程负责所有的代码审核和第一个集成测试。

 

3.重构

也是在项目初期进行过培训,先是机械化培训,讲什么叫圈复杂度高的代码,讲圈复杂度高的话单元测试是如何的不利,讲一个类文件的行数标准,方法行数标准,开发中使用SourceMonitor监控代码复杂度(复杂度高到离谱的代码,找到开发人员,进行批评,养成暴力美学观),坚决地在团队中持续重构,每周把发现的特殊例子,拿到白板上讲解,先让大家自己想怎么重构,然后讲如何重构,为什么要这样重构。这样搞,团队的气氛很主动,很热情。

0 请登录后投票
   发表时间:2011-05-23  
RCFans 写道
... 这个任务不是非常优质的“开发任务”,其原因就在于没有清晰的设计阶段。大家应该都清楚,有一个专门的设计阶段,最终可确定假如技术方案为A,咱们就会有任务A1、A2……An,但是没有这个阶段的话,任务就会是B1、B2……Bn,完全不同。后者的优势在于,确实能够达到快速发布反馈,也确实让整体交付物尽可能地与需求吻合,让用户非常信赖我们的能力,但带来的繁重工作、重复工作、浪费、设计不好也体现得非常明显。现在正在逐步优化。


为什么没有“设计阶段”? 敏捷不是不要设计,而是不要过度设计。设计,特别是架构设计和关键技术选型对于任何开发方法来说都是重要的。
一般来说“设计”并不需要整个团队参与,可以由高级工程师和系统工程师完成。


0 请登录后投票
   发表时间:2011-05-24  
一蓑烟雨任平生 写道
用仪式、图片、口号等噱头,造成一种神秘感和神圣感,能力方面实质上却达不到一丝改善。



这句话很有意思,国内很多公司所谓的实施scrum只是口头上,并不了解scrum的本质核心,不是用一堆话里面扎了那么些英文字那里有模有样的说,而是需要沟通畅通,管你什么屁文呢
0 请登录后投票
   发表时间:2011-05-24  
现实情况在国内很多团队连个 每日例会(stand meeting)的10分钟都没有坚持做好,说啥XX敏捷,这样有意思吗 ,有木有
0 请登录后投票
   发表时间:2011-05-27  
jelver 写道
现实情况在国内很多团队连个 每日例会(stand meeting)的10分钟都没有坚持做好,说啥XX敏捷,这样有意思吗 ,有木有

+1
2 请登录后投票
   发表时间:2011-05-28  
我觉得中国的项目经理水平太差,溜须拍马,根本就没能力实施敏捷管理
0 请登录后投票
   发表时间:2011-05-28  
rubynroll 写道
RCFans 写道
... 这个任务不是非常优质的“开发任务”,其原因就在于没有清晰的设计阶段。大家应该都清楚,有一个专门的设计阶段,最终可确定假如技术方案为A,咱们就会有任务A1、A2……An,但是没有这个阶段的话,任务就会是B1、B2……Bn,完全不同。后者的优势在于,确实能够达到快速发布反馈,也确实让整体交付物尽可能地与需求吻合,让用户非常信赖我们的能力,但带来的繁重工作、重复工作、浪费、设计不好也体现得非常明显。现在正在逐步优化。


为什么没有“设计阶段”? 敏捷不是不要设计,而是不要过度设计。设计,特别是架构设计和关键技术选型对于任何开发方法来说都是重要的。
一般来说“设计”并不需要整个团队参与,可以由高级工程师和系统工程师完成。



-------
回帖都能把楼搞歪了,指望手下人不形而上学? 我看很难。
0 请登录后投票
   发表时间:2011-05-28  
RCFans 写道
ggokind 写道

请参考一下我的类似的总结。
2008年的体会:敏捷,想说爱你不容易--从CMM向敏捷过渡的一点体会(1)
2010年的体会:后CMM时代的思考

这位朋友跟我遇到的情境确实完全不同,说说我这边的情况:

 

1.TDD、DDD、CI

这两块我算是高手,项目启动期就对大家进行了培训,理论到编程、代码覆盖率,单元测试方法、测试路径、圈复杂度神马的,全部各个演习了,再让开发人员制作培训PPT,团队一起开会培训,所以项目中没遇到什么阻力;CI,从第二个Sprint开始用,让大家了解几种图例的含义,主要是我在看CI的结果口头通知修复问题,很顺畅。

 

2.敏捷中测试如何做

这块确实是自己花了力气寻找出一套办法,参见:

《基于Team Foundation Server 2010 Scrum 1.0与持续集成的最佳实践》

http://www.cnblogs.com/RCFans/archive/2011/01/06/1927628.html

我们团队的测试人员很牛逼,自动化什么的全会,又擅长自己学习、找解决方案;我们的敏捷测试方案是让测试人员在开发过程中参与,直接在开发环境上测试,提交Bug,测到几乎无Bug时发布到测试环境。最初是每周一版;然后是每周三版,现在因为质量越来越好,是由测试人员直接从CI上取最新版本直接发布到测试环境测试,同时,有一名高程负责所有的代码审核和第一个集成测试。

 

3.重构

也是在项目初期进行过培训,先是机械化培训,讲什么叫圈复杂度高的代码,讲圈复杂度高的话单元测试是如何的不利,讲一个类文件的行数标准,方法行数标准,开发中使用SourceMonitor监控代码复杂度(复杂度高到离谱的代码,找到开发人员,进行批评,养成暴力美学观),坚决地在团队中持续重构,每周把发现的特殊例子,拿到白板上讲解,先让大家自己想怎么重构,然后讲如何重构,为什么要这样重构。这样搞,团队的气氛很主动,很热情。

你有搞传销的潜质

0 请登录后投票
   发表时间:2011-05-29  
我是来看热闹的 写道
ozzzzzz 写道
首先,我对发言各位表示极端的不信任,建议各位努力反思一下。

我必须承认异常说的还有点道理,但是仅仅是面子上的道理。首先我们应该明白,在开始阶段就把故事分的很细致,粒度很合适是非常困难的。其次,即使粒度很细,也很明确,但是其背后的逻辑关系是否就能很难搞明白。第三,即便都搞的很好,但是问题还是问题,没有解决方法的问题一样是陷阱。当然后面我还可以说第四、第五、第六等等,但是算了,有上面三条就足了。

至于说洗脑之类的是小术,是邪道,虽然可以在某些时候有效,但是不值得学习,更加不值得推广。这种方法是最最应该被程序员阶层反对的做事方式。

对于RCFans的问题,我只说一点,我觉得就够了。那就是他曲解了自我管理和自我组织的含义。当然他的做法,并非只有他一个人在那么做,实际上你看小刀翻译的硝烟,那里也是那么做的,而且我知道很多scrum书里面和培训里面都是这么教育的。这个可以算给他们犯错误找的客观理由吧。

当然我们说给人以选择的自由是没有错误的,但是你要真的给人选择的自由,而不是虚假的自由。其实你仅仅是给了大家一种方法进行选择,也就是用一种强制的方法做所谓的自由选择。

其实这里至少要给大家三种选择的方式。
第一,你自己给出一种你的任务配属方式,也就是告诉大家,你认为各自做些什么比较合适。
第二,你应该给一种默认的机械式的分工方法,比如按照工号顺序去配属任务。
第三,完全自主的去选择各自的任务。
而实际的工作中往往是这三种方法的结合,并且最终还需要做私下的协调。

以上是从的做事情的方法。

下面我再谈一个问题,那就是故事和任务是不是一个东西。这也是很多书和人都没有讨论过的,或者我干脆的说除了我之外,我还真没看见别人说过这个事情,当然我还不是一次说过这个事情,而是多次在多个场合,多个角度的说过这个事情。

故事是故事,是用来反应需求的的,是面向客户的,是沟通的一种方法。
而任务是认为,是用来分配和管理工作的,是面向内部管理的,是管理的一种方法。
开发者应该明白,故事需要根据某种原则进一步的去转化为任务。
也就是说你在分配工作的时候,交给大家的是任务而不是故事。

当然我们也要明白,在某种技术背景和管理方式下,故事和任务可以形成一种表达。但是作为初次接触,经验不够,技术支持不足,能力有限,总之就是条件不是那么好的情况下,还是应该分开处理。

最终我还要说清楚一个事情,也就是软件开发的方法,不应该也不会在短期内起到提高个人素质和开发能力的作用,任何人也不该去奢求这一点。方法也好,管理也吧,是用来维持和协调各种不同能力水平和性格的人一起工作的。当然就长期来看,好的方法和管理肯定可以提高人的素质和能力,但是必须知道这个是长期目标,不可能短期实现。这一段是对一蓑烟雨任平生说的那话的评价。或者我直接的说一蓑烟雨任平生是在抬杠。


故事和任务我觉得倒不是太大的问题。

套用Cockburn的视角,以用户目标为海平面,商业价值在上,具体功能拆解在下。
为什么-做什么-怎么做的拆解过程合理,最终都是殊途同归。

scrum在过程上有很多好的东西,对时间盒的强调,对沟通的高度重视。
但在组织模式上,我以为他并不以人为本,高度扁平化的自组织方式,责权不平衡,人员的能动性事实上会被降低,在实际应用中有大量的问题,当然,这也和整个产业环境和公司文化相关。


我觉得这个话说出了些原因``

出于文化的差别`产业的风格和从业人员个人的价值观与国外的团队可能都存在比较大的区别``

scrum应该是一套好的软件开发过程 ``

规范了一些敏捷开发的方法`

但如果直接套在国内的团队上不一定是最合适的``

要最大程度的发挥Scrum的功力`要么从成员到团队到公司管理层都要改变`

要么`"发明"一套有中国特色的Scrum方法``

PS`:`通常这种以'中国特色'开头的东西会毁掉原版里的精华`只留下一个空壳``
0 请登录后投票
   发表时间:2011-05-29  
RCFans 写道

虚心接受批评并暴力点头

诚然,我只给了大家一种方式,就是自由领取任务!后每次总结,大家都说酱紫不好:
1.领来一堆任务,不知如何排序
2.领了又做不完,时间又是自己估的,人家又提前做完,鸭梨大

最后导致估工时束手缚脚,能力强的自然 能力不强的就

1 任务没有优先级的吗?`
2 任务不应该是做完一个领一个?

PS:给任务加一个默认的分配方式 到是一个不错的方法`
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics