写点什么

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

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

评论

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

Acrobat Pro DC 2021 for Mac(专业PDF编辑软件)

Mac相关知识分享

Royal TSX for Mac(强大的远程管理软件)

Mac相关知识分享

科大讯飞s30、作业帮x28和步步高学习机S8 优缺点 评测

妙龙

科大讯飞 作业帮 学习机 步步高学习机

在线项目管理工具内网怎么用

爱吃小舅的鱼

在线项目管理工具

高质量 HarmonyOS 权限管控流程

万少

鸿蒙

CTI华测检测宣布正式收购常州麦可罗泰克51%股权

财见

科大讯飞双屏翻译机4.0和3.0的区别

妙龙

科大讯飞 翻译机

科大讯飞AI学习机T30 Ultra 参数 功能介绍

妙龙

科大讯飞 学习机

出差用那个软件订票好报销?合思、易快报等主流平台对比

爱吃小舅的鱼

差旅平台

关于零代码的三大误解

明道云

Microsoft Excel 2019 for Mac(excel电子表格)中文版

Mac相关知识分享

Visio Viewer for Mac(Visio文件查看工具)

Mac相关知识分享

Microsoft Office 2019 for Mac办公软件

Mac相关知识分享

科大讯飞智能办公本 Air 2 和Air 2Pro 区别对比评测

妙龙

科大讯飞 办公本

科大讯飞p30 5G版和p30区别对比

妙龙

科大讯飞 学习机

科大讯飞双屏翻译机怎么样

妙龙

科大讯飞 翻译机

《Django 5 By Example》阅读笔记:p543-p550

codists

Python django

51Talk发布2024年Q3财报:国际业务净收入同比增长79.4%

财见

BetterDisplay Pro Mac(屏幕显示优化工具)

Mac相关知识分享

科大讯飞翻译机4.0 评测 使用感受

妙龙

科大讯飞 翻译机

Termius Beta for Mac(强大的SSH客户端)中英文版

Mac相关知识分享

科大讯飞双屏翻译机和4.0区别对比

妙龙

科大讯飞 翻译机

Navicat Premium 15 for Mac(数据库开发工具)中文版

Mac相关知识分享

科大讯飞t30ultra和小度z30选哪个好

妙龙

科大讯飞 学习机

科大讯飞P30 5G学习机 评测

妙龙

科大讯飞 学习机

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