新人与code review
通常commtter都是一些比较资深的员工,因为通过阅读代码发现问题,需要:
- 迅速读懂代码,意味着比较好的代码抽象能力
- 通过阅读代码识别问题,意味着比较丰富的编码经验和调试经验
那是不是职场新人就不适合对别人的代码code review呢?这可能是很多人的第一印象,但如果你是新人,也这么想,那么你就失去了很多主动学习的机会。
code review更多的是一个沟通过程。评审人毕竟不是owner,他对代码的熟悉程度大概率是远不如提交人的。评审者多是根据自身的开发经验,以及短时间内对提交代码的理解发现问题。大多数时候,因为每个人的经验,性格,看问题的角度不同,多数时候是抛出一些问题,并形成讨论。当思想发生碰撞时,确实会发现一些问题,或者形成一些更好的想法和设计。这些都是code review能够带来的好处。虽然代码评审需要比较深厚的编码功力,但并不意味着参与代码评审对新人没有任何意义。
新人参与code review的好处
据我看,至少有以下的好处:
- 通常我们可以看到的都是同一个开发领域提交的代码。那么在评审代码的同时,可以阅读已有代码,通过新提交的代码了解某一块的实现逻辑,以学习存量代码。
- 如果提交人是比较资深的开发,那么可以借此机会,提出一些问题,向前辈请教。在阅读资深开发提交的代码时,也可以学习一些好的编码实践,而这些通常书本上是不会有的。如果依靠阅读海量的存量代码来学习,可能很快就迷失了,效率也会比较低。而一次代码提交的代码量是比较有限的,且功能相对内聚,比较容易提炼一些抽象逻辑,是一个很好的学习的机会。并且由于提交人需要合入一份新的代码,他可能也更乐于讨论他提交的这一份代码,进而发现问题。所以,这时候提出问题,通常会得到比较积极的回复。
- 如果提交人同样资历也比较浅,那么通过阅读别人的代码,来发现问题,通常是我们检验所学知识的很好的一次锻炼机会。知识管理学揭示,通过学习习得的知识只有通过不停的使用,才会内化,进而变成自己的知识。实际开发中使用可以内化知识,使用自己的经验和书本所学,对别人的代码进行评审,并发现问题,也是对所学知识的一种使用。
新人甚少参与code review的原因剖析
但可惜的是,据我观察,主动投入code review的职场新人真的太少了。我总结原因可能是:
- 还是职场上磨不开面子,尤其是害羞腼腆的国内新职场人。如果参考Google的code review指南,把握提出问题的方式,应该没问题的
- 中国教育造成的主动思维太少,新人们更关注安排的任务,而缺乏主动学习思考的锻炼。其实你的领导和同事,大多数时候关注的是工作输出,自己的进步还需要自己做主。因为你才是自己的owner。
- 加班文化扼杀了很多思考的时间。本来国人的主观能动性就比较差,再加上996的璀璨,留给新人们思考总结和规划的时间就越来越少了。
总结
所有的开发都应当积极的投身code review活动中,新手开发更应该参与其中。可能你一开始并不能很快提出有效意见,但code review更多的时候是一种学习和交流,投身其中有百利而无一害。祝愿所有新手能够迅速走出新手村。