A Distributed Team Delivers Code of Higher Quality

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

好的,标题并不准确。我错过了“能够”这个词。分布式团队能够比共同办公的团队交付更高质量的代码,现在我将解释为什么。当然,并不是每个分布式团队都能做到这一点。他们中的大多数甚至无法交付可工作的代码,更不用说优质代码了。但是,如果一个团队 - 一个分布式团队 - 根据我现在要解释的原则进行管理,质量将比共同办公的团队能够达到的更高。我要向你展示的是,如果以正确的方式在远程模式下工作,可以保证代码的质量更高。惊讶吗?

成功的基本要素基本上有四个…你知道吗,实际上只有一个主要要素,它的名字叫做控制。如果我们希望质量达到某个水平,我们就必须强制实施。我们不能仅仅宣布它;我们需要让它保持高水平。

软件团队如何制作高质量的代码?噢,有许多经过验证的方法。首先,你需要一个非常现代化的办公室,在那里程序员开发人员坐在软垫椅上,打乒乓球,喝果汁,还在墙上写图表。其次,你应该给他们买很多书。办公室到处都必须是书,而且必须是关于从Python和Haskell到Docker、敏捷和精益创业的一切。书越多,他们编写的代码质量就越高。第三,你必须给他们付高工资。开发人员越贵,他们写的质量就越高。

我相信你明白我在开玩笑。这些“经过验证的方法”都不能保证质量,也不能激励认真的软件工程师。只有在受控和强制的情况下才能实现质量。而且这也是激励程序员最好的东西 - 质量对管理来说如此重要,以至于他们找到了控制和强制的机制,并投资其中。乒乓球和精益创业的书籍甚至离这些机制还差得远。

所以,现在让我们讨论一下我们在项目中实践的质量强制的这四个要素:

  • 禁止聊天。对我们的代码库进行任何修改,即使是非常小的修改,都必须通过拉取请求进行提交。拉取请求中还必须进行代码审查。我们严格禁止程序员之间进行任何非正式的沟通,包括聊天、电话、电子邮件或面对面讨论。这意味着由于友谊、非正式协议和权衡而导致质量妥协的可能性非常低。

  • 构建易碎。我们相信,质量标准越高,修改任何代码片段而不破坏构建的难度就越大。我们在构建过程中加入了很多质量检查,以增加程序员的困难。好吧,这不是我们的目标,但它确实发生了。代码必须通过所有的静态分析检查、测试覆盖率阈值、突变覆盖率阈值以及其他许多检查。这意味着糟糕的代码永远不会进入代码库。

  • 可交付成果的微支付。我们仅支付已关闭的工单,并且每个工单都非常小(最多两个小时)。我们不支付在办公室或电脑前度过的时间。我们只在工单关闭时支付报酬——没有关闭,就没有报酬。这意味着程序员们只有一个目标,那就是关闭工单,其他都不重要。

因此,正如你所见,这是一个有意制造的冲突。一方面,程序员必须关闭工单并交付可运行的代码。另一方面,这并不容易做到;因为质量要求很高,没有让步的余地,也没有技术上绕过问题的可能性。优秀的程序员能够在这个冲突中生存下来,并成功地交付并得到报酬。而且是高薪酬。

现在,谈到这篇博客文章的重点—你认为在一个共同办公的团队中建立这一切可能吗?我不这么认为。首先,你无法禁止非正式的沟通。无论你多少次要求开发人员在工单上进行沟通,他们大部分技术问题还是会面对面解决。这是不可避免的。

其次,你无法只为结果付费,因为程序员会抱怨他们在办公室里要进行很多沟通,这些沟通也需要得到报酬。实际上,他们每天只会花两到三个小时真正编写代码,其余的时间将会用于喝咖啡、谈论特朗普,或者在Facebook上浏览。同样,这是不可避免的。

第三,人就是人。没有人愿意一天内多次达到那个高质量标准。他们会抱怨,最终你会给他们直接访问主分支的权限。首先,你会给架构师访问权限,然后给几个高级开发人员,再给几个你绝对信任的好朋友。然后给每个人,以防万一。这是不可避免的。

总结一下,我认为共同办公的团队并不适合进行高质量的编程。对于娱乐来说—可以。对于创造力来说—也许。对于烧掉投资者的钱—绝对可以。但对于质量来说—并不是真的适合。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 16:12

sixnines availability badge   GitHub stars