独家 | 使用Mob进行代码审查

共 2752字,需浏览 6分钟

 ·

2022-04-10 08:32

作者:Svata Simara
翻译:欧阳锦
校对:zrx

本文约2000字,建议阅读5分钟

本文讨论了使用Mob编程省去代码审查的优点和Mob的使用要求。


标签:代码审查


代码审查的缺点


  • 长反馈回路

  • 等待

  • 多个未完成的任务

  • 书面沟通耗费时间

 
典型的编程过程对我来说意味着“编写代码 -> 发送至审查阶段”。现在呢?呃……有了另一个任务。这个任务很简单——代码审查,让我们开始第三个阶段。在这阶段,队员会催促审查,提交之后需要等一段时间,接下来自己再次审查……最后——再做一次第二个任务的审查!不,我不同意这种工作模式,我的意思是......在多次审查后的又一个小时,我写完了对论证的总结,第二天我的同事只回答了 OK。什么?仅仅是OK吗?!

代码审查最重要的问题是异步的工作循环。这是低效且让人感到沮丧。
 
另一种方法是尽可能快地进行代码审查。当我应用这种方法时,我整个星期都在进行代码审查。我做的代码审查越多,我收到的请求就越多,这再次让我感到沮丧。

代码审查的目标


代码审查有什么好处?

  • 分享知识

  • 分担责任

  • 改进代码结构

  • 学习


一个好的代码审查涵盖了所有这些方面。但是代码审查只是一个工具,如果我们能找到更好的工具,我们就可以把代码审查扔在脑后。

Mob编程


Mob编程意味着所有团队成员同时出现在一个屏幕前。或者在共享屏幕上远程工作——这就是我的情况。
 
我在4人的团队中工作,我们每天以Mob风格工作约5-6小时。起初,我们决定这项任务,并在可能的情况下轮流操作会话。
 
一个会话意味着有一个主导者(driver)——进行打字/点击按钮,一个导航者——导航者告诉主导者该做什么。其他2名队员则保持注意力,只有当导航者走错方向时,才会打断。导航者只导航3 分钟——是的,只有 3 分钟,然后交替(rotate)到下一个人。
 
交替(rotation)意味着主导者目前在导航——主导者应该知道下一步,此时导航者休息一下,接下来则是剩下两个队员中的一个成为主导者。3 分钟后,又一次轮换,然后又一次,……
 
这种交替强度较高。所以每个人都必须时刻保持注意力。因为每个人将不得不在几分钟后进行导航,如果走神,您将不知道接下来该如何导航。

实现代码视图的目标


分享知识和想法是即时的——每个团队成员在项目中都共同经历项目的发展过程,并且知道为什么会这样做。
 
分担责任——我对我们生产的一切负责,因为我可以随时说“我不同意”或“我有更好的主意”。
 
所有团队成员都同意代码结构,因此代码结构是一致的,我相信最好的团队成员可以做到。
 
学习——是即时的、高强度的。如果导航者很在行,他们不仅会告诉你要做什么,还会告诉你如何有效地做。我每天都在学习更好的软件架构、更好的测试策略、如何有效地使用 IDE,……这是因为导航者知道(并分享)我所缺少的知识。
 
总而言之,在我看来,Mob在各个方面都优于代码审查,以及代码审查带来的工作循环的沮丧。

Mob编程一定是低效的


在最初的几周里,我认为Mob的效率低下。
 
当团队正在安顿下来或团队成员还没有使用语言和工具的经验时,感受到低效率是很正常的。在这个时期,我们主要使用Mob去学习。
 
但是一旦团队度过了最初的几周,情况就会变得非常不同。
 
几乎每天我都会遇到一个问题,当我独自一人时,我至少需要一个小时(或几个小时)才能解决。但是我们有 4 个人,通常其他人会在几分钟内知道如何解决它。我的同事们证实他们也有同样的经历——他们不知道该怎么做,而其他人马上就知道了。
 
每个团队成员都擅长不同学科。一个队员在数据库中很好,一个队员很擅长解决在我们使用的框架中解决问题,还有一个队员是善于决策。所以当导航者卡住的时候,这个“专家”队员会帮助克服障碍,并且这种帮助通常立刻发生。


使用Mob的要求


Mob编程并不适合所有人。
 
一开始如果你们不能同时在一起(即使是远程),Mob则行不通。
 
Mob需要良好的沟通技巧。没有消极、攻击或傲慢的态度。如果你总想证明你比你的同事更好,我不认为你适合Mob编程。
 
Mob需要耐心和尊重——因为每个人并不总是处于最佳状态。如果您喜欢急于解决,并且您对领导/教导同事不感兴趣,那么Mob将无法工作。你的同事不会变得更好,团队也不会进步。
 
这就是使用Mob的一些要求。如果你们可以在同一时间(甚至是远程)在一起,你们有耐心,对新方法感兴趣,并且你们的同事有相似的观点,那就去尝试一下吧。Mob就是解决方案!


Mob与代码审查


当我比较Mob和代码审查,我会发现:
 
在代码审查中,我会画上几个小时努力解决一个问题,然后我会将解决方案发送给代码审查,然后需要等待一段时间,接下来审查者会提出更改建议,我会为我的解决方案进行进一步讨论或继续更改代码。2到5天后,我将准备好合并代码,但随后我必须合并所有不同的地方!
 
而Mob 编程中则没有这样繁琐的东西。

  • 是否挣扎在一个难题中则受限于团队成员的经验

  • 无需中间等待

  • 即时讨论/代码更改

  • 减少合并不同之处的工作量


Mob有更多的好处,对我来说最重要的是改善我和同事之间的关系。程序员也是社交者,Mob在这方面帮了大忙。
 
总结一下,Mob编程极大地缩短了反馈循环,并产生了令人惊讶且振奋的结果。

原文标题:

Don’t do Code Review, try Mob instead

原文链接:

https://medium.com/verotel/dont-do-code-review-try-mob-instead-82149ef035df


编辑:于腾凯

校对:林亦霖





译者简介





欧阳锦,一名在埃因霍温理工大学就读的硕士生。喜欢数据科学和人工智能相关方向。欢迎不同观点和想法的交流与碰撞,对未知充满好奇,对热爱充满坚持。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。


点击文末“阅读原文”加入数据派团队~



转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。








点击“阅读原文”拥抱组织



浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报