关于AI的真实情况
作者以个人视角探讨AI对软件开发的影响,指出AI和人类都会写出糟糕的代码,提示工程困难,AI生成的文本过于冗长且充满自信,但AI也是强大的工具,尤其在医疗信息理解方面。最终强调深度人类理解不可替代,并质疑AI代理开发的实际价值。
作者曾是编程爱好者,如今却因AI的兴起而减少了编程时间。整个软件开发领域笼罩着一种焦虑:我们的工作会消失吗?我们多年学习的技能是否不再重要?在作者看来,AI并非万能,它同样会写出糟糕的代码,甚至比人类更快地犯错,并且每次交互都需要付费。
提示工程本身也是一大难题。用英语向AI描述业务目标,如同站在二楼往厨房的汤里加胡椒——不是太多就是太少,常常偏离目标。而且AI生成的文本冗长且自信满满,让人读不下去,甚至产生自我怀疑:“我是不是太笨了,以至于看不懂?”这种不安全感反而导致更多错误。
作者还对人类写作产生了怀疑。网络上充斥着“不是X,而是Y”这样的句式,作者会下意识认为这是AI生成的。这种持续的不信任令人疲惫。同样,用AI代写消息也传递出一种冷漠——如果连亲自写消息都不愿意,那么对收件人也不够重视。文档泛滥成灾,写文档的成本几乎为零,但作者怀疑连文档的生成者自己都不会通读全文,更别提接收方了。沟通链条变成了“人A → 人A的代理 → 人B的代理 → 人B”,真实的人类交流可能正在消失。
在代码库的不同功能区域,风险容忍度各不相同。用AI处理支付相关代码令人提心吊胆,而用于新功能则相对随意。代码库的耦合度、架构一致性、技术债务、测试覆盖率等因素,都会显著影响AI代理的开发体验。作者认为,对抗性代码审查非常有效,让两个不同的模型互相审查代码,可以大大减少错误。
但AI也有其固有缺陷:它不会真正学习,每次偏离轨道都只能通过新增规则文件来修正,但这些文件往往变成消耗token的伤疤。AI也缺乏真正的理解,不会主动提问澄清,对业务背景有限。更重要的是,AI不会为失败负责,即使它导致了事故,也不会被解雇。
尽管如此,AI仍是不可思议的工具。作者曾通过将医生的笔记输入ChatGPT,帮助理解亲人的病情,从而提出更合适的问题。这种价值无法估量。然而,深度的人类理解是AI无法替代的。在新的工作环境中,作者发现自己难以快速掌握多年积累的隐性知识,而那些对代码库了如指掌的同事却能轻松提供指导。
上下文管理成为新的战斗:给多给少都不行,只能不断尝试。AI代理开发的价值尚未完全兑现,新模型虽然更强,但每token成本也更高。说“是”比说“不”更容易,AI让我们可以轻易答应客户的所有要求,但代价是系统的复杂性增加。产品真的因此变得更好吗?我们不能确定。虚荣的代码重构变得前所未有的简单,却可能导致无谓的反复调整。
最后,作者感受到软件开发已经变了味。五年前那种解决问题带来的成就感,如今被持续的决策疲劳所取代。也许这仅仅是变革带来的不适,但无论如何,AI已经深刻改变了这个行业的面貌。