AI摇滚明星开发者留下的烂摊子:如何清理与避免
本文探讨了AI生成代码带来的技术债务问题,类比人类“摇滚明星开发者”留下的混乱代码库,指出团队需警惕过度依赖LLM导致的系统复杂性和维护困难。
人工智能摇滚明星开发者后的清理我们都和一个摇滚明星开发者合作过。他们几年前就加入了这个团队,充满了活力。他们对新技术、新模式、新架构有很好的想法。他们的前沿想法让其他人感到有点落后和过时。他们重写了公司的大部分核心架构。
他们引入了新的构建过程、新工具、新语言。他们拒绝了大多数拉取请求,提高了对其他人的期望。没有人理解他们写的代码,但也没有人承认这一点。所有最困难的任务都分配给了这位摇滚明星。他们会比其他人更快地完成这件事。
工程学听起来总是非常令人印象深刻,即使摇滚明星是唯一一个知道它如何组合在一起的人。相比之下,其他人的行动要慢得多。每个人都在努力跟上,学习新库,并以摇滚明星的方式做事。他们加入团队几年后,突然就走了。
他们感到无聊,希望在更大的公司找到一份更好的工作,从事更具挑战性的项目。处理善后事宜突然,你被要求接管这位摇滚明星的项目。你深入研究了代码,发现自己被活埋了。数据流如此难以追踪,似乎有人试图掩盖一起谋杀案。
你首先尝试修复一个简单的错误。仅仅让代码在你的笔记本电脑上运行就花了一周的时间。
一半的代码是用你不懂的语言编写的。另一半是使用你从未听说过的库编写的。你试图告诉老板你认为代码需要重写。他们不相信你,因为这是摇滚明星自己写的。当你涉水穿过污水时,你浏览了招聘信息并幻想着离开。
清理摇滚明星后我与许多团队和机构合作过,他们需要我在这些摇滚明星之后清理干净。我实际上喜欢尝试理解和拯救混乱的代码库的挑战。这就像拿着一盒纠结的串灯坐下来,然后把它拆开,直到它们再次可用。当我经历这个过程时,我看到了一些模式。
这些摇滚明星绝对喜欢编码、学习和使用新范式,这表明了这一点。他们总是把自己推向能力的边缘,尽可能编写最聪明的代码。他们专注于尽可能快地行动。不幸的是,这些摇滚明星最不关心的就是编写其他人可以使用的代码。
人工智能随之而来在过去的几年里,大多数团队都被摇滚明星大军压垮了。每次有人开始新的聊天时,都有将摇滚明星添加到团队中的风险。代理人不记得昨天做了什么。它可以在几分钟内轻松生成数万行代码。它致力于以不人道的方式尽可能快地完成任务。
它不在乎此代码是否与系统中的所有其他代码相匹配。它也不在乎该系统是否变得更容易理解,或者变得更糟。人工智能有一个最佳实践工具箱,但可能不适用于这里。它坚持“腰带和背带”的做事方式,即使复杂性大于好处。
当被要求审查你的代码时,它会列出一长串改进,但其中许多是你不同意的。每个人的门槛都提高了,许多人觉得他们需要使用LLM,否则他们将永远落后。(尽管我相信最终会被抛在后面的是那些让LLM编写所有代码的人。
)由于生成的代码如此之多,系统的复杂性可能会呈指数级增长。它可能是如此复杂,以至于唯一能理解它的方法就是使用LLM。开发人员、团队、整个公司都可能对生成式AI上瘾并依赖。在数百名AI摇滚明星之后清理坐下来和一堆垃圾在一起可没有给摇滚明星打扫卫生那么有趣。
至少这位摇滚明星心里有某种设计,并且正在尽力做到最好。氛围编码的一堆污水并不是由一个人工开发人员编写的。它是在许多不同的聊天和许多不同的上下文中生成的。它就像由数百名不同的摇滚明星编写的代码库,一次一个功能或修复错误。
有时技术债务太多,永远无法偿还。
构建持久的软件LLM的使用方法有很多,但不允许它表现得像摇滚明星。你可以领导工程并指导LLM一次生成小片段。你可以确保该软件的编写方式使你团队中的每个人都能够理解和轻松使用它。如果你发现自己迷路了,无法理解LLM在做什么或为什么,请踩刹车。
放慢速度是可以的,以确保你生成的软件质量高。防止过度工程化、简化和简化,直到架构与问题的复杂性相匹配也是可以的。有时可以将LLM留在工具箱中,并自己编写代码。工艺永远掌握在我们手中,这是我们永远不能外包给机器的一件事。