Don't Aim for Quality, Aim for Speed

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

我决定写这篇博客文章是在审查了此拉取请求之后。那里发生了什么?PR的作者无法找到实现它的“正确”方法,代码评审人员一直等待着。最终,评审人员找到了我,因为我是架构师,并抱怨说这花费的时间太长,他无法赚取他进行的评审所应得的报酬。然后,更改的作者解释说他无法完成,因为存在障碍和设计不一致;他也无法赚取他应得的修复问题的报酬。我说了什么?我:不要考虑质量,尽可能地完成它。

我是在开玩笑吗?一点也不。

我真正相信程序员不应该关心质量。他们只关心速度-尽快完成任务-这意味着赚钱。

这种态度不会毁掉项目并使代码库变得一团糟吗?

如果项目也不关心它的质量。

项目和程序员之间必然存在着永久性的冲突:1)项目必须配置为拒绝任何降低其成果质量的事物,2)程序员必须有兴趣对这些成果进行更改。项目关心质量,程序员关心修改的快速交付。

我说项目拒绝低质量是什么意思?以下是它可能采取的预防措施列表,以使危害质量变得不可能:

  • 只读主分支;

  • 高测试覆盖率栏;

  • 强制静态分析;

  • 多步骤的代码审查。

说程序员必须对进行改变感兴趣是什么意思呢?他们必须有动力去完成任务。不仅仅是参与项目,而是要交付。以下是他们可以为了更快完成任务而采取的措施:

  • 使更改更小;

  • 不要研究代码,只需修改它;

  • 不要觉得对所有代码负责,只需要专注于相关的单元/类;

  • 不要害怕破坏事物。

如果我们将这两个利益相冲突,我们将得到一个高质量、增长迅速的产品。该项目将强制执行质量,程序员将推动代码的前进,快速而频繁地进行更改。

不幸的是,大多数项目有着非常不同的理念。他们将质量控制委托给程序员,希望他们“不会做坏事”。这导致了沮丧、困扰、不断担心犯错、长时间延迟、责备和羞辱。项目和程序员都会受损。

程序员不应该对质量负责!他们不应该关心自己可能或将会破坏什么。他们不应该关心他们编写的代码有多好。他们不应该对整体结果“感到责任”。相反,他们应该专注于通过编写尽可能多的代码和解决更多的问题来为家庭赚钱。

这不是因为他们无知和自私,而是因为这是责任平衡的正确方式。这是项目通过解除他们不必要和无效的质量担忧来充分发挥开发人员的优势的方式,让他们专注于他们最擅长的——编写代码。

当然,并不是每个项目都能以最有效的方式进行配置。大多数项目甚至不知道如何做到这一点。在这些项目中,如果作为开发人员,你加速开发,很可能会在几天内破坏他们的代码库。这就是为什么上述建议仅适用于那些真正知道自己在做什么的人。

我们 在我们的项目中知道我们在做什么。除非“质量壁垒”足够高强,否则我们不允许任何开发人员接触我们代码的任何部分。在你的项目中,这道墙有多高?你能说无论代码有多糟糕、作者如何偷偷引入,它都会被拒绝吗?

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

sixnines availability badge   GitHub stars