人工智能时代软件工程智慧的消解
AI编程助手的快速普及正在制造一种系统性风险:开发者逐渐停止阅读和编写代码,可能以牺牲长期可维护性为代价换取短期开发速度。这种向“感觉编程”(vibe-coding)的转变——依赖AI生成功能正常但结构脆弱的代码——威胁着培养复杂软件系统长期管理所需专家直觉的能力,而这种能力需要数年而非数周的积累。
可维护性鸿沟:为何AI无法‘编码’智慧
软件的可维护性和良好的架构无法通过即时奖励信号来衡量,因此对当前AI训练方法而言是不可见的。尽管AI可以生成今天通过测试套件的代码,但这类代码的结构性缺陷往往要到数月或数年后系统需要演进时才会显现。
即时反馈的失败
AI模型是在现有代码库中的模式上进行训练的,而其中大部分代码质量并不理想。由于强化学习需要即时奖励信号,AI无法学习到可维护性的‘长期策略’。对于三年后仍易于修改的代码,没有即时的适应度函数;因此,AI倾向于遵循初学者规则,而非专家所具备的、情境依赖的精细判断。
简化艺术
定义可复用且清晰的函数是一项高级技能。当前最先进的模型在真正简化方面常常表现不佳,经常将函数拆分为更小的片段,但这些片段实际上不可复用,或迫使读者在多个定义之间跳转才能理解单一逻辑流程。这表明缺乏决定代码应如何组织以利于人类理解的‘智慧’。
技能退化与机构知识流失的风险
当开发者停止主动决策,不再对代码的具体实现细节负责时,他们便停止从错误中学习。这会形成一个危险的反馈循环,下一代工程师可能永远无法达到精通水平。
‘外包’的类比
一些观察者将当前趋势与制造业外包相类比。正如西方因将制造外包给成本更低的市场而失去了生产基础硬件的机构性专长,软件行业也面临风险:通过将编码的脑力劳动外包给AI,可能失去内部理解并维护自身系统的能力。
‘优质代码’标准的丧失
机构知识不仅仅是知道如何修复一个bug,更在于知道‘优质代码长什么样’。如果AI承担了大部分设计和实现工作,组织内部的质量基准就会退化,而从资深导师那里学习的能力也会减弱,因为‘智慧’不再被实践或记录。
反驳观点:向产品管理的转变
并非所有行业专业人士都视这一转变是损失。一些人认为,软件工程师的角色只是从‘写作者’演变为‘引导者’或‘产品经理’。
‘超能力’视角
拥有深厚基础知识的资深开发者可以利用AI在多种语言(如C++、Java、.NET)中加速产出,而无需成为每种语言的语法专家。对这些用户而言,AI处理了编码的‘洗衣工作’,使他们能够专注于高层次架构和通过严格测试验证的正确性。
‘遗留代码’的现实
反对‘智慧’论点的人指出,大多数人类编写的大型企业代码长期以来一直是一团乱麻,这是由于时间压力和商业约束所致。从这个角度看,AI并未制造新问题,而只是加速了人类数十年来一直生产的低质量代码的产出。
未来展望:‘无AI’成为竞争优势
随着行业充斥着AI生成的‘垃圾代码’,可能会出现两类公司之间的分化:一类追求原始速度,另一类则追求深度技术精通。
精品工程的兴起
有人预测,‘无AI’政策最终可能成为竞争优势。那些保持具备深度推理和手动编码精通能力的团队,可能在应对关键故障、实施复杂优化以及以纯代理工作流无法实现的方式确保系统长期可行性方面更具优势。
验证挑战
最终,‘感觉编程’的问题本质上是验证问题。软件工程未来的挑战不一定是停止使用AI,而是开发新的护栏——例如将循环复杂度或领域驱动设计(DDD)原则等高级指标整合进代理工作流中——以确保速度不会永久破坏软件的可维护能力。
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch