为什么你做不好 Code Review?

为什么你做不好 Code Review?_第1张图片

题图:by kacozi from Instagram

上周和极客时间专栏作者——也是图书《跃迁:从技术到管理的硅谷路径》的作者——朱赟(安姐)博士做了一场关于技术和管理的直播,其中讨论了不少有趣的主题,我会陆续整理出来发到 MacTalk 上。今天先聊聊 Code Review。

Code Review 在国内一直算个痛点,明知道是个好东西,就是用不好。要么是制度问题,要么是流程问题,要么是观念问题,据我了解,国内 Code Review 做得又好又有效的,不算多数。我自己创业之前,也在几家公司工作过,并试图推行过 Code Review,最终都无疾而终,不知道是不是咱们中国工程师都不大喜欢看别人代码,也不喜欢别人看自己的代码并提出改进意见呢?

但是,我接触到的很多硅谷华人工程师,Code Review 做的非常好,比如在 Airbnb,没有经过 Code Review 的代码是不可能部署上线的,关于这个问题,我请教了朱赟博士。

其实朱赟在自己的书里详细的探讨过 Code Review 的利弊和做法,不过在直播节目中,她又做了提纲挈领的总结,并提出了一些有趣的观点。朱赟认为:

从零到一是困难的,国内之前没有 Code Review,想要去做,其实就是去模仿一个好的体质。这个不是一件容易的事。因为别人的体制,就比如说美国的这个宪法,它有多强我们都知道,立宪这么多年了基本上就没有改过。别的国家试图去抄美国的宪法,怎么着都没有办法实现。因为这样的体制与人、环境、观念息息相关,并不是放之四海皆准。

有些东西别人可能在自己的地盘玩儿的很转,但是你抄过来就玩儿不转了。为什么?因为别人从零到一的原因跟你不一样。就好像为什么微信跟支付宝在中国做的这么牛,美国就不行?并不是说技术上有多难,而是有很多的背景信息在里面的。

如果你真的是觉得 Code Review 有用,想去推进这个方法,光靠团队里的几个人有想法是不够的,有三种可能的可行建议,我在这里和大家沟通一下:

第一、自下而上。你要让所有的人都认识到这个东西的重要性,所有人都同意去做这件事情,并且是非常认真去执行。这需要进行大量的沟通工作,是一个自下而上的过程。

第二、自上而下。团队里有个关键人物,比如总监或技术经理,可以拍板建立一个制度,这个制度强制到你没有严格的 Code Review,就不能上线。如果你没有严格的执行 Code Review,认为自己的代码 OK,一旦后期发现代码问题或不合规范,要有严厉的处罚措施。这是自上而下的 Push。

第三、建立完整的制度和流程。开启一个新的事物需要有充分的准备,不是说来我们做 Code Review 吧,就能把这个事情做成。在开始之前,先建立 Guideline(指南),把大纲和规则列出来,比如 if else 不能超过多少层,异常的处理办法等等。把这些规则和 Code Style 做成一个系统的文档,然后再根据这样细致的法则去做,就会比较容易一些。

朱赟说到这里,我补充了一点,就是工具的重要性。最初没有 Github 或 Gitlab 的 Pull Request 功能,大家会用各种方式去做 Code Review,比如 Review Board,用起来很难受,体验和效率都比较差。当然了,安姐说工具是次要的,制度才是主要问题,我也是同意的。不过,如果一个工具或流程让人操作起来既繁琐又复杂,可能也是阻碍 Code Review 的一个原因吧。

好在现代工程师们基本都认同了现有的 PR 机制,所以我和大师也准备在团队里推行一下 Code Review,希望为大家做出更高质量的「极客时间」。

如果你不知道什么是 PR,可以参考GitHub 为编程世界带来了什么改变?

关于 Code Review,安姐在《跃迁》这本书里有一篇文章做了非常详尽的介绍,叫做「硅谷人如何做 Code Review」,感兴趣的可以买来读读。

你有什么 Code Reivew 的故事,也可以留言区告诉我。


卖桃者说

最近「极客时间」的发展突飞猛进,大家也可以看到,我们最近上线的架构专栏,马上就要突破一万订阅了。这将是我们第一个万人大课堂。用户量的增加给我们的产品提出了更高的要求,目前我们已经招进来一个资深的安卓工程师,所以安卓的体验很快就会改善。现在还需要一个中高级的 iOS 工程师,能和我们一起来改进和提高极客时间 iOS 版的产品体验。如果你想长久的为技术社区和 IT 从业者提供产品服务,可以考虑加入我们的团队。

要求:

1、3-6年的 iOS 开发经验,有成熟的作品
2、我们用的是 OC + Weex 的开发模式,你只要 OC 特别熟就行,能懂 JS 更好
3、开发过 iPad App 的优先考虑。无数人要求我们做 iPad 版本的极客时间了

简历请寄:[email protected]

希望与你一起打造一款伟大的产品。

你可能感兴趣的:(为什么你做不好 Code Review?)