[TechTeam]进击的CodeReview

2023-10-12 10:40
文章标签 进击 techteam codereview

本文主要是介绍[TechTeam]进击的CodeReview,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
本文最开始是从鹅厂内部的技术论坛的一个问题回答,这里做一些整理形成一个文章。
记录下团队构建以来,9年间code review从无到有到系统化的历程。

“生产关系与生产力”

回过头来看,code review也好,各种开发方式也好,很像生产关系(开发方式)与生产力(团队战斗力,文化等)之间的关系,需要匹配,恰当的配合可以互相发展,反之在团队初期强推“最终版”,恐怕也是不行的。
btw,技术方案的review,结果的定期同步对齐,这些都是性价比超级高,也是一直有的,就不赘述,这里专门指“code review”的专项;

这里就记录下来各个阶段各个情况下我们的选择和结果。
在这里插入图片描述

阶段1:"不review"的开荒时期

在天刀开发的前1,2年,招进来的同事以有经验的开发者为主,其中大约一半是育碧时期的老同事,还有一些是各个公司里“次时代”项目的开发者。
这个时期有这么几个情况:

  • 项目因素:项目在不停的猛烈地赶milestone节点,code review势必要拖慢节奏
  • 技术水平:同事们战斗力还都比较好,从结果上看,短时间并没有看出需要code review的必要
  • 团队文化:团队文化还都是自由,彼此还有点“抹不开面子”说说技术哪里不好,review的时候轻描淡写的居多
  • 认知:code review本身也存在争议,比如我在13年也写过这样的文章:https://blog.csdn.net/toughbro/article/details/12703813

所以这里我们只是在提交milestone的很短的时间里稍微review下,正常情况下都是不review的。
综合上面的各项因素,我们可以看出来这一阶段的不review,谈不上高明,但是有其合理性:

  • 确实获得了速度优势
  • 团队文化和比较强的战斗力,都让code review显得多余
  • 而且不review,有一些代码问题,由于距离上线还早,有充裕的时间来处理,所以不review的代价也没那么明显
    当然我们对于技术债务还是比较敏感的,是作为专项问题来看,甚至说还有“借贷式开发”的一种操作:
    “主动牺牲一些事情来换取速度,详细记录下所欠债务和处理方式,拿下阶段性的任务,然后接一轮重构和review来把“债务”还清。“
    some details: https://blog.csdn.net/toughbro/article/details/22776277

不过回头看,这一个阶段不review也是比较遗憾,大量的模块遗留实现的不足,尤其是同事们的代码能力的建设没有达到最好,组里几个写程序最强的人,能力与日俱增,但是有些同事则是一直原地踏步。
在这里插入图片描述

阶段2:上线阶段+高速迭代+测试人力不足+版本不出事情==double全量review

实际上我们在《天涯明月刀》《无限法则》上线的时候都经历过这样的阶段,版本2天一个,但是测试人力又不太够(恐怕要10x人力才能行),还要保证版本不出事情。
这里只能靠全量review保证,小组内资深程序一轮review,然后leader再review。
底层级别的review,像我们之前做过一次GC(垃圾回收)的优化,曾经直接把整个game object的底层完完整整过了3遍,review时间与开发的时间相当。
这样一种方式,确实能够把事情搞定,且也颠覆了我之前在一些3A项目里的迭代,测试,安全性的认知。
当然也很伤,对项目组的消耗是非常大的,我个人也常常是review到怀疑人生。。。

更直接的技术文化
这里的review因为是要强制保证版本质量必须要做的事情,所以直接无视所有阻力落地,review的力度也是很大,一直到代码“无懈可击”为止。

这里除了代码的稳定质量外,一个最大的收获就是,潜移默化的改变了组内的技术文化,让直接彻底的技术交流文化能够沉淀下来,就代码进行深入交流,reviewer和被review的人都不会觉得难堪。

进一步这样的文化和行动,直接产出了更好的“代码能力”,有一些同事确实是重算法轻工程,中间被review的比较厉害,加上确实出现几次大规模crash,代码力上升也是比较快的。
在这里插入图片描述

阶段3:固化和系统化

到天刀上线稳定运营,《无限法则》也开发进行中,团队开始有这样几个变化:

  • 自我定位变高了:做出行业一流的东西已经是理所当然的了,写出不好的代码,也没人能瞪着眼睛说“运行没问题就行呗”
  • 团队扩大了几倍,
    – 也吸纳了很多年轻同事,也包括很多刚毕业的萌新,年轻同事都是拥有100%闯祸率,囧
    – 单靠leader去hold住团队完全不现实了,团队迫切需要更多的高水平的reviewer

可以说对于技术的扩散有了更强的需求和意愿,真是恨不得把代码力最强的几个同事直接传功给项目组。
这里有几个要点:

代码review让技术传承“惯例化”

平时我们也强调技术上的“传帮带”很重要,但是实际落地的时候,一方面大家都这么忙,一方面有时候也碍不开面子,搞不好落一个好为人师,或者对同事不信任等等的感觉。
代码review变成制度之后,不做也要做,而且要认真做,老司机面对代码能够放心的讲解到深层次的思考,听者也不会觉得没面子了。

责任清晰
reviewer要不要对问题负责,这是review中非常重要的一环,没出事大家都可以开开心心的,但是出了事情,就一定要说清楚。
我们的做法是reviewer对代码质量和最终结果要负责的,之前也出现过萌新同学提交出了问题,老司机reviewer也不上心看,结果处理是萌新没事,老司机受罚:新人出事是难以避免的,整件事情中真正有能力确保事情不出错的还是老司机reviewer,reviewer这种情况下才是要真正负担起责任的人。

周会上的典型问题点评
从独乐乐到众乐乐,有些典型的代码问题,写的好的地方,周会专门有一个时段用于展示和讨论。
经验上升也就更快了。

code review的消耗问题
这个应该说是最棘手的问题,这里的核心与根本解决之道还是“以最有效的方式提升团队代码能力”,其余方法基本都是“掩耳盗铃”了。
写代码的人,没有那么多的毛病,团队里技术力强的reviewer也比较多,技术leader也进一步可以解放出来。

sum

是否review以及如何review,在个人看来不是一个“一套真理打天下”的事情,确实是具体问题具体分析,是一个长期建设演化的过程,也是一个逐渐大家理解参透的过程,这样才能在不断变化的业务和阶段,始终能有最优解。

这篇关于[TechTeam]进击的CodeReview的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/195289

相关文章

进击的序列帧 三(额外篇,一篇顶两篇)------- 让你的序列帧没有帧感,如飘柔般丝滑。

当不要脸已成习惯,当山峰也没有了棱角,当招人这么困难的时候,我还是在篇头植入的招聘。 坐标山东青岛市北,招聘日系画师,其他岗位目前公司没有说,有意思的可以入群私聊。 然后再说一下QQ群,山东手游研发聚集地335772557,进群先看公告,要是抱着我要学习的心态进群的话,那你就失望了,因为是个死群。 偶尔心情好的是时候会发个技术链接。 接下来进入正题!! 这篇文章我只是写个想法,如

进击的序列帧 二(两篇)------- 让你的序列帧立体起来!

当不要脸已成习惯,当山峰也没有了棱角,当招人这么困难的时候,我还是在篇头植入的招聘。 坐标山东青岛市北,招聘日系画师,其他岗位目前公司没有说,有意思的可以入群私聊。 然后再说一下QQ群,山东手游研发聚集地335772557,进群先看公告,要是抱着我要学习的心态进群的话,那你就失望了,因为是个死群。 偶尔心情好的是时候会发个技术链接。 接下来进入正题!! 这篇文章我只是写个想法,如

“群模时代”,国产AI大模型的进击

近期,国内多款大模型重磅消息不断。 1 3月,月之暗面的Kimi升级迭代后,长文本能力达到尚未上线的GPT-4.5Turbo的10倍。 2 4月,商汤科技发布的“日日新SenseNova”5.0多模态大模型在主流客观评测上,中文理解、知识储备、数理逻辑、代码编程等方面的能力就达到了GPT-4Turbo。 3 5月9日,阿里云发布通义千问2.5,据称“在中文场景模型性能赶超GPT-4-T

骑砍2霸主MOD开发(14)-进击的巨人

一.巨人 sbyte boneIndex = Skeleton.GetBoneIndexFromName(Mission.MainAgent.AgentVisuals.GetSkeleton().GetName(), "r_hand");cp = Mission.MainAgent.AgentVisuals.AddPrefabToAgentVisualBoneByRealBoneIndex("

【大数据进击】如何设置spark.kryoserializer.buffer.max value

如何设置spark.kryoserializer.buffer.max value 在运行Spark计算任务时,出现了Buffer Overflow错误,Kryo序列化在序列化对象时缓存爆了。 反复设置了几次,终于发现了自己的错误,分享出来,希望大家能避坑。 设置Kryo为序列化类 //设置Kryo为序列化类(默认为Java序列类)sparkConf.set("spark.se

[amanhardikar] - CodeReview

From: http://www.amanhardikar.com/mindmaps/CodeReview.png

大专生的学历进击

2020年4月11日下午时分 峰子在我们大龙岗 ‘嘿嘿嘿’ 的聊骚群中发起了提升学历的话题,还发进去一个学历提升培训机构报名的活动。瞬间平静的群就像沸腾的热水一般,瞬间就炸开了锅。 我点开群聊,马上噼里啪啦就是一顿猛操作,啥?问我发的什么 对,你没猜错,就是这个。 下面高能,请擦亮眼睛。 哈哈,没错,就是这个味。 这就是十几年的发小友好表达的方式,你品,你细品。 麻蛋,这发小还能要吗?

Chain++:产业链互联网进击!医次元与BrandFin+品牌价值计划 俄语世界的医学领域中国品牌

近日,医次元报导指出,ETDZx财区链盟的线上部分,比特易货与极客贸GeekMALL.io将重组并再次构建位于俄语世界的医学领域中国品牌BrandFin+联合品牌运营中心。 Chain++认为,这是中国产业链互联网的进化与进击,经过多年的摸索与优化,供给侧的优化管理,细分市场的深度耕耘,供给侧与需求侧都有如此需求,对于极客贸GeekMALL.io的这一针对于医学领域的布局,“链公公”供应链金融平

“绿多多”绿色资产资讯:良设板+“空间优造”亮相雄安 绿色生态进击!

2019年3月1日,“绿多多”绿色资产与FinRise奋睿资本CEO抵达「空间优造」与「良设板」及互联网木业机构“木头库”位于雄安之展位现场,虽说对于此次展的策展质量,此行人马都颇有微词,但是也见到了中国地区用户对于安全生态板材的渴求程度。“绿多多”绿色资产委托资深品牌机构BrandFin+为展位提供了品牌与视觉赋能,版权猫ipMALL.io的动漫ip无醛纠察90熊猫也出现在现场的品牌视觉中。作为

“进击的巨人”:服务器硬件基础知识解析

引言: 服务器是网络环境中负责处理数据、运行应用程序和服务多用户的高性能计算机系统。了解服务器的硬件构成有助于更好地管理和优化IT资源。 服务器和普通PC的差异: 服务器具有比个人电脑更高的处理能力、稳定性和可靠性,它们通常运行在没有中断的环境中,这对硬件的要求远远超过普通的个人电脑。 服务器核心硬件组成: CPU: 服务器CPU通常具有更多的核心和更高的处理能力,以支持并发处理大量请求。内