写点什么

12 月 27 日 QClub 深圳活动要点速报

  • 2008-12-29
  • 本文字数:2635 字

    阅读完需:约 9 分钟

2008 年 12 月 27 日在深圳举办的活动是 QClub 第一次走进华南地区,50 多位同行聚集在华为互联网业务部漂亮的新办公区里,与王速瑜和周代兵两位嘉宾一起分享腾讯公司在开发互联网产品过程中的经验和体会,以及华为软件公司的敏捷之路。

腾讯公司在开发互联网产品过程中的经验和体会

主讲是腾讯公司的 R&D 研发总监王速瑜。腾讯的互联网产品要求新求快,需求不确定的程度很高,必须快速适应变化。


用 QQ 漫画形式推介敏捷

在腾讯敏捷产品开发流程 TAPD(Tencent Agile Product Development)中,结合了类似 FDD 的做法,由产品经理归纳的特性去驱动开发,过程上借鉴 Scrum,具体实践借鉴 XP。迭代计划会议强调所有人员都参与,包括 UI、QA 等等部门,共同探讨各种困难,评估工作量。每开发完一个需求,都要根据用户调研、会员测试等途径得到的数据做回顾。互联网应用用户基数大、产品分发容易,而且他们可以很容易地根据后台数据分析用户行为,以之判断新特性是否成功。利用以上特点,他们通过逐步增加新特性的用户量、多个版本交叉升级的“灰度发布”方式,做到早发布、常发布。

通过明星产品 QQMail 的实践,观察到团队成员的心情在逐步向好,同时用户量也有 10 倍以上的增长,这些效果坚定了他们继续推行的信心。

腾讯很重视工具建设,比如有内部门户帮助团队间的交流研讨,有类似 Mingle 的迭代计划工具等等。王速瑜还提到一个“团队股市”的有趣应用,可以反映出团队的敏捷能力上升情况,帮助衡量团队能力,也起到激励的作用。

实践中也遇到一些困难。比如站立会议对于二三十人的较大团队负担较大,时间长了之后变得形式化和呆板。为此他们采取了轮流主持等方式加强参与感和增加刺激,但结果还不能令人满意。有的团队改用虚拟方式增进效率,也更适合分布式团队。

结对编程的推行也不太成功。开始的时候效果很好,因为看到质量提高,团队成员也愿意去做,但逐渐由于项目压力大而放弃。

其他困难还有每年上千毕业生要融入团队,大型产品 QQ 客户端发布周期长达半年以上,诸多问题尚在探索之中。

华为软件公司的敏捷之路

第二位分享的是周代兵,华为软件公司软件工程部经理。华为的转变经历了很长的过程。首先是引入 IPD(Integrated Product Development)改变了游击队做法,成功将企业从自行摸索的技术导向转变为市场导向。接着引入 CMM(I),大大提高产品质量。IPD+CMM 形成的项目管理、质量保证体系确保了企业的正常运作。

然而, 在华为的传统做法中,过于偏重对过程的控制,忽视了人与工具的因素。流程控制使得产品质量可控,进度有保证,管理层亦较容易了解进度。但软件开发不同于生产线上的重复劳动,是创造性的工作。严守流程能完成任务,但其成效是未知的。片面追求运作规范,结果是完美的报告的背后,可能是质量完全不相称的交付物。

华为还引入了 RUP,尝试用迭代去解决瀑布方法交付周期长的问题,但发现 RUP 虽然全面、完善,但并不能切合需要。于是 Scrum 和 XP 进入了他们的视野。


复习了一遍 Scrum 和 XP

在实施中,他们利用精益思维去发现需要改进的地方,有选择地采纳一些 XP 实践,并以 Scrum 去补足 XP 在管理上的弱点。举例来说,他们用结对去代码复审和沟通的问题;用 TDD 去“做刚好够用的事情”,避免在无用的产品功能上浪费资源(曾有产品高达 50% 的功能无用);用看板和 ScrumWorks 等软件工具去维持项目进度的可视化;整合原先按照开发、测试等阶段划分的团队,消除“停工等活”的浪费。

在转变的过程中,他们并非全盘放弃传统做法,而是将 IPD 移到上层用在决定投资决策方面。然后用敏捷团队逐渐代替 CMM 团队。团队被赋予对自身采用何种方式的选择权,运作良好的项目可以继续下去。同时他们观察到以前所谓的“烂项目”会主动选择变化,正说明这些项目不适合瀑布方法。

他们也认识到改变需要很长的时间,从关注过程到对人的关注牵涉到文化的转变,而习惯根深蒂固,利益不同更是会产生以邻为壑的做法。为此他们用“一体化团队”去打破部门之间由于利益不同造成的 “部门墙”,将交付成功与所有人的利益关联起来;帮助成员做角色的转变,比如将过去充当警察角色的 QA 变成教练和 Scrum Master 的角色;重新设计办公室布局以促进交流。

周代兵将华为的敏捷之路形容为“一夜的引入,长时间的改变”,他们还在“Moving”之中。

Q&A

以下是部分 Q&A(根据编辑笔记整理要点,非原话):

  • Q:开发与测试如何配合分工?
    王:测试不是某一部分人的责任,也不是到后期才做,从迭代计划就已经提出目标。需要平台工具才能保证。

  • Q:FDD 如何实现对程序员的质量约束,TDD 放在什么位置?
    王:FDD、TDD 使用到不同阶段。FDD 的目的在于让成员关注产品目标,鼓励成员提出想法。没有做 FDD 的建模部分,更接近于产品 Backlog。Web 产品对建模的要求低,因为很容易得到用户反馈,第二天就可以发布新版本给一部分用户。TDD 处理编码部分的问题。有了持续集成之后,才将所有实践贯穿起来。

  • Q:结对的目的?
    王:把培训放到结对中,还有代码复审的作用。

  • Q:是否轻文档、重代码?
    王:不是没有文档,关键文档仍然是必须的要求。但文档写到什么程度,团队成员达成一致意见即可。团队之间交换成员,把人员放到不同项目中去,也有助于发现哪些文档是沟通中不可缺少的。

  • Q:推行敏捷是否“一把手工程”,如何使领导觉得敏捷是成功之路?
    周:绝对是,没有管理层的认可不可行。推动者有教育管理层的任务,可以借助外力推广理念,可以用标杆项目增加说服力。不打旗号地去传播经验。

  • Q:绩效考核如何适应敏捷方法?
    周:华为过去非常重视可度量化,现在也仍然如此。曾经根据很细致的数据去做度量,但发现过程性的东西对产出的结果没有太大关系。因此现在改为关注结果,只用很少、很粗的数据去量化。由于传统的惯性还需要做很多说服工作才能扭转。

  • Q:测试人员的绩效如何衡量?
    周:过去用测试发现的问题量去衡量;现在用客户反馈的问题量去衡量绩效。

  • Q:计划时如何确定功能点数量?
    周:先确定迭代周期,一般为 2~4 周,根据在此期间能完成多少来确定。开始的时候不熟悉会少一些,后期可多一些。

  • Q:生产力提高多少?
    周:差不多。但明显改变交付能力,客户满意度增加。不同团队的生产力数据离散度增加了,可能与团队能力参差有关,还有待研究。

  • Q:实在多次迭代之后重构,还是每次都重构?
    周:重构有不同的维度。小范围的重构,个人编程的时候就会频繁进行。在增加许多功能之后可能发现架构上不适应,需要做大层面的重构。


分组讨论


谢谢大家

PPT 和现场视频正在制作之中,还要晚一些才能呈现给各位热心读者。

2008-12-29 20:211586
用户头像

发布了 225 篇内容, 共 71.8 次阅读, 收获喜欢 52 次。

关注

评论

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

Carina 本地存储入选 CNCF 云原生全景图

BoCloud博云

开源 cncf 本地存储

怎么做App分发?

InfoQ IT百科

TASKCTL 作业流程无触发设计

敏捷调度TASKCTL

大数据 DevOps 分布式 自动化部署 ETL任务

深入JVM内置锁 synchronized 底层

janyxe

JVM synchronized synchronized锁升级过程

真香!盘点云主机三种典型应用场景

天翼云开发者社区

云主机

百尺竿头更进一步 – Amazon Aurora 的读写能力扩展之 ShardingSphere-Proxy 篇

亚马逊云科技 (Amazon Web Services)

Tech 专栏

一文详解:企业数字化的未来基石——微服务

穿过生命散发芬芳

微服务 4月月更

数据连接一切,开启融合数据云新时代——星环科技春季新品发布周盛大开启

星环科技

天翼云战略发布“5G+天翼云+AI”三生万物 赋能5G时代数字化转型升级

天翼云开发者社区

App能收集哪些个人信息?

InfoQ IT百科

Java篇-序列化与反序列化

是老郭啊

Java 对象 序列化 反序列化

Android C++系列:C++最佳实践5 const

轻口味

c++ android ndk jni 4月月更

新基建下纵览全局,2+4+31+X实力出镜

天翼云开发者社区

云计算 云技术

不care工具,在大数据平台中Hive能自动处理SQL

华为云开发者联盟

sql 大数据 mapreduce hive 数据分析

如何提升研发效能实现 10 倍研发效能提升

阿里云云效

云计算 阿里云 云原生 研发效能 研发

厉害了!天翼云电脑开启5G商用第一站

天翼云开发者社区

Hoo虎符研究院 |ETH2.0合并在即 速来围观流动性质押赛道的潜力项目

区块链前沿News

eth 虎符 Hoo 虎符交易所

如何应对“科技人才热”?华为云联合慧科集团加速培养模式创新

华为云开发者联盟

教育 华为云 高校 华为云路网数字化服务 慧科

一个比Postman好用的工具,不试一下?

Liam

前端 后端 Jmeter Postman swagger

【MARS TALK 05】今日头条 App 基于火山引擎MARS研发流程最佳实践

字节跳动终端技术

android 今日头条 字节跳动 研发

Carina 的根基与诞生背景|深入了解 Carina 系列 第一期

BoCloud博云

开源 本地存储

TASKCTL 容器签出失败解决方法

敏捷调度TASKCTL

大数据 DevOps 分布式 ETL 自动化运维

Docker 实战教程之从入门到提高 (八)

汪子熙

Docker 容器 docker image 容器镜像 4月月更

App分发是什么意思?

InfoQ IT百科

Envoy熔断限流实践(一)基于Rainbond插件实现熔断

北京好雨科技有限公司

Kubernetes PaaS envoy rainbond

java高级用法之:JNA中的回调

程序那些事

Java Netty 程序那些事 4月月更

IM开发技术分享:浅谈IM系统中离线消息、历史消息的最佳实践

JackJiang

网络编程 TCP协议 即时通讯IM im开发

容器化应用:我们都经历了什么

Rayzh

Docker Kubernetes 云原生 Cloud Native

GPU市场规模和各子市场趋势分析

Finovy Cloud

人工智能 gpu

毕设:设计电商秒杀系统

王大胖

中国云终端市场发展报告发布天翼云稳居领导者地位

天翼云开发者社区

案例 认证

12月27日QClub深圳活动要点速报_研发效能_郭晓刚_InfoQ精选文章