The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
极度分布式软件开发(eXtremely Distributed Software Development)简称XDSD,是一种与传统软件开发团队工作方式有着显著差异的方法论。大多数XDSD方法都非常不同(但至关重要),以至于许多新手会感到困惑。本文将帮助您在以XDSD原则管理的项目中加入后快速入门,无论是作为开发人员还是项目赞助商。
We Pay Only For Closed Tasks
与许多其他项目不同,在XDSD中,我们只支付已完成的任务和预定的时间预算。让我通过一个例子来解释。假设你是一个Ruby程序员,你得到了一个新的任务,需要你修复一个错误的单元测试。这个任务的时间预算是30分钟,这在大多数情况下都是如此。不过,有时候,任务的时间预算可能是15分钟或1小时。
在我们的例子中,我们同意每小时50美元的合同费率。通过完成这项任务,您将获得25美元的报酬—以每小时50美元的费率计费的30分钟任务。
无论实际修复测试所需时间多长,对于项目的实际投入时间可以是五分钟或五小时。然而,您只会获得30分钟的工作补偿。如果您在5分钟内修复了损坏的测试,您将获得25美元。如果完成任务需要您一个小时,甚至一个月的时间,您仍然只能获得25美元。
此外,如果您未能修复单元测试并完全关闭任务,您将不会收到任何作业的报酬。
您可以在以下文章中查看有关该原则的更多详细信息:无义务原则或完成定义。
如上所述,这是XDSD与其他方法之间最重要的差异之一。许多人在看到这个原则付诸实践时感到困惑,有些人因此离开了我们的项目。他们习惯了每个月底按时支付薪水,无论他们实际交付了多少工作量。在XDSD中,我们认为这种做法非常不公平。我们认为那些交付更多成果的人应该获得更多的报酬。相反地,那些没有交付成果的人应该得到较少的报酬。
We Deliver Unfinished Components
由于我们的大多数任务都是半小时的规模,我们鼓励开发者提交未完成的组件。在下文中可以了解有关这一概念的更多信息:《拼图驱动开发》。
No Informal Communications
与您可能合作过的许多其他项目或团队不同,XDSD不使用任何非正式的沟通渠道。为了澄清,我们从不使用电子邮件,从不在Skype上聊天,也不进行任何会议或电话交流。此外,XDSD没有任何类型的邮件列表。我们唯一的沟通方式是一个工单跟踪系统(在大多数项目中是GitHub Issues)。
此外,我们不鼓励开发人员之间就各自任务的范围进行横向沟通。当分配任务时,您的唯一联系人(也是您唯一的客户)是任务的作者。您可以在工单中与作者沟通,以澄清任务要求。
当任务的要求清晰明确,并且您完全理解它们时,将结果交给作者并等待他关闭任务。作者关闭任务后,项目经理会付款给您。
我们对这个原则非常严格——不允许非正式的沟通。然而,这并不意味着我们不对你的意见和建设性的批评感兴趣。相反,我们鼓励每个人提出他们的建议和漏洞。顺便说一下,我们会为漏洞支付报酬(有关漏洞报告和支付的详细信息,请参阅下一节)。
由于我们没有正式的沟通渠道,项目团队成员不需要在特定时间工作。相反,团队成员可以在自己所在的时区选择方便的时间工作。这包括工作日和周末。
We Pay For Bugs
与许多其他软件团队不同,XDSD 欢迎在我们所有的项目中提交错误报告。因此,我们公开要求错误报告,并期望团队成员积极上报。请查看以下文章以获取有关 XDSD 错误报告的完整详细信息:欢迎提交错误报告。
我们期望与项目相关的每个人都报告他们发现的每一个错误。此外,我们鼓励团队成员提出建议。在XDSD中,我们会为每个正确报告的错误付费给团队成员。
XDSD 因为我们相信,发现的 bug 越多,最终产品的质量就会越高,所以会为报告的 bug 进行支付。一些新开发者在收到类似“你必须在 A 类中找到 10 个 bug”的任务时会感到惊讶。通常,自然的反应是问:“如果没有 bug 呢?”然而,我们相信任何软件产品都可能有无限数量的 bug;只是需要花费时间和精力去发现它们。
Only Pull Request
我们从不授予团队成员对 master
分支的访问权限,无论你在项目上工作的时间有多长。因此,你必须始终通过拉取请求提交你的更改(我们的大多数项目都在GitHub上完成)。
我们执行这个策略并不是因为我们不相信我们的开发人员,而是因为我们不相信任何人。这当然是个玩笑。阅读这篇文章:主分支必须是只读的。
No Compromises About Code Quality
在合并任何更改到master
分支之前,我们会使用单元测试和静态分析器检查整个代码库。单元测试是现代软件开发中非常常见的组件,对此您不应感到惊讶。然而,静态分析的严格性常常让XDSD的新手们感到沮丧,我们理解这一点。我们对源代码的质量和一致性比大多数竞争软件开发团队更加重视。
更重要的是,我们绝不会妥协。如果你的拉取请求违反了静态分析器的任何一项规则,它将不会被接受。而且,不论这个违规看起来多么微小或无意,都没有关系。这个合并过程完全自动化,无法绕过。
Translated by ChatGPT gpt-3.5-turbo/35 on 2023-09-06 at 18:30