清理AI明星开发者留下的烂摊子
本文探讨了“明星开发者”现象及其与AI生成代码的相似之处。明星开发者虽然技术高超但代码难以维护,离职后留下复杂系统。AI工具如LLM以类似方式快速生成大量代码,忽视可维护性,导致技术债务激增。作者建议谨慎使用AI,引导其生成小片段代码,保持架构简单,并强调手工编码的价值。
我们都有过与明星开发者共事的经历。他们刚加入团队时充满活力,带来新技术、新范式和新架构的绝妙想法,让其他人感到落后和过时。他们重写了公司大部分核心架构,引入了新的构建过程、工具和语言,拒绝大多数拉取请求,提高了对每个人的期望。没有人理解他们写的代码,但没人愿意承认。所有最困难的任务都分配给明星开发者,他们完成得比任何人都快,尽管只有他们自己知道代码如何组合在一起。几年后,他们感到厌倦,离开去寻找更有挑战性的项目。
当其他人接手他们的项目时,发现代码难以理解。仅仅是让代码在笔记本电脑上运行就可能花上一周时间。一半代码是用你不懂的语言写的,另一半使用了闻所未闻的库。你告诉老板代码需要重写,但他不相信,因为这是明星开发者写的。在清理代码的过程中,你开始浏览招聘信息并幻想离开。
我帮助过许多团队和机构清理明星开发者的遗留问题。我实际上很喜欢这种挑战,就像解开一团缠绕的灯串。在这个过程中,我注意到一些模式:这些明星开发者热爱编码和学习新范式,总是将自己推向能力边缘,写出最巧妙的代码,但很少关心他人是否能与之协作。
如今,人工智能带来了类似的问题。每次有人启动一个新聊天,就有可能给团队增加一位明星开发者。AI代理不记得昨天做了什么,能在几分钟内生成数万行代码,以超人的速度完成任务,但不关心代码是否与系统其他部分兼容,也不关心系统是否变得更易于理解。AI拥有一套最佳实践工具箱,却可能不适用于当前场景,它坚持用繁复的方法,即使复杂度的代价超过了收益。当要求它审查你的代码时,它会列出一长串改进建议,其中许多你并不同意。标准被提高了,许多开发者觉得必须使用LLM,否则就会落后。然而,我认为最终被淘汰的是那些让LLM编写所有代码的人。
面对大量生成的代码,系统的复杂度可能呈指数级增长,以至于唯一理解系统的方式就是借助LLM。开发者、团队乃至整个公司都可能对生成式AI上瘾并产生依赖。
清理数百个AI明星开发者的烂摊子并不比清理一个真人明星更有趣。至少真人明星有自己的设计思路并尽力而为,而基于“氛围编码”生成的代码来自多次不同聊天和上下文,就像数百个明星开发者各自独立编写功能或修复缺陷,导致技术债务有时永远无法偿还。
要构建持久的软件,有多种方式使用LLM而不让它成为明星开发者。你可以主导工程,引导LLM一次生成一小段代码,确保代码易于团队成员理解和协作。如果你迷失方向,无法理解LLM在做什么或为什么这么做,请踩下刹车。放慢速度以确保生成的软件质量,防止过度工程化,简化和再简化直至架构与问题复杂度匹配。有时也可以将LLM放回工具箱,自己动手编写代码。工艺始终掌握在我们手中,这是我们永远无法外包给机器的事情。