版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 敏捷开发团队管理:几个真实案例与经验总结 出发点:结果导向敏捷开发团队的外在行为是“结果导向”,而内在支撑则是“团队工作”(teamwork)。所谓结果导向,就是直指结果,而不拘泥于形式。可以被拘泥的“形式”各式各样,比如方式、方法、流程、文档、部门、分工、职责都是形式。这些形式本来是设立来帮助实现更好的结果的,但是如果拘泥于此,则可能起到反作用。如果仔细审视敏捷宣言中右侧的内容,就会发现他们都属于形式,而非结果:个体与交互 重于 过程和工具可用的软件 重于 完备的文档客户协作 重于 合同谈判响应变化 重于 遵循计划这些形式曾经保证了众多早期军工、航天、航空项目的成功,但若在任何行业任何项目
2、比如敏捷开发出现时的互联网行业拘泥于此,就可能导致失败。可怕的是,左侧的4条,也是形式而非结果。所以对敏捷宣言的正确理解是:在现今的多数行业中,如果以结果导向为出发点,则左侧的形式胜过右侧的形式。支撑点:团队工作为什么说团队工作利于结果导向的实现?有一个兄弟射雁的例子可以说明:三个兄弟看着大雁飞过,一个说要射下来烤着吃,一个说要炖着吃,另外一个则要炒着吃,三人争执不下,大雁都飞走了。比如有一个bug,人们不去分析怎样改正怎样预防,而是讨论是谁的责任;比如有一个任务,人们不去分析怎样做最快,而是讨论应该谁做;比如有一个变更,人们不去分析变更前后甲乙方是否有利,而是讨论应该哪些部门走怎样的流程;比
3、如有一个产品,人们不去分析怎样做才能成功,而是讨论成功后应该怎样考核就很难直指结果,而陷入部门和个人的纷争之中。这里倒不是说后者不需要考虑,而是说出发点问题。如果思考问题的第一念头是“我”“我们”“他”“他们”,那么团队协作就建立不起来,敏捷开发也做不好。几个真实案例这几个团队都是我自己亲身经历的团队,从质量的角度来分析敏捷团队的工作方式。第一个是一个较为大型的团队,约有2530人,研发一个单一产品。这个团队在一年半的时间里边,从5个人成长为25人,其中有一半人员来自刚毕业不到半年的本科或硕士(在2001年,还很难找到“有10年经验的编程人员”);在这个团队拥有25名成员的时候,只有12个测试
4、人员。按一般的常理而言,这个产品应该面临很大的质量问题,因为这些新来者应该编写大量的缺陷,而测试人员又严重不足,不足以发现这些缺陷。但实际情况是,这个产品是我后来经历的所有大型团队中最好的一个,包括后来拥有众多测试人员的团队;此产品运行于cctv,属于高度实时性和可靠性的产品;此产品在上市7年左右的时候占有市场的60%份额(之后数据不详)第二个团队可以说是个团队,也可以说是个个人,是我之后为某家军工企业开发的一个小软件。“无损检测系统”项目历时3.5个月,涉及步进电机、超声波扫描卡等各种软硬件,尽管就这么多人工,最后甲方说做了个“国内领先的无损检测系统”(只能说可见国内行业底子之差)。一个人开
5、发,当然只能自己开发自己测试,但是质量却是有史以来最好的,整个项目的测试期只有几天,而交付后一年中客户没有发现过缺陷,只在更换硬件平台后发现一个水土不服的时序问题。这两个软件,是我自己亲自或近距离参与的项目中质量最好的两个,但奇怪的是他们都没有专业测试人员。编程人员的降低缺陷的方法这里先不分析编程人员与测试人员的分工、合作问题,先看看编程人员除了被“测试”之外,自己有哪些方法可以提高质量。第一个项目的经验在第一个团队中,由于团队很年轻扩张又很快,所以推行了代码审查的方法,简单而言,就是高手/老手要看新手的代码,后期的制度则是每个人的代码必须有人看过之后,才能提交。在这些提交过程中,很多可能带来
6、日后维护困难或缺陷的代码都被踢了回去。在这个团队扩张的后期,这种审查制度被凝结在师徒制度中,以把原来“帮忙”做审查变成“审查义务”。这一变化的原因是中间曾经发生过一次“不负责任”的审查,造成一大段两个月的代码未经充分审查就进入代码库,酿成后来的一次现场故障。这种“不负责任”来自于本来就没有设定责任,只是帮忙,所以才发生了组织结构的变化。在建立师徒制度后,师傅们将对小组的成败包括质量负责。实际上,新人的流动率很高,如果留下垃圾代码,还是要师傅来维护,所以师傅“被迫”很尽责。师傅们普遍的做法是不只在最后才审查代码因为那时候肯定面临一个烂摊子而是在前期就指导徒弟编出良好的代码,乃至在更早的时间点介入
7、,做出良好的设计。这些制度后来演化成松结对编程方法。第二个项目的经验第二个项目则是本人做度量最仔细的一个项目。原因是在离开上一家公司后,我去了一个测试人员众多的企业,但其产品质量却奇差无比,甚至导致后来一个产品被放弃,40人因此离职。所以萌生了一个念头,就是仔细度量一下缺陷是怎么来的,又是怎样被发现的。针对这个项目有一个100多个检查项的代码检查表,每天对代码进行3060分钟的代码检查。在整个项目过程中一共有240多个缺陷,不过只有6个发现于系统测试期,9个发现于与硬件的集成测试,63个来自于调试(就是完成编译到按下f5调试成功中发现的问题,一般大家都是不记录的,但这个项目中也被记录下来),剩
8、下的有112+53个来自于“看代码”(有自查和后查两种形式),这个项目没有单元测试活动。大致结论是只有微乎其微的缺陷是由测试活动发现的,而剩下的缺陷则是由开发活动发现的。这个项目的数据还揭示出一些有价值的信息:1. 开发人员可以有效地降低总缺陷率在为期27天的编码期(这个项目是瀑布式开发)中,千行代码的总缺陷率趋势从第一天的130/千行降低到最后一天的60/千行,说明若开发人员能潜心消除缺陷,那么在很短的时间里就能大幅降低自己代码的总缺陷率;极少有测试活动能做到类似的效果。2. “所有缺陷无需测试活动即可消除”下面是当时的“过程效益”分析,所谓过程效益,就是某个过程对消除缺陷的能力。比如如果说
9、“调试”的过程效益是40%,就是说如果有100个缺陷到达调试环节,调试中会发现其中40个,而60个会被漏到后面去。图中的蓝线就是“调试”的过程效益,注意前期的调试缺陷经常很低,表明“调试起来一切正常,但是一测试就发现很多问题”;后期的调试效益经常是100%,这个意思是说在完成调试(就是f5)后,之后再也没有任何人、任何活动从这天编写的代码中发现任何缺陷。确切说系统测试的6个缺陷,全部发现于前13天的代码中;换一种说法:如果全程都能像后13天一样编写代码,系统测试的缺陷将为0。“所有缺陷无需测试活动即可消除”这句话被打上引号,是因为它是一种很理想的状态。但是与“所有缺陷可以被某种测试活动消除”相
10、比,我更相信前者。3. 编程人员可以训练出行之有效的排除缺陷的手段“自查”的过程效益始终没有达到100%,但是它与调试的作用越来越互补。比如在初期自查+调试后,还有大量缺陷被发现(所以调试的效益很低);但如果每天仔细分析自己自查发现的缺陷和调试发现的缺陷,就可能在短短一个半月的时间内大幅度提升自身发现缺陷的能力,乃至于到达不把缺陷留给测试环节,更不会留给客户的程度。从上面图中的数据可以看出来,这个项目的质量不是由一个“能力很强的人”保证的,因为刚开始调试后还是有很多缺陷会留给测试活动发现,只是后来的训练导致了能力的增强。因此人的因素有,但是不是绝对的。总结这些项目揭示出来的规律是:程序员应该负
11、责产品质量,他们有能力,也有时间。第一个项目并没有因为“程序员还要负责质量”而耽误进度或造成功能“太少”影响到市场竞争力;第二个项目甲方后来坦然说“原定计划一年,没想到三个半月就结束了”(此前他们自己曾经尝试2个人研发过一年,此外也了解另外两家竞争对手投入的情况)。很多人一定认为上述经验有很大的局限性,比如对个人能力的要求很高,其实不然。第一个项目中,那些刚毕业的本科生和研究生与今天动辄工作5、6年乃至10年的程序员的水平不可同日而语;第二个项目中我本人当时工作经验也只有8年,其中做职业程序员的时间则只有45年左右,编码量仅在2万行左右。所以关键还是方法,而不是人;或者说是“使用正确方法的人”
12、就足够了,“使用正确方法的正确的人”不是一个强制条件。来源:敏捷开发实践出发点:结果导向敏捷开发团队的外在行为是“结果导向”,而内在支撑则是“团队工作”(teamwork)。所谓结果导向,就是直指结果,而不拘泥于形式。可以被拘泥的“形式”各式各样,比如方式、方法、流程、文档、部门、分工、职责都是形式。这些形式本来是设立来帮助实现更好的结果的,但是如果拘泥于此,则可能起到反作用。如果仔细审视敏捷宣言中右侧的内容,就会发现他们都属于形式,而非结果:个体与交互 重于 过程和工具可用的软件 重于 完备的文档客户协作 重于 合同谈判响应变化 重于 遵循计划这些形式曾经保证了众多早期军工、航天、航空项目的
13、成功,但若在任何行业任何项目比如敏捷开发出现时的互联网行业拘泥于此,就可能导致失败。可怕的是,左侧的4条,也是形式而非结果。所以对敏捷宣言的正确理解是:在现今的多数行业中,如果以结果导向为出发点,则左侧的形式胜过右侧的形式。支撑点:团队工作为什么说团队工作利于结果导向的实现?有一个兄弟射雁的例子可以说明:三个兄弟看着大雁飞过,一个说要射下来烤着吃,一个说要炖着吃,另外一个则要炒着吃,三人争执不下,大雁都飞走了。比如有一个bug,人们不去分析怎样改正怎样预防,而是讨论是谁的责任;比如有一个任务,人们不去分析怎样做最快,而是讨论应该谁做;比如有一个变更,人们不去分析变更前后甲乙方是否有利,而是讨论
14、应该哪些部门走怎样的流程;比如有一个产品,人们不去分析怎样做才能成功,而是讨论成功后应该怎样考核就很难直指结果,而陷入部门和个人的纷争之中。这里倒不是说后者不需要考虑,而是说出发点问题。如果思考问题的第一念头是“我”“我们”“他”“他们”,那么团队协作就建立不起来,敏捷开发也做不好。几个真实案例这几个团队都是我自己亲身经历的团队,从质量的角度来分析敏捷团队的工作方式。第一个是一个较为大型的团队,约有2530人,研发一个单一产品。这个团队在一年半的时间里边,从5个人成长为25人,其中有一半人员来自刚毕业不到半年的本科或硕士(在2001年,还很难找到“有10年经验的编程人员”);在这个团队拥有25名成员的时候,只有12个测试人员。按一般的常理而言,这个产品应该面临很大的质量问题,因为这些新来者应该编写大量的缺陷,而测试人员又严重不足,不足以发现这些缺陷。但实际情况是,这个产
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年白糖道路运输服务协议范例版B版
- 2024年社区便利店商品库存管理与销售预测合同3篇
- 2024版服务器租赁合同下载
- 2024年高速公路拓宽工程征收补偿合同
- 2024年生物医药研发与许可协议
- 西藏集中式光伏电站(10MW以上)建设流程
- oqc组长岗位职责(共5篇)
- 2023年第一季度思想汇报
- 老年护理-复习题
- 2025年度建筑工程施工安全管理及文明施工责任书3篇
- 湖北省部分市州2024-2025学年高二(上)期末考试物理试卷(含答案)
- 危急值登记及流程
- 2025寒假 家长会 课件
- 2025年中国国新控股限责任公司招聘2人高频重点提升(共500题)附带答案详解
- 绿城营销策划管理标准化手册
- 采购部5年规划
- 《公路养护安全培训》课件
- 股东合作协议书标准范本
- 干法读书会分享
- 进阶练12 材料作文(满分范文20篇)(解析版)-【挑战中考】备战2024年中考语文一轮总复习重难点全攻略(浙江专用)
- 非营利组织薪酬标准与管理
评论
0/150
提交评论