速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

不做代码审查又怎样(二)

  • 2020-01-17
  • 本文字数:1645 字

    阅读完需:约 5 分钟

不做代码审查又怎样(二)

沟通的收益和成本

在我看来,代码审查所暴露出的问题本质上就是如何权衡沟通的成本和收益的问题。


在软件开发过程的发展中,无论是从一开始的瀑布,后来的敏捷,还是当下的精益。都有很大一部分篇幅是在强调沟通或者说是强调沟通方式的演进,都是为了解决已有沟通方式所带来的各种限制和问题。


例如在我们自己的项目中就采用以下的实践来促进团队内外的沟通,包括:迭代计划会(Iteration Planning Meeting),每日站会(Daily Standup),代码评审会(Code Review),回顾会议(Retrospective Meeting);还有 XP 中的结对编程(Pair programming),现场客户 ( On-site Customer )等。


而沟通的好处是可以得到快速的反馈,无论是 80 年之前就出现的 PDCA 环还是前两年大热的精益创业,都是在强调快速反馈和基于反馈的快速迭代,通过这种方式来消除生产和创业过程中造成的各种浪费。


但是(对,又是但是……),沟通也是有成本的,而且成本一般都还不低,相信这点也不需要多解释,大家肯定都经历过各种各样效率极低令人抓狂的讨论或是会议。


在沟通的成本和收益同时摆在我们面前,如何做出选择?如何才能设计一套刚刚好的沟通体系,平衡收益与成本,来满足团队和项目的需要呢?

沟通金字塔

在读《重构》的时候,我深深地体会到:


这个世界上没有什么是不变的,包括变化本身。所以要想得到解脱,我们就需要从简单的对与错,好与坏的漩涡中跳脱出来,用变化的眼光来看待周围的事物,并做好一直变化的准备。


而面对沟通成本与收益的选择困境时,我第一个想到的就是测试金字塔。了解测试金字塔的同学肯定都知道,测试金字塔是一个很好的工具,它帮助我们从单一的测试选择困境中跳脱出来,将各种不同类型的测试建立起关联、纳入一个统一的体系,从而让我们可以在一个更高的维度来系统的思考和审视每一种测试的策略,关注点也从简单的“该不该”变为了“如何变化”。



图 2. 测试金字塔


至于“如何变化”?我们可以通过在金字塔上添加一层新的测试种类来弥补整体测试策略中粒度太粗的问题;也可以根据项目情况通过移除一层测试种类,用其上层或是下层的测试来覆盖其测试用例,来减少成本;也可以通过将某个测试用例在金字塔中向上层或是向下层移动来寻找收益与成本的平衡。


举个实际点儿的例子,例如我可以将一些基于 UI 的集成测试用例下移,用成本更低的单元测试来覆盖从而减少成本,加快反馈速度;也可以将一个单元测试用例上移,用基于 UI 的测试来增加其稳定性的和体现的业务价值。


看,我们讨论的内容从简单的要不要写 UI 测试,需要写多少单元测试测试已经被转换到对于整体策略的变化和调整上来了。那对于代码审查的问题能否也通过金字塔这个工具转换到更大的空间上寻求突破呢?这就是沟通金字塔。



图 3. Iteration Planning Meeting


相比于测试金字塔中的“UI 、Service、UT”,“Iteration Planning Meeting、 Code Review、 Pair programming”就可以类比成沟通金字塔,和测试金字塔一样更靠近金字塔顶端的(例如迭代计划会)沟通频率越低,成本越高,但越接近业务;越靠近金字塔底端的(例如结对编程)沟通频率越高,成本越低,越接近实现。这几种不同的沟通方式所沟通的内容肯定也会有所重叠,通过将各个层次的沟通方式进行组合来保证我们团队的整体沟通质量,就像通过金字塔中的各种测试层次的组合来保证产品质量的一样。



图 4. Pair programming


如果可以这么类比的话,那我们对于沟通质量的管理也应该是动态的、系统的、从整体上出发的。例如就可以通过在沟通金字塔中添加一层新的沟通机制来弥补沟通粒度过粗的问题,例如 QA Team 现在在做的每周例会就是一个好的例子;也可以将一些沟通内容通过层次(上下)的调整,甚至是通过直接减少一层沟通方式来优化我们的整体沟通效率,例如我们可以通过增加结对编程的 Switch 频度来替换掉成本更高的代码审查。而目标就是通过不断地动态调整和优化沟通结构,试图寻求一个沟通成本,沟通收益,沟通效率平衡的沟通环境。



本文转载自健荐公众号。


原文链接:https://mp.weixin.qq.com/s/9l-549sddZ_JFMqdNC8CgQ


2020-01-17 11:23645

评论

发布
暂无评论
发现更多内容

数字身份管理面临的多方挑战

芯盾时代

数字身份 身份安全 身份管理

Screaming Frog SEO Spider:网站爬虫及SEO审计工具

Rose

简体中文版excel2019-正版激活-永久使用

Rose

智慧灌区系统(源码+文档+部署+讲解)

深圳亥时科技

里程碑丨Milvus在GitHub上的Stars数量突破30,000!

Zilliz

开源 Milvus Zilliz 向量数据库

EndNote 21授权密钥2024最新 EndNote 21下载安装包

Rose

Autodesk AutoCAD 2025 简体中文版下载【Mac/win】

Rose

TDengine 与新奥新智达成合作,支撑海量设备、亿级数据

TDengine

数据库 tdengine 时序数据库

LED全彩显示屏的9大优点

Dylan

广告 LED display LED显示屏 市场 体育

仓储管理系统-生产企业版(源码+文档+部署+讲解)

深圳亥时科技

Topaz Gigapixel AI 8.0.0:更大更清晰更真实,将任何图像放大 16 倍并增强

Rose

品讯HRO系统(源码+文档+部署+讲解)

深圳亥时科技

深入探讨 TDengine S3:让你的数据管理更轻松

TDengine

数据库 时序数据库 #TDengine

ClickHouse在百度MEG数据中台的落地和优化

百度Geek说

数仓引擎;ClickHouse;

最佳 Mac 网站创建器:RapidWeaver 9

Rose

场地预约系统(源码+文档+部署+讲解)

深圳亥时科技

VMware vCenter Server 8.0U3d 发布下载,修复堆溢出漏洞 (CVE-2024-38812) 和权限提升漏洞 (CVE-2024-38813)

sysin

vSphere vcenter esxi

灵活用工招聘平台(源码+文档+部署+讲解)

深圳亥时科技

仓储管理系统-贵金属(源码+文档+部署+讲解)

深圳亥时科技

VMware vCenter Server 8.0U2e 发布下载,修复堆溢出漏洞 (CVE-2024-38812) 和权限提升漏洞 (CVE-2024-38813)

sysin

vSphere vcenter esxi

DaVinci Resolve v19.0.3激活版 达芬奇mac版安装教程

Rose

AI语音模型在家宽业务中的应用

鲸品堂

企业号 2024年10月PK榜

前OpenAI首席技术官为新AI初创公司筹资;我国发布首个应用临床眼科大模型 “伏羲慧眼”|AI日报

可信AI进展

数据集成进化论:从传统 ETL 到数据编织的跨越

Aloudata

VMware vCenter Server 7.0U3t 发布下载,修复堆溢出漏洞 (CVE-2024-38812) 和权限提升漏洞 (CVE-2024-38813)

sysin

vmware vcenter esxi

溯源管理系统(源码+文档+部署+讲解)

深圳亥时科技

Fig Player - play mp4 mkv mp3:高清媒体播放器

Rose

CST电磁仿真——如何合并两个模型并保持参数化

思茂信息

教程 cst 电磁仿真

无人机管理系统(源码+文档+部署+讲解)

深圳亥时科技

diskdrill激活码分享 优秀的数据恢复工具

Rose

ByteHouse直播预告:揭秘基于OLAP降本增效的四大硬招

字节跳动数据平台

大数据 活动

不做代码审查又怎样(二)_语言 & 开发_王健_InfoQ精选文章