解决了“错误的问题”:对AI编程热潮的深度反思
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/
在AI辅助与AI主导编程逐渐普及的今天,越来越多的从业者沉醉于自动生成代码的惊艳表现。然而,对于经验丰富的软件工程师Uwe Friedrichsen而言,这场“革命”始终带着一种隐隐的不协调感——我们可能正在用一种极其强大的技术,去解决一个根本不是问题的问题。
以下是他对当前AI软件开发热潮的冷静拆解与深刻反思。
一、AI编程的两个版本:辅助者与主导者
Uwe将AI编程分为两个阶段:
-
AI辅助编程:人类写代码,AI作为助手支持流程。
-
AI主导编程:AI生成整个解决方案,人类仅在外围观测行为,这种方式被戏称为“vibe coding”。
尤其在第二种场景中,AI生成的代码表现令人惊艳——它能实现复杂逻辑、集成多种功能模块,甚至有“奇才”般的创造力。
但同时,它也像一个注意力极度分散的天才儿童,频繁走神、忘记目标、偏离约束,需人类不断提醒其回归正轨。
更令人困惑的是:AI有时能在整体表现优秀的代码中,突然插入一段完全不合逻辑的错误语句。
即便如此,Uwe承认,AI的技术潜力令人赞叹。但即便放下种种担忧、全力以赴接纳AI,依然存在那种难以言明的不安:我们,真的解决的是“对”的问题吗?
二、LLM的工作原理意味着什么?
LLM(大语言模型)并不是真正意义上的“智能体”:
-
它基于概率进行响应:对输入进行模式匹配,生成最可能的下一个Token;
-
它不能进行真正的创造,只能在训练中“见过的知识”范围内进行组合;
-
所谓的“创新”往往是对既有知识的重新拼接。
这意味着:如果AI生成了可用的代码,那它“看过”类似代码的可能性极高。
Uwe通过一个Rust编程的案例进一步说明了这个问题:
-
当AI被要求直接生成Rust代码时,它失败了;
-
但当先生成Python代码再转换为Rust时,它成功了;
-
原因在于训练数据中Python样本远多于Rust样本;
-
本质:AI“生成力”的上限 = 它训练数据的质量与广度。
三、AI是在加速“重复造轮子”?
既然AI生成的代码很大概率是“它见过很多次”的代码,那么问题来了:
如果这些代码如此常见,为何它们不早已封装成库、框架,甚至平台服务?
为何AI仍需要一次又一次“重写”这些早已存在的解决方案?
我们是否沉迷于“重复制造轮子”,却忽视了应该抽象的方向?
Uwe的判断是:我们用AI加速生产的是重复性劳动的堆叠,而非对复杂问题的根本解决。
四、“AI让我做出一款iOS App!”——真的是生产力飞跃吗?
Uwe指出,许多对AI编程赞不绝口的“先锋”往往并非专业开发者:
-
他们不具备语言或生态知识;
-
他们做出的只是一个简单的玩具或原型;
-
AI只是填补了他们知识上的缺口,而非真的带来“效率革命”。
这种现象掩盖了一个核心问题:AI提升的是对“知识门槛”的穿透力,不是“工程能力”的跃迁。
而真正写生产级代码的开发者,几乎没人说“AI让我的速度提升了10倍”。
他们说的更多是:AI让工作更轻松了,能少做些无聊事。
五、AI生成的代码质量会更好吗?未必。
支持AI编程的一个普遍说法是:反正现在的代码质量也不高,AI生成的“也就那样”,还能更快,不好吗?
Uwe承认,大多数企业软件确实只达到“勉强能用”的水平。
但他指出:
AI的训练数据就是这些低质量代码!
AI从中学习,再反哺生成;这意味着我们在用AI重现我们想摆脱的“问题代码”。
本质问题不是人类开发者效率低,而是整个行业缺乏系统性、工程化、教育投入——AI并不能弥补这些。
六、真正的问题:缺乏教育与持续训练
Uwe揭示了开发行业被忽视的真相:
-
许多软件开发者并没有接受过正式的计算机科学教育;
-
很多人是“转行”来的,靠培训班上岗,基础薄弱;
-
公司普遍不重视持续培训,缺乏对“长期能力”的投资;
-
即使有基础,IT变化太快,不更新技能就会被淘汰。
我们创造了一个机制,它产出的是劣质代码;现在,我们又指望用AI更快地产出更多劣质代码。
七、“业务需要更多功能!”——真的吗?
Uwe指出一个被广泛忽视的问题:我们是否真的需要那么多功能?
他总结了企业中常见的恶性循环:
-
需求提出:业务说“我们需要更多功能”;
-
功能上线:但实际并未带来业务提升;
-
误判根因:领导层认为“功能不够多”,继续提出更多需求;
-
再开发、再失败,循环加剧。
这导致:
-
大量无用功能堆积在代码库中;
-
软件复杂度(尤其是意外复杂度)飞速增长;
-
开发效率越来越低;
-
AI介入后,只是加速这个恶性循环罢了。
八、讽刺的是:AI要求我们重视的,正是我们一直忽视的
最后一击讽刺性极强:
为了让AI写出高质量代码,必须提供明确的需求和良好的架构设计。
而这正是过去几十年人类开发者不断请求却被拒绝的东西。
企业一边无视人类开发者对“设计时间”的需求,另一边却愿意为AI去写更好的文档。
这无疑反映出一种对技术的非理性崇拜,以及对人类工程能力的轻视。
总结:我们正在用AI解决“错的问题”
Uwe总结了他的“nagging feeling”来自哪里:
-
LLM的能力本质上是组合训练数据的重构;
-
大量AI粉丝其实只是缺乏知识而获得了一种“捷径”;
-
经验开发者并未显著加速,AI带来的只是便利;
-
系统性教育缺失才是“代码质量差”的根源;
-
企业急功近利、低投入培训,反而指望AI治愈一切;
-
功能膨胀、需求盲目,导致了软件系统的崩溃;
-
我们几十年来都忽视了设计与文档,现在却为了AI去认真对待这些;
-
而所谓的“AI解决方案”,根本不曾触及以上任何核心问题。
Uwe的结语:
“LLM 是令人惊叹的技术。但如果我们只是盲目地将它们应用于一切,我担心它最终只会巩固现有弊病,并放大软件开发中已有的问题。”
真正令人兴奋的不是“AI可以写代码”,而是如果我们先解决已有问题,再使用AI,那才是真正的飞跃。
我们不需要用AI制造更多废料,我们需要的是彻底重新思考问题本身。
AI本身并非错误,但把AI用在错误的问题上,是。