10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

微软邹欣分析 Scrum 开发流程的问题和经验

  • 2012-10-08
  • 本文字数:2306 字

    阅读完需:约 8 分钟

邹欣是工作于微软亚洲研究院的研发经理,同时也是《编程之美》和《移山之道》的作者。前不久,他在博客上总结了自己使用 scrum 开发流程的经验。

在对 Scrum 的基本概念和流程做了简单介绍之后,邹欣提出几个在实践中会遇到的问题:

  • 各个需求和任务之间是有种种复杂的依赖关系的,除了优先级之外, 我们还要考虑相互的依赖关系。怎样在计划中表现依赖关系呢?
  • 如果团队成员对某个任务不感兴趣, 都不认领这个任务怎么办?
  • 有些成员的认领的任务很多, 有些成员认领的任务很少, 忙闲不均, 怎么办?
  • 每日立会流于形式怎么办?

针对这些问题,邹欣提出几个改进方法:

  • 定义好任务究竟是什么? 任务的完成 (done) 到底意味着什么? 每个人的任务必须是明确定义的
  • 要在每一个任务中记载我们完成这个任务还需要多少时间。已经花了多少时间虽然重要, 但是不是关键 (那是沉没成本),关键是要看我们离最后目标有多远。
  • 有些燃尽图只是列出了任务的数目, 这种图无法展现项目的拖延, 一个任务有大有小, 它们在图表中都是一个点, 一个 16 小时的任务需要 3 天完成, 一个 2 小时的任务处于种种原因也花了 3 天时间, 他们在图表中的表现是一样的。 在实践中, 我个人认为以时间为度量的燃尽图更有效果

邹欣接下来对于“任务完成”这件事又提出问题:

做过项目的人都知道, 当你说“任务都完成了”的时候, 那只是说, 开发人员认为该写的代码都写完了, 还有很多事情没做完。 例如写一个 Windows 客户端的功能, 显示一个新闻图片加上和与它相匹配的文字 (假设这些图片 / 文字都可以从互联网上拿到) , 做完之后, 还有下面的事情:

  • 验证这个功能显示在 WinXP, vista, win7, win2008 server R2, win2012 server 都显示正确。 (开发人员表示自己的机器是 win2008 server, UI 看起来不错, 其它平台想必也不错!)
  • 验证这个功能的显示布局和字体在 100% 到 150% 的 DPI 上都显示正确, 在各种色彩配置中都显示正确。
  • 验证文字无论是中文, 英文, 阿拉伯文都能正确显示 (联合国五种工作语言我们得支持吧? )
  • 验证程序效能上没有问题
  • ……

谁来做这第三步半呢? 程序员写完功能的时候, 我们感觉好像项目完成了 80%, 殊不知后面的 20% 往往要花费 80% 的时间, Sprint/Scrum 没有明确表明到底 何人 / 何时 / 何种优先级 来完成这个 20% 的任务。

对于测试人员的职责问题,邹欣提出:

测试人员在一个冲刺中怎么工作呢? 有敏捷专家建议测试人员可以担负起 Product Owner 的部分责任,同时掌握 Acceptance Test 流程, 对产品的最终质量负责。 但是测试人员的开发技术能力在团队中并不占优 (在有些中国公司中甚至是最弱的一环),他们在大家都要 “烧光”所有任务的压力下,能担当起 Product Owner 这一责任么?

上面这两个问题,邹欣并没有给出明确的答案。

邹欣认为:ScrumMaster 是 Scrum 实施是否能够成功的关键。

我听到有些团队也实施 Scrum, 但是他们随机挑一个成员来做 ScrumMaster, 好像 ScrumMaster 就是招呼大家开开会, 记录每个人的进度而已。这种方法失败的可能性很大。 一个好的 ScrumMaster 能在两种语境 (描述软件项目的商业语境,描述实现细节的技术语境) 自如地翻译和切换,事实上是一个强有力的 PM,如果团队还要求她做全职的开发工作,这样的人就更难找了。

不过邹欣认为 Scrum 也没有那么特别,它和质量控制理论的模型,比如经典的戴明环 PDCA 没什么区别,在 6 西格玛理论中也可以看到相似的流程—— DMAIC (Define, Measure, Analyze, Improve, Control),与渐进交付的流程(Evolutionary Delivery)也很类似。

对于 Scrum 团队,邹欣指出:自我管理、自组织、跨职能,这三点要求看似简单,实际上很难做到。

自我管理:

以前领导布置了任务,我们实现就可以了,现在要自己挑选任务;每次 sprint 结束之后,还要总结不足,提出改进,并且自己要实施这些改进。“自我管理”不等于“没有管理”。

自组织:

以前做好自己的事情就好了,安心下班。现在每个人要联合起来对项目负责,有人工作落后了还要帮助他改进,项目缺少某类资源还要自己顶上去。

跨职能:

以前 spec 由 PM 来写, test 由测试人员来做, 现在每个人都全面负责,自己搞定 spec, 和别人沟通, 同时自己搞定测试。

他强调:

如果你的团队很弱, 那么强行把 Scrum (或者其它高级方法)套在上面也没有用, 也许还会适得其反,往往需要多次 Sprint 才能让 Scrum 走上正轨。换句话说, 如果你的团队已经是这么厉害 (self-managing, self-organizing, cross-functional)的一帮人, 那么用不用 Scrum 都能写好软件!

最后,邹欣总结了一些实践者的经验教训:

  1. ScrumMaster 不是一个官,而是一个没有行政权力的沟通者,就像微软的 PM 那样。她同时还要在团队中做具体的工作。直接把原来的 “经理”变成 ScrumMaster 大多行不通。
  2. 在一些公司中,不少项目需要很多暗箱操作和政治角力才能搞定, Scrum 会把这些矛盾都摆到明处。这有好处,也有风险。
  3. 在复杂的项目里,要让一线团队成员做决定。
  4. 创业公司的团队其实经常是运行在 Scrum 的模式中 (只不过大家太忙,没功夫论证到底多么 Scrum)。
  5. 在 Scrum 计划阶段的估计不是一个“合同”, 领导们不要把它当成一个合同。估计总是不准的。 坚持短期的 Sprint,即使不准的估计也不会有大的损害。
  6. 不要和管理层谈 “流程”, 他们只关心 “结果”。
  7. 在大型团队,复杂项目中,Scrum 并没有非常完美的答案,Scrum 的创始人也承认这一点。 (我曾看到 30 多人挤在会议室里搞 Daily Scrum,一叹! )

在结尾时,邹欣提出:

Scrum 不是 “银弹”,不能解决软件开发的所有问题,至于具体项目进度如何跟踪, 如何管理测试工作,如何管理复杂项目, 还要靠战斗在一线的团队成员见招拆招,想出合适的办法。

2012-10-08 21:033440
用户头像

发布了 479 篇内容, 共 175.1 次阅读, 收获喜欢 53 次。

关注

评论

发布
暂无评论
发现更多内容

JVM中的对象及引用

Ayue、

技术专题合集

做一款互联网内容平台,到底要懂多少AI?

百度开发者中心

AI

Go语言学习查缺补漏ing Day2

恒生LIGHT云社区

Go 编程语言

滚雪球学Python系列,真能学会Python!

梦想橡皮擦

内容合集 签约计划第二季

火山引擎+焱融 YRCloudFile,驱动数据存储新增长

焱融科技

云计算 分布式 云原生 高性能 文件存储

清空数组的几个方式

编程江湖

大前端

如何在 Flutter 中设置背景图像【Flutter专题15】

坚果

flutter 28天写作 签约计划第二季 12月日更

【Java】代码重构时,为什么禁止在方法内对对象类型的入参赋值

恒生LIGHT云社区

Java 代码规范 java代码规范

青藤解密:72%客户容器规模>100个,[镜像安全]谁来保护?

青藤云安全

镜像安全

模运算和与运算的一点儿简单思考

LSJ

位运算 二进制

Redis架构实战:高并发情况下并发扣减库存

编程江湖

java编程

打造基于 PostgreSQL/openGauss 的分布式数据库解决方案

SphereEx

数据库 开源 分布式数据库 ShardingSphere SphereEx

CIO如何制定低代码/无代码战略

BeeWorks

开始读 Go 源码了

AlwaysBeta

golang 源码 源码阅读 源码剖析 Go web

MySQL「 Every derived table must have its own alias」1248 错误修复法

蒋川

数据库 MySQL 运维 MySQL 数据库

复杂场景,从OpenTSDB迁移到TDengine的最佳实践

TDengine

数据库 tdengine

软件工程师年满 40 岁,下一步怎么走?|本周话题

InfoQ写作社区官方

生涯规划 个人成长 职业规划 话题讨论

同态加密实现数据隐私计算,能让你的小秘密更加秘密

华为云开发者联盟

数据 加密 同态加密 联邦计算 数据隐私计算

等保工作五大误区汇总,让你更懂等保!

行云管家

网络安全 等保 等级保护

架构实战营 模块七作业

felix

「架构实战营」

HBase 和 Hive 的差别是什么,各自适用在什么场景中

编程江湖

大数据

详解工作流框架Activiti的服务架构和组件

华为云开发者联盟

工作流 工作流引擎 BPM Activiti BPMN

mPaaS 月度小报|魔方卡片(Cube)公测,十个卡片模板任意使用

蚂蚁集团移动开发平台 mPaaS

小程序 消息推送 移动开发 API网关 cube

给弟弟的信第1封|兄弟是父母带给我们最好的礼物

大菠萝

28天写作

前端开发怎么学习才能更快的提高学习效率

@零度

大前端

面对行业难题,华为云邀请物联网全行业拿出“亮剑”精神

华为云开发者联盟

IoT 华为云 LiteOS HarmonyOS IoT边缘

百度智能客服斩获 “金音奖—中国最佳客户联络中心技术与解决方案奖”

百度大脑

人工智能 智能客服

模仿UP主,用Python实现一个弹幕控制的直播间!

Zhendong

Python

莫要寻找可能不存在的答案

FunTester

学习 解决方案 自学 FunTester 思路

大数据开发技术应该怎么学习入门才好

@零度

大数据

什么是云计算?云计算特点是什么?

行云管家

云计算 公有云 混合云 云资源

微软邹欣分析Scrum开发流程的问题和经验_Scrum_郑柯_InfoQ精选文章