代码审计(Code Review)
[TOC]
聊一聊 Google 是如何做 Code Review 的
- 腾讯工程师,万字长文说 Code Review
- Code Review 的巅峰
- Code Review 快把我逼疯了
- 技术团队如何高效的落地代码CR
-
[Google官方:How to do a code review eng-practices (google.github.io)](https://google.github.io/eng-practices/review/reviewer/)
为什么国内企业不重视 Code Review?
很多人会认为是:“项目工期紧,没时间做 Code Review”,但是…不忙的时候你做了吗?你一直呆的公司都是这么忙碌吗?之前做过很好的 CR 实践吗?如果让你来做 Code Review 你准备怎么做?
回答不上,那么其实就是不重视,因为缺乏 “技术文化传承”,一个 996 的工程师到了其他的公司,也大概率会带领新团队继续 996 而已。其次就是…要面子,讲究“为人处世”,有问题又不好意思当面指出
Code Review 到底是在考察什么?代码质量、代码规范、代码设计问题。
问题:如果新项目或新需求之初,一次提交几十个文件、几百行代码…怎么落地 code review?
Google 是如何进行 Code Review 的?
-
每次提交的代码片段叫做一个 CL(Change List),每次提交一段至少含 100 行代码且稍微复杂的 CL 给 CR 评审委员会,但 CL 不能太大,太大容易导致 Review 缓慢,迟迟不能合并代码,最终引发代码合并时冲突…
CL 必须有前因后果描述、上下文背景,让 Review 人员能一眼看懂设计意图,及时当面高效沟通
-
委员会委派一名资深工程师给你 Review 代码,并提出修改建议,反复进行,直到他觉得没有问题(最终提交的代码是一个 可读代码、符合编码规范代码)才会给你颁发一个 Readablity 证书:代码结构是否何来?代码是否容易理解?业务是否正确?异常考虑是否全面?是否有隐藏 bug?代码是否安全?性能是否满足业务需求?是否满足编程规范?
Google 那些让人值得学习快速成长的地方?
-
完善的培训课程:如新技术分享、对新人友好的入门级101教程、比较有深度的系列教程、G2G计划-公司内部人员录制视频分享给其他的同事(有优质课程提供学习,且不反对员工占用上班时间来学习)==> 问题:如何合理的评估出工作需要的时间?
-
公开的文档和代码:项目的设计文档、代码及架构设计,除了核心代码基本都内部公开学习
看别人代码是看什么?带着问题去看,参考别人的设计思路、实现技巧方案,从而提高自己的设计和实现能力
-
清晰的成长路径:公司关注员工的个人成长,希望跟员工共同进步,而不只是将员工代做达成目标的工具。在不同阶段,公司会帮组员制定不同的成长计划
- 新人入职:学习编码规范、单元测试、Code Review、开放工具、行为准则等
- 导师制度:新人入职更多是迷茫不知道自己的工作目标是什么?导师制度可以更好帮新人明确目标,也可以通过导师更好快速的融入公司
- 每隔半年,Leader 会跟你一块制定 OKR,包含你的:工作目标、个人成长部分目标(学习、个人成长方向都可以写)
- Leader 会协助你制定升职计划,如:做什么项目、做哪些有影响力的事情、管理多大的团队等等,也会有意安排一些帮你晋升的事情给你做
- 鼓励内部转岗,鼓励跳出舒适区,换岗到其他的团队,用不熟悉的语言、不熟悉的技术做一些不熟悉的项目
听小争哥对 Google 工程师文化的解读
- 什么是工程师文化?技术团队的价值观(这个团队最看重什么,比如效率、质量等等),更直白点讲就是做事风格。
- 为什么想学习 Google 工程师i文化?打造优秀的技术团队-执行力强、工作效率高、创新能力强的优秀团队
- 作者认为 Google 的这种文化是如何形成的?
- “尖子生”文化,Google 在用人条件苛刻、招聘要求高,过滤出了一批优秀的工程师,而这批优秀的人聚集在一起只需要稍加引导就可以形成优秀的工程师文化,如:高产出、高效率、高创新,至于前方说的“重视代码质量”、“工匠精神”、“重视效率”…自然不在话下
- 招最优秀的人才,给足钱、自由和尊重,这些人必然发挥最大价值
- 控制住招聘人才入口:如乔布斯所说:“A 类工程师招聘 A 类工程师,B 类工程师只能招聘 C 类工程师”
- 普通公司如何参考呢?
- 招聘一小撮足够优秀的工程师,让这部分工程师影响公司里更多的人,带动起我们想要的工程师文化
- 人才培养上,尽可能留住最符合公司工程师文化的员工,让他们在公司内部有好的职场发展,避免劣币驱逐良币