AI并没有让软件变糟,是人本身
本文认为,将软件质量下降归咎于AI是错误的。实际上,开发者长期以来已经接受了平庸、浪费和缺乏匠心的做法。AI只是加速了已有的不良实践。
文章情报
要点
- AI出现前,软件质量标准就已下降
- AI只是加速了已存在的糟糕开发习惯
- 真正的匠人精神已被快速交付文化取代
为什么重要
这条新闻值得关注,因为AI出现前,软件质量标准就已下降。
技术影响
可能影响模型选型、推理成本、产品能力和评测基准。
本文作者Raphael Amorim在开篇指出,AI是一个敏感话题,所以这篇文章并未链接到他的主页,只是记录个人想法,以防朋友问起。他担心有人误解他喜欢AI生成的“垃圾代码”,因为他认为当前非黑即白的讨论缺乏中间地带。
作者看到越来越多的头条指责“AI让软件变得更糟”,但他的回应始终如一:不,AI没有让软件变糟,是人本身。AI只是交到那些早已习惯于发布糟糕软件的人手中的最新工具。他明确表示自己并非AI拥趸,但也不是反对者——他喜欢技术本身,曾构建和微调过模型,也常阅读论文,只是不赞成让AI占据主导地位。
他认为,将责任推给AI是逃避更深层次问题的最简单方式。这个问题存在已久:在AI能自动补全函数之前,我们就已经在制造糟糕的软件了。究其原因,年复一年,我们不断降低标准,并称之为进步。我们容忍那些浪费资源的软件,因为对发布者而言成本为零,而代价由用户的机器、电池和内存承担。
最明显的例子是每天摆在开发者面前的编辑器。许多人使用伪装成桌面应用的浏览器来编写代码。VS Code固然有许多优点,但它是一个基于浏览器的编辑器,可以轻松消耗超过10GB内存,只为了编辑几个文本文件。编辑文本——这就是任务。我们竟然认为编辑文本值得十千兆字节的内存,而且几乎没人觉得有问题。作者本人从未使用Electron应用,这是原则而并非偶然。他拒绝仅仅因为对开发者方便就接受低质量软件。
作者怀念当约束真实存在的时代:64KB内存意味着什么,人们曾在如此有限的资源下构建完整的体验。那些约束并没有让软件变糟,反而促使人们思考,迫使工匠精神——每个字节都必须证明其存在的价值。而如今,我们几乎没有任何约束,但并没有利用自由去创造美好,反而集体选择“烧掉30GB内存”,几乎是在庆祝浪费。我们拥有前所未有的计算能力,却用它来变得前所未有的懒惰。
问题不止于编辑器。看看编程语言本身:臃肿的语言正被推向系统编程领域——这本应是每个字节、每个周期都必须精打细算的领域,但人们却耸耸肩说“还行”。这绝不行。选择一个沉重、带垃圾回收、运行在层层运行时之上的技术栈去做需要精确性的工作,并为其辩护,正是作者批评的态度。曾经界定系统编程的约束被悄然抛弃,而我们称之为“实用主义”。
更让作者感到好笑的是:通过npm安装来自完全不同语言编写的二进制文件,用IPC调用包装,然后作为一个“包”发布。从另一种语言拉取原生二进制,生成子进程,通过管道通信,称之为“包”。层层叠加,每一层都消耗内存和复杂度,只为了让每个人都不必离开舒适区。这样做当然能运行,但“能运行”从来不是优秀工程的标准——那只是我们错误地当成目标的底线。
核心观点是:AI并没有降低标准。标准早已低至地面。AI只是让我们更快地触底。如果一个开发者不关心资源使用、不关心所有权、不关心自己发布的内容,AI不会让他们变得更糟——他们本来就是这样。AI只是移除了最后一点阻碍他们的摩擦。垃圾代码迟早会来,AI只是给了它更快的运输车。
垃圾代码的真正来源是:人们失去了优秀工程的感觉,或者更可能的是,他们根本不在乎。一切变成关于交付而非匠心,关于时间而非工作本身。发布,关闭工单,继续下一项。当唯一的问题是“完成了吗?”而从不问“做得好吗?”,垃圾代码就不是偶然——它是奖励速度、忽视匠心的系统的可预测输出。AI并没有发明这种激励机制,只是完美地滋养了它。
所以当人们指着AI生成的代码说“看,软件变得更糟了”时,作者想问:比什么更糟?比那个10GB的文本编辑器?比需要1GB内存才能显示消息的聊天应用?比那些只是披着窗口外衣的网站式桌面应用?我们都接受了这些,甚至为之喝彩。别等到模型取代人写出糟糕代码时才突然生出良知——那是彻头彻尾的虚伪。
诚实的态度更难:承认质量多年来一直是可选的,我们早已用工匠精神换取便利。AI只是反映我们真正重视什么的一面镜子。如果把工具交给不关心质量的文化,结果只是加速生产该文化已有的产物。所以,AI没有让软件变得更糟。是我们,一直如此。承认这一点的那一天,我们才能真正开始建设更好的软件。