代码检视等于需求评审吗?

代码检视相信大家都非常熟悉,质量管理体系是非常重视代码检视的。然而随着软件工程技术的快速发展,代码检视的作用似乎也不再局限于只是走查一些代码层面的缺陷。


越频繁的代码检视,越有助于质量管理,越有助于需求管理!

从华为出来的QM 武老师,现在就职于腾讯,从事质量管理工作。她曾经在Tid大会上发表过在腾讯推广的“代码检视”,谷歌、facebook常用的“提交前线上检视”。武老师追求的是通过技术骨干检视代码,严格控制交付进入集成环节。同时武老师也在追求快交付,规定每次交付的代码不能超过150行,一方面是方便技术骨干进行检视,另一方面也是引导团队将工作拆解,在合适的交付物上快速进入实现、检视、修改的演进,快速的找准方向。通过这种快,大量缺陷在检视环节被发现,极大提升了产品的质量。

笔者在实践中,也在追求快。每个交付被拆解到100-300行代码,团队成员一写完代码,就被笔者要求召开代码检视(上午写完,下午开始,下午写完,第二天上午开始)。通过这种快速的检视,团队在代码检视阶段发现的缺陷远超过往4倍以上,极大地提升了交付质量。

然而笔者在实践过程中发现代码检视的另一个重要的意义,它实现了面向团队的交付。在检视过程中,团队讨论的焦点,其实是需求(低级错误基本被coverity干掉了)。

通过讨论,笔者发现过自己漏掉的不少需求;
通过讨论,笔者发现团队对需求的理解越来越清晰;
通过讨论,笔者发现团员的思维越来越活跃,需求方向越来越准确。

笔者期望通过需求评审、特性澄清让团队理解需求,但效果很差,结果在这种频繁的代码检视中,越辩越明,水到渠成。

另一方面,集体检视的做法,让团队在潜移默化中向“全功能”转变,这个作用无可限量。

集体检视越频繁,团队思考效率越高,交付效率大幅提升!

集体检视经常被人诟病的一点:团队集体参加,浪费时间。这也是武老师和我发生分歧的地方。武老师认为开会需要召集人员,需要耗费时间,不够“快”,另一方面,则是一个人能完成的检视,让多个人来完成,效率低。我得承认的确还不够“快”(只能尽量快),但是我反对“效率低”这个论断。

在生产流水线上,工人重复拧螺丝增加熟练度,高级工人过来检视一下做的是否到位,非常高效。但是程序员做的工作很少是重复性,程序员从事的更多是创造性的工作,这类型的工作需要思维的活跃,闭门造车,闭关修行绝对不是推荐做法,相反,开放交流才能引古论今,创造未来。

先不说笔者的案例,我们看看团队中常见的情况。菜鸟问老员工某个问题,老员工不耐烦的说看一下代码就行了,这还不会。另一个场景,热心的老员工耐心的教菜鸟怎么解决。两种情况,哪种情况老员工的工作更高效?热心的老员工效率绝不会差。

我们常听到一个词“慢即是快”,停下来总结一下,会让未来更高效。交付压力越大,老员工越没时间去总结,菜鸟的询问是让老员工适时慢下来总结一下。说概念有点虚,我们看案例吧,某咨询公司有一个团队,每个人发20粒咖啡豆,如果别人帮助了你,你就送给他咖啡豆作为鼓励,结果有一个很nice的老员工,很多人都找他,他经常被打断,但他不仅拿的咖啡豆最多,他的开发效率也是最高的。笔者举这个案例,其实想说明一个论点:交流是高效的捷径。


回到笔者的案例,笔者是很想团队交流,但我没钱买咖啡豆^_^。

因此笔者想在集体检视的环节促进交流。问题来了,怎么让大家活跃交流?常见的集体检视,有人在打瞌睡,有人三心二意,唯有代码作者热情洋溢,滔滔不绝。其实我很希望有人能打断作者,即使问再弱智的问题。为什么没人愿意打断作者呢?因为没有利益,作者讲的代码对我没用,我都懒得思考。改进的措施来了!

试想一个球队,如果每个人都坚守自己的位置,各自为战,结果惨不忍睹。但是如果观察队友的动作,去协防,去跑位,结果将大不一样。这是为什么?利益相关,目标一致。笔者的措施是将故事拆解,一个团队扑在一个故事上。“分工明确”滚一边去,我们要集合力量一个个的攻下山头。当每个团员做的事情都非常接近时,阅读别人的代码,实际上也是在梳理自己的逻辑思路,在帮助自己交付。笔者在实践过程中,通过利益让团队喜欢集体检视,让团队喜欢上这种高效思考的感觉,让团队自发的组织集体检视。

效果:团队超过1/8的时间在集体检视,团队的开发效率提升2倍!(还不计算代码覆盖率的大幅提升)

总结笔者的措施:

1、故事拆解,一个团队扑在一个故事上
2、面向团队的交付,必须经过团队集体检视,才能认可交付
3、快交付,刚写完代码,下个时间段就组织评审。



分享者简介

符章文:2005年毕业于中国科技大学,2010年加入鼎桥通信,目前担任研发团队Team Leader兼负责敏捷推广。个人长期从事软件研发工作,致力于研究提高工作效率的方法。对于敏捷十分推崇,经常思考如何将敏捷实践和项目工作结合,提高团队效率,并将实践总结分享



                                                        中生代技术群微信公众号

                                               

时间: 2024-10-24 17:24:21

代码检视等于需求评审吗?的相关文章

软件需求评审之五个案例和九条建议

软件需求是软件开发的最重要的一个输入,需求风险也常常是软件开发过程中最大的一个风险,降低需求风险的一个重要手段就是需求评审,但是需求评审是所有的评审活动中最难的一个,也是最容易被忽视的一个评审.笔者曾经历过以下的几种失败的需求评审: 案例一 某领域专家A先生就某企业的成本管理系统做用户需求报告的评审工作,在评审会开始时间不长,就被在场的某企业的一位副总B先生打断,认为A先生提出的方案不适合本企业,A先生提出的管理改进方案在企业中无法实施.该副总提完意见后,与会的用户方人员纷纷跟随B先生的提出了他

项目经理:客户的 "需要" 不等于 "需求"

1. 项目经理:客户的 "需要" 不等于 "需求" 客户告诉你他要你给他一个西红柿,而且要马上给他,但你没有西红柿,你非常着急,最后只能告诉他,给你一个巧克力可以吗?客户居然说:那太好了.-- 其实客户的"需要"是解决饥饿的问题,但他告诉你他的"需求"是"西红柿",如果我们的项目经理不懂这个,不会挖掘和理解客户需求,那就只能老老实实的给客户去买一个西红柿了.这种PM不了解客户的真实需要.归根到底是业务的理解

【角色】——分离开代码和权限需求,即实现代码和权限需求的解耦。

    今天突然来了一个灵感,记录一下.以前总觉得说不清楚,看看这种表达方式是否可以说清.   两个原则:依赖接口编程,不要依赖实现编程:最小获知原则.   面向对象最重要的是什么?抽象.那么在权限这方面我们要如何抽象呢?       最小获知原则 角色本身就是一种抽象出来的东东,用他来做隔离是最好不过了.因为客户里面是没有"角色"这个东东的.客户有岗位.部门.个人或者是工作组,但是就是没有角色.不是有句话吗,"什么?你不知道,那就好办了".引用一下就是"

iOS - CodeReview 代码评审

1.CodeReview Code Review 中文应该译作 "代码审查" 或是 "代码评审",这是一个流程,当开发人员写好代码后,需要让别人来 review 一下他的代码,这是一种有效查找系统缺陷的方法.由此,我们可以审查代码的风格.逻辑.思路 ......,找出问题,以及改进代码,保证软件总体质量和提升开发者自身水平.因为这是代码刚刚出炉的时候,所以,这也是代码重构,代码调整,代码修改的最佳时候.所以,Code Review 是编码实现中最最重要的一个环节.

利用RTC自带的代码审阅工具进行代码的评审

本文介绍了 IBM Rational Team Concert(RTC)的代码评审功能(Code Review).这一功能可以使代码评审流程变得更加规范,完善代码提交流程:对于不同区域的成员可以更高效的http://www.aliyun.com/zixun/aggregation/18521.html">协同工作,在代码提交前发现到潜在的问题,尽快修复,提高代码质量,有效减少缺陷数. 代码评审的重要性 多数情况下,评审者能够发现开发人员自身不能发现的问题或潜在问题,毕竟思维方式和考虑的点等

基于 Rational Team Concert 定制代码评审流程及工具

引言 IBM Rational Team Concert(RTC)是 IBM Rational 面向软件交付技术的下一代协作平台-Jazz 平台上的软件开发环境,它通过集成工作项追踪.源代码控制和可配置的流程管理来实现敏捷开发.其中流程管理是其区别于一般版本管理工具的一个重要功能,它更注重于将对代码的管理融入到整个代码的开发周期和团队协作当中去. 本文基于 RTC 定制了一套代码评审流程.该流程能够帮助 Moderator 管理评审任务,分配评审任务给多个 Reviewer,以及追踪代码评审中发

C语言代码评审小结

概述 在实际的软件开发项目中,代码评审是一个必不可少的流程.代码评审,也称之为代码复查,是指通过阅读开发人员所写的代码来检查源代码与编码规范的符合性以及代码质量的活动.总的说来,代码评审的好处有以下几点: 第一,发现程序问题,提高代码质量. 第二,理清代码逻辑,开阔编程思路. 第三,促进团队交流,提升开发技能. 代码评审的大体流程是这样的: 第一步,团队负责人(通常是开发经理)提前预定好会议室,并通知参与代码评审的人员,让他们做好准备. 第二步,在评审会上,讲解员大声阅读被评审的代码,评审人员就

同行代码评审过程中的实践经验

数百万年前,猿从树上下来,进化出了对生拇指,最终,变成了人类. 我们以类似的眼光来看下强制性代码评审(Code Review):好像是一种能在软件开发这块广阔的领域里将人类从兽里分离出来的东西. 不过,我有时候会从我们的团队成员里听到下面这样的评论: "这个项目的代码评审根本就是浪费时间." "我没有时间做代码评审." "我的项目发布延期了,都是因为我那懦弱的同事还没有做任何评审." "你能相信我的同事竟想让我在代码中改点东西吗?请向他

评审技术在高质量软件开发中的应用分析(下)

接评审技术在高质量软件开发中的应用分析(上) 三.评审在高质量软件开发的实际应用 3.1 高质量软件开发项目介绍 高质量软件,如电信软件.金融证券类软件等,有较严格的要求:可用性要求非常高,并且不会因为系统维护和扩展而带来运营中断:支持使用现有管理工具和标准进行远程管理:能够提供更出色的性能以及运营在高可用性集群上的能力,减少任何单点的软硬件失效现象.五个九(99.999%)意味着一个系统的宕机时间一年不超过5分26秒.因此高质量软件项目是一种对可用性.可靠性.稳定性要求非常高的软件项目,要求软