《1-张晓龙-代码打靶铁三角的体系化建设.pdf》由会员分享,可在线阅读,更多相关《1-张晓龙-代码打靶铁三角的体系化建设.pdf(42页珍藏版)》请在三个皮匠报告上搜索。
1、代码打靶铁三角的体系化实践2023 深圳站张晓龙中兴通讯云平台资深架构师,2020年到2022年公司十佳教练,Go 语言知名打桩框架 gomonkey 作者,具有十多年软件架构和开发经验。近年来专注于 PaaS 和 5G 等大型平台软件的设计与开发,尤其对于TDD、DDD 和微服务具有深刻的理解,对于大型软件的重构具有丰富的实战经验。曾作为演讲嘉宾或出品人多次参加ArchSummit、CppSummit、SDCon、TiD 和 DDDChina 等技术大会,广受好评。资深架构师 公司十佳教练 gomonkey作者2023 深圳站目录CONTENTS背景01 代码打靶的体系化建设02 运营与成效
2、03 2023 深圳站01背景2023 深圳站某项目开发痛点地图维度方案设计故事拆分UT设计(TodoList)UT开发业务代码开发UT执行Gerrit同行评审架构度量(含治理)性能度量流程PP2:架构设计方法不明显质量PP2:方案设计内容缺失/异常场景缺失PP3:用户故事与开发任务混淆PP4:TodoList 只是功能列表,不可指导UT开发 PP5:开发自测有效性差,功效分配比率低PP8:架构耦合(重复度高/复杂度高)PP7:评审意见有效性差,偏业务,设计类、CC类很少,异常驳单普遍PP8:可维护性和扩展性分数偏低 效率PP6:开发速度慢 UT ROI低PP6:执行速度慢,最长1分钟 PP是
3、PainPoint的缩写 PP7是针对Gerrit同行评审在质量维度的痛点2023 深圳站探索最佳实践代码评审效果不佳急需提升代码评审能力孵化代码打靶实践 由编码原因导致的故障泄漏占比高,但代码评审发现的相关问题少 各研究院都在积极探索如何提升代码评审能力的最佳实践,帮助降低因为编码问题导致的故障泄露 代码打靶实践脱颖而出,很好的弥补了编码培训以外的实战环节,以练补学,学练结合,是一项很好的编码规范学习和常见缺陷练习活动2023 深圳站代码打靶穿刺维度ilearningiCentergerrit易用性对照缺陷分类模板,手工填写对照缺陷分类模板,手工填写对照缺陷分类模板,手工填写安全性 申请考试
4、管理权限,设置考试以及批阅人等流程,较繁琐为保证保密性,逐一设置打靶人员可见权限,较繁琐设置评审人员效率手工阅卷,周期长,人力投入大,效率低下手工阅卷,周期长,人力投入大,效率低下 手工阅卷,周期长,人力投入大,效率低下规模受限于人工阅卷,开展大规模代码打靶活动比较困难受限于人工阅卷,开展大规模代码打靶活动比较困难受限于人工阅卷,开展大规模代码打靶活动比较困难A研究院穿刺B研究院穿刺2023 深圳站契机-起点1、专职团队忙于交付,无人力承接;2、公司大,技术氛围好;3、共创共建已形成一种文化。1、领导重视;2、教练组支持;3、个人影响力较大。天时人和地利1、虽然代码打靶实践很好,但成本太高,项
5、目投不起,需要找到一条路径,大大降低规模化推广的成本;2、研发能力的数字化,需要结合项目实战,用一个工具来统一呈现。2023 深圳站02代码打靶的体系化建设2023 深圳站代码打靶铁三角平台规范内容代码打靶规范实例化:缺陷分类体系内容实例化,靶子&靶场建设平台实例化,代码打靶服务实例规范不依赖于其他两者内容依赖于规范,规范越好内容的质量越高平台依赖于内容,内容越好平台的用户越多价值规范是基础,让代码打靶标准化内容是根本,让代码打靶高质量平台是支撑,让代码打靶自动化关系2023 深圳站规范:缺陷分类体系(类似知识体系)缺陷分类:包括缺陷大类、缺陷小类和缺陷细项,将缺陷记录标准化多语言:Go、C&
6、C+、Python、Java、Scala和前端规范组成:通用+语言特色主要内容更加抽象更加体系化从静态的文档变成动态的可活用的编码参照物与编码规范的区别2023 深圳站规范:缺陷分类演进规范 v1规范 v2以业界标准为主以经验为主实体值对象缺陷小类 缺陷细项 2023 深圳站规范:多规范多版本公共规范:通用语言标准的缺陷分类私有规范:用户定制的缺陷分类多规范通用规范缺陷细项的定制业务规范的建设DSL规范的建设文档类规范的建设规范有严格的版本管理每个规范对应一个工作空间在工作空间中可以同时生效规范的多个版本每个靶子可以灵活选择某规范的一个版本多版本2023 深圳站规范:自治还是复用根据应用过程中
7、的意见反馈,例行组织专家CCB决策采纳与否规范大版本不保证前后项兼容,但小版本必须保证靶场规范演进机制没有专人守护难以达成共识容易变得混乱(缺陷细项粒度不统一,且不正交)通用规范的囧境通用规范内联到各语言规范缺陷编码全局唯一解决方案:规范V2 规范V32023 深圳站内容:靶子和靶场(类比试题和试卷)一段待走查的代码,一般200行左右,分为综合靶和专项靶,仅对应一种语言所有缺陷的汇总称作靶标(答案)靶子开发人员打靶的场所,有比赛和练习两种类型自动阅卷,并展示打靶结果靶场一个靶子只能选一个规范,并根据规范制定一个靶标一个靶场可以选多个靶子,一个靶子可以被多个靶场选取关系2023 深圳站内容:靶子
8、建设和靶场建设2023 深圳站内容:打靶时多态活动角色行为约束流程打靶练习 打靶比赛开发人员打靶有靶标添加缺陷记录,提交答卷,查看打靶结果,针对弱项进行提升靶子建设靶标专家打靶无靶标添加缺陷记录,提交答卷,靶标建设组评审确认,结果作为靶标发布日常代码评审开发人员打靶无靶标添加缺陷记录,提交答卷,代码提交人员确认,结果作为评审缺陷2023 深圳站内容:日常评审内嵌研发流程X团队综合贡献值个人TOP3团队成员高价值意见数中价值意见数综合贡献值XXX93439136.9XXX259134.1XXX267333.3部门综合贡献值个人TOP5团队成员高价值意见数中价值意见数综合贡献值XXX9343913
9、6.9XXX6517382.3XXX2715342.3XXX1526241.2XXX259134.12023 深圳站平台:代码打靶服务(类比实战类考试测评服务)直接收益:一年节省1350万(按10000人算,每月打靶一次,每次打靶节约15分钟,阅卷节约30分钟,每小时成本150元,10000*12*0.75*150=13500000)间接收益:(1)经验教训的沉淀;(2)编码知识的普及;(3)编码水平的提高泛化收益:未来对公司外提供服务价值效率高:秒级阅卷,容易规模化标准化高:各语言缺陷分类在无线院甚至公司容易达成共识数字化高:各维度数据快速反馈,驱动改进易用性好:缺陷分类根据关键字自动匹配安
10、全性好:靶标最小可见范围,成绩自查优势2023 深圳站平台:架构设计架构风格:单体容灾备份:内容通过脚本代码自动备份,数据通过数据库自动备份编程语言:前端Angular,后端Go数据采集:IoC+AOP安装部署:裸机+容器2023 深圳站平台:DDD建模一对一:最简单的关系一对多:一个子域可以拆分为多个限界上下文多对一:多个子域可以被一个限界上下文包含子域和限界上下文之间的关系2023 深圳站平台:共创共建总牵头:无线虚拟化共创部门:16个共创中心:11个共创研究院:4个共创地区:6个2023 深圳站代码打靶的开展过程2023 深圳站代码打靶演示以录屏播放的方式进行演示(87秒),现场同步讲解
11、2023 深圳站03运营与成效2023 深圳站代码打靶的落地思路2023 深圳站各中心缤纷的打靶活动2023 深圳站代码打靶的价值 代码打靶是一项非常有效的实践,希望能扩大应用范围 靶场建设,内容为王,只有足够多的优秀靶子(试题),才能吸引更多用户,并有效提升开发人员的代码评审能力 体现能力提升的全面性和变化趋势维度指标含义意图应用广度频度打靶次数扩大靶场的使用频次人均频度人均打靶次数扩大靶场的使用频次人数打靶人数扩大靶场使用的范围覆盖率打靶人员在开发人员中的占比扩大靶场使用的范围靶场内容外场故障转靶数外场故障转成靶子的个数外场故障转靶,让大家反复打靶以充分了解外场故障,防止重复犯错外场故障转
12、靶率外场故障转成靶子的比率牵引外场故障转靶靶标规范覆盖率单编程语言所有靶子的靶标对该编程语言的靶场规范的覆盖程度牵引对靶场规范的覆盖跨单位靶子引用数本单位靶子被外单位靶场引用的次数牵引大家多输出受欢迎的高质量靶子公共靶个数符合公共靶要求的靶子个数 (各中心推荐质量较高的通用性较强的靶子,院编码委员会评定)牵引大家多输出受欢迎的高质量靶子能力提升靶场规范缺陷大类命中率打靶人员对缺陷大类的掌握程度体现人员能力和能力变化趋势2023 深圳站代码打靶的成果:应用广度价值驱动,打靶次数和打靶人数越来越多先富带动后富,参与打靶的研究院数量越来越多2023 深圳站代码打靶的成果:靶场内容靶子数量持续增长,可
13、维护、可靠性和设计维度的靶子占TOP3通过靶子被外单位引用数来鼓励靶子共享院编码委员会可以对靶子打院级标签,比如通用靶和严选靶,控制靶子质量2023 深圳站代码打靶的成果:能力提升打靶平均命中率稳步提升个人看板呈现开发人员各维度数据,便于回顾改进根据缺陷大类的命中率,可以快速锁定弱项,同时能下钻到缺陷小类和缺陷细项系统根据个人弱项,精准的推荐相关知识或学习路径,加速能力提升2023 深圳站代码打靶的收益通过弱项收集,提高了能力提升的精准性(相比考试竞赛)通过打靶活动,提高了能力提升的有效性(相比培训宣贯)通过度量复盘(如命中率),提高了能力提升的可视化(相比传统复盘)能力提升维度2022下半年
14、故障泄露总数相比上半年数量呈下降趋势2022下半年编码故障占比相比上半年占比呈下降趋势针对2022上半年TOP N问题专项打靶,下半年没有再出现类似问题产品交付维度2023 深圳站未来规划AI辅助打靶,让开发人员打靶更高效AI打靶,与开发人员PK打靶技能AI建靶,根据靶子需求生成问题代码及靶标AI评审,部署在门禁流水线远期规划:应用AI业务打靶和文档打靶日臻完善,成为代码打靶的重要组成部分与第三方系统对接,更好的连接人与人、人与系统和系统与系统智能学习不断增强,提升评价和推荐的准确性打靶小程序正式发布,让开发人员可以随时随地打靶近期规划:打造生态2023 深圳站小结在 AIGC 时代,AI 辅
15、助开发人员编写代码,可以大大提升编程的效率,但 AI 也会犯错,这时需要较高段位的代码评审能力才能高效识别出深水区的问题,所以代码评审能力越来越重要了。代码打靶是提升代码评审能力的最佳实践,可以成为公司编码文化建设的引擎,非常值得开发人员拥有!感谢聆听CSDN全球最大的中文开发者社区平台CSDN全球最大的中文开发者社区平台CSDN创立于1999年全球编程类网站排名第7(来源:Similarweb 2023.04)注册用户超过4300万,覆盖90%的中文开发者新媒体矩阵粉丝数量超过3100万超过1000家企业客户和合作伙伴目前公司员工近800名,分布在北京、长沙、上海、深圳、杭州、成都等城市,并在美国硅谷常设办事处旗下品牌旗下品牌专业中文IT技术社区:CSDN.NET多媒体专业出版:新程序员开发者专属移动APP:CSDN APP代码托管协作平台:GitCode代码工具协同平台:InsCodeIT人力资源服务:科锐福克斯丨八爪网络高校IT技术学习成长平台:高校俱乐部