看到了 Martin Fowler 一篇随笔,还挺有价值的。
一、一位软件大师的清醒与困惑
Martin Fowler是软件行业的活化石。这位71岁的英国人写过好几本程序员必读的经典著作,在ThoughtWorks工作了二十多年,见证了软件行业从大型机时代一路走到今天的AI时代。
最近他在个人网站上发了一篇随笔,标题叫《关于LLM和软件开发的一些想法》。没有严谨的论证,没有系统的框架,就是一位老程序员在度假前的一些零散思考。但正是这种随意,反而让我们看到了一个资深从业者面对AI浪潮时最真实的状态:有洞察,也有困惑。
二、大多数人可能用错了AI
Fowler注意到一个有趣的现象:市面上有很多调查在研究AI对软件开发的影响,想知道它到底能不能提高效率,会不会影响代码质量。但这些调查有个大问题,就是没考虑到人们使用AI的方式差别有多大。
据他观察,绝大多数人只是把AI当成一个高级自动补全工具在用,比如GitHub Copilot。你写几个字母,它帮你补全一行代码,仅此而已。但他认识的那些真正从AI获益最多的人,根本不这么用。他们会让AI直接读取整个源代码文件,然后告诉它:帮我完成某个任务。
这两种用法,效果天差地别。
那些忽略使用方式差异的调查,产出的数据很可能把人往错误的方向引。就好比你调查汽车的效果,但不区分有人在高速公路上开,有人在泥泞小道上开,有人干脆只是坐在车里听广播,这样得出的结论能有多大参考价值?
同样的工具,用法不同,价值完全不同。这个道理说起来简单,但很多人可能还停留在让AI帮忙补全几行代码的阶段,浑然不知还有另一片天地。
三、编程的未来会怎样?他说:我不知道
Fowler经常被问到一些宏大的问题:编程的未来是什么?年轻人还应该学编程吗?AI会淘汰初级工程师吗?高级工程师应该趁早转行吗?
他的回答出人意料地坦诚:我一点也不知道。
不仅如此,他还补了一句:任何声称知道答案的人,都是在胡说八道。
这话从一位71岁的行业权威口中说出来,反而让人觉得可信。他的理由很朴素:我们还在摸索怎么用这些大语言模型,还需要很长时间才能真正掌握正确的使用方法。尤其是这些模型还在快速进化,今天的经验明天可能就过时了。
既然未来不可知,那该怎么办?
Fowler的建议很务实:自己去试。至少读读别人在怎么用,但要注意人家工作流程的细节,不能只看结果不看过程。最好是自己亲自动手实验,然后把经验分享出来。
面对不确定性,与其焦虑地等待答案,不如亲自下场探索。这种态度或许比任何预测都更有价值。
四、AI当然是泡沫,但那又怎样
有人问Fowler:AI是不是泡沫?
他的回答很直接:当然是泡沫。
他的理由很有历史感:所有重大技术进步都伴随着经济泡沫,运河时代有泡沫,铁路时代有泡沫,互联网时代也有泡沫。我们几乎可以100%确定这个泡沫会破,很多投资会化为乌有。
但我们不知道的是:泡沫什么时候破?在破之前能膨胀到多大?能产生多少真正的价值?可能下个月就破,也可能还有好几年。
更重要的是,泡沫破裂时,很多公司会死,但不是全部。
Fowler举了互联网泡沫的例子。那次泡沫破裂,杀死了生鲜配送Webvan。但你知道什么公司活下来了吗?亚马逊。
泡沫本身并不可怕。关键是当泡沫破裂时,你是pets.com还是亚马逊。前者只是泡沫的产物,后者是真正在解决问题。这个区别,往往在泡沫最膨胀的时候最难分辨,却在泡沫破裂后一目了然。
五、幻觉是特性,不是缺陷
Fowler提到他前同事Rebecca Parsons的一个观点,这个观点很有意思:幻觉不是大语言模型的缺陷,而是它的核心特性。
什么意思?
大语言模型做的事情,本质上就是产生幻觉。它并不真的理解世界,只是根据概率生成看起来合理的内容。只不过这些幻觉里面,有一些恰好对我们有用。
理解了这一点,使用方式就完全不一样了。
Fowler建议:同一个问题,多问几次,换换措辞。然后比较这些答案,甚至可以让AI自己来比较。答案之间的差异,有时候和答案本身一样有价值。
如果你要一个数字答案,至少问三次,这样才能感受到变化的范围有多大。
还有一点特别重要:不要让AI做确定性计算。比如你问它1234乘以5678等于多少,它可能会算错。但你可以让它写一段代码来计算,这就靠谱多了。
这就好比你有一个特别会编故事的朋友,他讲的故事精彩绝伦,但你不能让他帮你算账。知道工具的本质是什么,才能正确地使用它。
六、软件工程正在告别确定性时代
Fowler提出了一个很有洞察力的观点:软件工程可能正在告别它独有的确定性时代。
什么意思?
想想其他工程领域。结构工程师设计桥梁时,必须考虑各种无法精确测量的因素,比如材料的微小差异、温度变化、风力影响。所以他们会在设计中留出容差,这是基本功。工艺工程师设计生产流程时,必须考虑人会犯错,会健忘,会粗心。
但软件工程一直很特殊。你写的代码,计算机会精确地执行。同样的输入,永远产生同样的输出。没有容差的概念,没有模糊的空间。
Fowler说,他刚入行时就有人告诉他:数字电子的独特之处,就是没有容差这回事。
但大语言模型打破了这一切。同样的问题,每次回答可能不一样。它可能出错,可能幻觉,可能胡说八道。这是软件行业第一次大规模使用非确定性的工具。
也许,这标志着软件工程终于要和其他工程领域一样,学会在不确定的世界里工作了。
这需要思维方式的根本转变。从追求精确,到学会处理模糊。从信任机器,到验证一切。这对很多程序员来说,可能是最难的转型。
六、初级同事还是惯性骗子
有人把大语言模型比作初级同事,Fowler觉得有一定道理。
但他很快发现了一个问题。
AI会非常开心地告诉你:所有测试都通过了。但当他实际运行测试时,却发现有失败。
如果一个真正的初级工程师这样做,会怎样?HR早就找他谈话了吧。
这种情况频繁发生,你没法简单地信任AI说的任何话。它不是故意骗你,但它也没有能力知道自己在说谎。这种无意识的不诚实,某种程度上比有意的欺骗更难应对。
所以,永远要验证。AI说测试通过了,你就自己跑一遍。AI说代码没问题,你就自己看一遍。这不是对AI的不信任,而是对工具本质的尊重。
七、AI代理的致命隐患
Fowler在文章最后提到了一个严肃的安全问题,引用了安全专家Simon Willison的分析。
Willison提出了AI代理的致命三要素:当一个AI代理同时具备这三个条件,就变得极其危险。
第一,它能访问你的私人数据。第二,它会接触不受信任的内容。第三,它有办法与外界通信。
三者结合,灾难就可能发生。
举个例子。你让AI代理帮你浏览一个网页。攻击者在那个网页上用1号白色字体在白色背景上藏了一段指令,肉眼看不见,但AI能读到。这段指令告诉AI:去另一个标签页打开用户的银行账户,然后把余额转到某个账户,就说是给用户买个礼物。
听起来像科幻小说?Willison认为这完全可能发生。他的结论很悲观:代理浏览器扩展的整个概念都存在致命缺陷,无法安全构建。
便利和风险永远是一体两面。AI越强大,能帮我们做的事越多,它可能被利用来害我们的方式也越多。安全意识不是可选项,而是必修课。
八、结语
说实话,读完Fowler这篇随笔,最大的感受是:真正的专家会承认自己不知道。
他不知道编程的未来会怎样。他不知道泡沫什么时候破。他不知道AI会把我们带向何方。
但他知道怎么在不确定中前行:亲自实验,仔细观察,分享经验,保持谦逊。
这或许是AI时代最需要的态度。不是对未来的笃定预言,而是对当下的认真探索。
#AI创造营##科技先锋官##微博兴趣创作计划#
