写点什么

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

  • 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:23602

评论

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

2024 年 9 月公链行业研报:Sui 跃升至公链市值前 15,比特币 Layer 2 TVL 激增

Footprint Analytics

公链

【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024

阿里云大数据AI技术

人工智能 阿里云 论文 图像编辑 MM2024

Swarms Corporation创始人Kye Gomez实锤OpenAI多智能体Swarm抄袭其成果!|AI日报

可信AI进展

Tampermonkey for Mac(油猴Safari浏览器插件)

Mac相关知识分享

浏览器插件

软件测试学习笔记丨Linux三剑客-sed

测试人

软件测试

小心selinux对应用的影响

通明湖

网站不安全,提示不可信?你需要安装SSL证书!

国科云

PDF 编辑和管理软件Acrobat Pro DC 2023 for mac中文版

Mac相关知识分享

软件 PDF软件

【HarmonyOS】鸿蒙图片下载加载方案

zhongcx

鸿蒙

Macos 的全景图拼接制作工具PTGui Pro for Mac

Mac相关知识分享

图片编辑 全景拼接工具

功能完备的 SVN 客户端SmartSVN for Mac

Mac相关知识分享

百度视觉搜索架构演进实践

百度Geek说

百度 重构 构架 视觉开发

强大的音量控制软件Sound Control for Mac

Mac相关知识分享

HarmonyOS NEXT开发之ArkTS自定义组件学习笔记

威哥爱编程

HarmonyOS ArkTS HarmonyOS框架 HarmonyOS NEXT

Cloudera Hue深度解析:安装、配置到高级用法

敏捷调度TASKCTL

hadoop cloudera hue 大数据运维

Microsoft OneNote 2019 for Mac(云笔记)中文版

Mac相关知识分享

第三届OpenHarmony技术大会星光璀璨,致谢社区贡献者

科技热闻

App Cleaner & Uninstaller Pro for Mac(苹果应用程序清理卸载软件)

Mac相关知识分享

应用程序卸载

落地ZeroETL 轻量化架构,ByteHouse推出“四个一体化”策略

字节跳动数据平台

鸿蒙NEXT开发声明式UI是咋回事?

威哥爱编程

HarmonyOS ArkTS HarmonyOS框架 HarmonyOS NEXT

在研发效能度量中,如何避免过度投入?

思码逸研发效能

DevOps 研发效能 效能度量

人工智能发展历程

天津汇柏科技有限公司

AI 人工智能

Milvus×Dify半小时轻松构建RAG系统

Zilliz

Milvus 向量数据库 rag dify

空壳产品之路:分身类应用你受够了吗?

iofomo

产品 工具 生产力 Android APP 微信分身

视频增强和修复工具:Topaz Video AI (Win/Mac) 中文特别版

你的猪会飞吗

Topaz Video AI下载 Topaz Video AI破解版 Topaz Video AI中文版

Mac 电脑的系统监控工具iStat Menus for mac

Mac相关知识分享

电脑监控工具

IPQ5010 vs. IPQ5018: A comprehensive comparison of the two WiFi solutions

wifi6-yiyi

wifi6 ipq5018

MindNode for mac(思维导图软件)中文版

Mac相关知识分享

思维导图

Loopback for Mac(mac虚拟音频设备软件)

Mac相关知识分享

OpenHarmony统一互联PMC启动孵化

科技热闻

第三届OpenHarmony技术大会发布年度课题并表彰领航课题

科技热闻

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