客户故事

案例研究:莫里达州的Upsource

Upsource帮助我们创造出出色的手机应用

Radoslaw Holewa我是Radoslaw Holewa我是莫尼托是一家移动应用程序开发公司,为客户提供成功的业务驱动的移动解决方案,如Skyscanner,Aviva,Hellofresh,雀巢等许多客户。今天,我将简单概述我们的代码审查流程以及对Miquido开发至关重要的原因。

代码评论有助于提高代码质量,这是一个众所周知的事实,这导致提供高质量的软件。然而,这是一个很明显,那段代码评论加快了软件开发公司的知识传播。今天,我将分享我们在Miquido的使用Upsource进行编码审查的经验,这已经不仅改善了质量,而且还改变了开发人员的学习曲线。

的方法

首先,让我给你们介绍一些背景知识并描述一下我们的方法。我们在Miquido运行的每个项目都遵循基于scrum的软件开发过程,并以JetBrains工具为核心。我们有长达两周的sprint,每天的站立会议,演示会议,每晚为客户反馈构建,等等。当然,我们也有每天的代码审查。代码评审是在每个工作日的早晨完成的,是开发人员上班时的首要任务之一(就在喝杯咖啡和阅读电子邮件之后)。

回顾昨天的变化通常需要10-20分钟。我们使用git和git-flow工作流,所以我们的开发人员主要是在特性分支合并之前检查它们的变化。这是一种提交后的方法。你可能会问,为什么?在这篇博文的后面会有更多关于这方面的内容。

代码中的bug越少,项目就越顺利

首先,很明显的一点。自从引入代码审查以来,我们觉得有代码审查的项目比没有代码审查的项目执行起来更流畅。比较不同的项目并不容易,因为每个项目都可能有不同的困难。找到代码评审有效性的正确指标也很困难。然而,总体印象是,通过代码审查完成的项目有一个更轻松的结束阶段,没有太多的时间花在测试和bug修复上。

当然,它并不意味着这些项目是无窃听的。它主要是意味着乍一看可能会经常发现的琐碎虫少,让我们避免测试人员和开发人员之间的平乒乓球比赛。这转化为测试人员的开销较少,以测试和报告错误,少于PMS的开销来管理问题,最后,开发人员在修复错误时花费时间的开销较少。

这是一个明显的部分,但对于我来说,这不是代码审查的主要目标和好处。

学习曲线急剧改变

我们看到Miquido的开发者发展得更快了。在初级开发人员中尤其明显。我们并没有强化他们在没有代码检查的情况下可能学到的不好的实践,而是直接在他们的代码中对他们进行教育,这样他们就能很快地了解什么是好的实践以及如何使用它们。

这对于建立一个高技能的团队有很大的推动作用,特别是当我们很难雇佣到优秀的开发人员的时候。

项目范围的知识在团队中传播

一个模块在您的团队中的一个开发人员工作了两个月,然后他或她去度假,突然有人在那部分应用程序中找到了一个关键的错误。没有人知道这段代码发生了什么。听起来有点熟?

代码评论通过在整个团队中传播有关您项目的知识来防止这样的情况。在Miquido,每个开发者的代码每天都会被不同的团队成员审查。通过这种方式,在紧急情况下,所有团队成员都知道潜入别人的代码。

代码审查增加了动力

动机对我们的工作方式产生了巨大影响。每个人都想在令人敬畏的事情上工作,完成了“正确的方式”。没有秘密,一个项目有“坏代码”的项目可以消失;由于“灾难”项目,开发人员更改工作也没有常见的是什么。

代码审查是我们提高动机的方法:通过使项目努力工作的努力,巩固最佳实践的动机和日常工作的动机。没有意大利面或样板代码,没有痛苦的变化。

“我没有时间评审代码!”O r ?

就像单元测试一样,有些人不做代码检查的借口是他们的截止日期很紧,没有时间去做。好吧,我不信。

在我看来,改进的学习曲线(更好的技能开发人员),项目知识在团队中传播(减少风险),并且增加动机(降低保留率)是足以执行代码审查的理由。为其添加更高的项目质量(更容易引入更改),并且判决很清楚。在代码审查中支出约5%的项目时间表肯定是值得的。

度量代码检查的有效性

衡量项目代码审查效果难以衡量有关项目如何成功的影响。您可以做的一个测量是代码审核期间报告错误的数量。这个数字可以自然不同于项目之间的不同,并且随着团队获得越来越多,经验丰富的(或更适合最佳实践),将下降。

衡量动机主要可以通过与开发人员的直接对话来完成。我们注意到,那些参与代码评审是过程一部分的项目的人真的很欣赏它,并看到了它的优点。

提交前或提交后的评审?

每一种方法都有其优点和缺点。预提交代码审查就是强迫开发人员坚持这种方法。就我个人而言,我认为养成习惯比施加压力要好,这也是我喜欢事后评论的原因。

当然,这也有它自己的缺点:不能保证每个提交都会被审查,所以理论上,质量可能比提交前的审查流要低。另一方面,这些预提交规则可能过于严格,例如阻碍发布测试版本,特别是当评审员不可用时。

正如您可以猜到的,在Miquido,我们参加培训后的方法并建立一个习惯,是人们倾向于照顾项目代码质量的项目的责任文化。这就是提起帮助我们的地方。

为什么upsource?

当我第一次看到Upsource时,它是1.0之前的版本,但已经给我留下了深刻的印象。一段时间后,我不得不为Miquido找到一个代码审查工具,所以我将它与其他现有的解决方案(包括商业和开源)进行了比较。

市场上有很多代码审查工具,从非常简单的Bitbucket代码审查功能(我们在Miquido使用Bitbucket git仓库)或Codebrag,到功能丰富的Crucible或Gerrit。

在比较了不同的工具后,我得出结论,Upsource是可行的选择,因为我发现这些优势非常重要:

  • 现场托管。我在我们的办公室服务器上安装了它,它的所有云工具都更快。
  • 它提供了开箱即用的Java检查(现在还有PHP、JavaScript和Kotlin——我等不及Swift和Obj-C了),这是另一个质量控制级别。
  • 有伟大的代码导航,这是更好的现在!
  • 它有一个插件用于Jetbrains IDES(我们使用Intellij,AppCode和Phpstorm / Webstorm),因此审核码更容易,无需留下您的IDE!
  • 非常好的搜索功能。
  • 它的用户界面很简单,但与其他工具相比 - 这显然是相对的)。对我来说,它看起来像是与最好的UX的代码审查工具(个人我真的不喜欢Gerrit的UI)。
  • 它可以与其他JetBrains工具集成,并创建一个真正的协作工具生态系统。
  • 当时它非常便宜(现在价格更高了,但是比1.0版本有更多的功能),便宜到我可以购买它,而不用去寻找开源工具。

尽管上面列出的专业人士,但仍有一些东西缺少我在等待:

  • Swift和Obj-C支持(我们是一家移动应用开发公司,iOS应用开发是我们服务的很大一部分)。
  • 更有价值的代码审查分析(配置超过50个项目,很难跟踪整体代码审查性能)。
  • 支持Bitbucket pull请求(目前只支持GitHub)。

Upsource不是一个完全完美的工具。特别是如果您是预先提交代码审查的粉丝,它不是您的工具。但是,如果您更喜欢像我这样做的后发后方法,那么在我的个人意见中,它是那里的最佳代码审查工具之一,当以正确的方式使用时,它可以为您提供巨大的品质和知识扩展提升。