Robots vs. Programmers

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

ChatGPT 3.5的发布对我们程序员来说改变了一切。尽管我们大多数人(包括我在内)不了解它的工作原理,但我们中的一些人使用它的频率超过了Stack Overflow、Google和IDE内置功能。我相信这只是个开始。尽管只有Microsoft知道接下来会发生什么,但让我也试着做一个谦虚的预测。以下是我认为未来机器人(搭载生成式人工智能)将会做的事情。越是遥远的未来,就越靠后。

汇报漏洞。它们将遍历代码库,分析代码,甚至可能尝试运行一些测试,然后在问题显而易见时提交漏洞报告。当它们发现难以理解、文档不完整、未覆盖自动化测试或存在安全漏洞的代码时,它们也会提交漏洞报告。此外,当它们发现代码不遵循约定或最佳实践时,它们还会进行报告。它们会写得很好,提供很多技术细节和补充链接,以至于程序员们更喜欢机器人的报告而不是人类的报告。

审查拉取请求。它们将检查提交到代码库的拉取请求(无论是人类还是机器人提交的),并通过对代码的某些行进行评论来审查它们,批评代码的质量和/或提出更好的替代方案。它们将跟踪之前提出的建议,并在必要时坚持。最后,拉取请求的作者甚至不会知道谁在审查它们:是人还是机器人。

重构。从众多众所周知的微重构中,它们将在任何时刻选择最重要的几个,并提交带有更改的拉取请求。它们不会改变代码的功能或进行大规模修改。相反,它们将通过小的增量改进代码的质量,使我们人类能够合并它们提出的改动。它们不会改变太多,所以我们不会感觉被机器人管理,但事实上却是如此。它们将逐步改进代码库,使其更易读、易维护,并被其他机器人更好地理解。

待办事项优先级排序。它们将根据历史数据、当前团队速度和其他相关指标,将任务和工单排序到适当的里程碑中,确定哪些任务具有较高的优先级。它们将决定应该首先修复哪个漏洞,哪个功能请求比其他请求更重要。它们将创建一个与短期目标和长期目标都保持一致的优先级排序的待办事项清单。

完善漏洞报告。它们将检查已经报告的漏洞,并对其进行完善,提供补充信息,解释与漏洞相关的代码,并提供可能复现该漏洞的代码片段。它们会做大多数程序员懒得做的工作:正确解释漏洞以帮助修复。

文档源代码。它们将找到代码中难以理解的地方,例如复杂的函数、大型类和大型数据结构。它们将生成文档块,然后提交拉取请求。人们会很乐意接受这些请求,因为文档化他人的代码是工作中的例行和乏味部分。此外,保持文档与源代码同步是我们人类疏忽最明显的领域之一。

修复漏洞。根据它们已经在代码库中看到的代码和问题列表中报告的漏洞,它们将生成一些修复措施,并将其作为新的拉取请求提交。它们将解释修复措施的作用,为什么以这种或那种方式进行改进,修复的重要性如何,并提供可能的替代方案。我们只需要将它们合并。

规范化需求。它们将检查代码库和我们讨论代码的评论,并推导出我们所实现需求的正式定义。然后,它们将使用用例图、需求矩阵或甚至是非正式的文本文档(如README或Wiki)来规范需求。它们将在整个代码库的整个生命周期中不断更新这些文档,而这是我们人类经常懒得做的事情。

入职指导:它们将协助新开发人员的入职过程,引导他们了解代码库,解释架构决策,并提供个性化教程。它们还将通过提供交互式指导来帮助我们理解某些代码块。

分析技术债务。它们可以分析代码库,找出技术债务正在积累的区域,并提出在问题变得严重之前减轻技术债务的步骤。它们将提交工单,标识出最大的债务领域,并提出改进建议。

清理文档。它们将重新格式化我们人类为类和方法编写的文档块,然后提交拉取请求进行更改。在正确格式化文档方面,使用HTML、Markdown、Doxia和许多其他格式是我们人类做得不好的工作。

建议新功能。它们将检查已经实现的功能,并提出额外的功能建议,提交工单。它们将解释这些新功能请求背后的原因,找到合适的理由,并提供用户如何与新功能进行交互的示例。

文档架构。它们将观察代码库,然后更新关于其实现的架构的文档。这是程序员通常忘记或根本不知道如何正确做的事情。机器人将使用UML或更不正式的工具来文档化架构,从而使整个产品更易于维护。

评估。它们将观察每个程序员的活动,并评估他们的生产力。结果将直接发布到GitHub的问题中,或者通过电子邮件发送给项目经理。最后,它们将决定我们人类中谁对他们的项目更有价值。

我感谢ChatGPT帮助我列出这个清单。

你认为我们漏掉了什么?

Translated by ChatGPT gpt-3.5-turbo/36 on 2023-09-30 at 05:12

sixnines availability badge   GitHub stars