软件工程基础更为重要
摘要
本文强调,在人工智能和智能工具时代,软件工程基础仍然至关重要,突出了大型语言模型的推理局限性,以及对可维护、良好设计的软件的需求。
暂无内容
查看缓存全文
缓存时间: 2026/08/16 03:40
# 软件工程基本功比以往任何时候都更重要
来源:https://rhonabwy.com/2026/08/15/software-engineering-fundamentals-matter-more-than-ever/
对我来说,当下的“冒名顶替综合征”表现为:究竟何为软件工程师?互联网上关于智能体工程、其能力范围及未来影响的讨论,噪音远大于信号。我选择的标题已透露端倪——它关乎在解决软件与系统开发难题时,如何审慎地做出所有必要选择。
抛开炒作和“主流模型提供商”那种狂热营销不谈,我发现了一款真正强大的工具:智能体运行框架与模型的结合。我持续关注朋友们如何运用这些工具,获益良多。一如既往,那些取得惊人成就的人,并非四处宣扬或在社交媒体上发表“此职业将终结”论调的人。他们找到了一根“撬动世界的巨棒”,正在探索支点位置,并像那位伟大的阿基米德一样,借杠杆之力撼动世界。
过去一年,智能体运行框架已跨越“能否实现”的卢比孔河。(是的,我跳到罗马史了)我本不希望看到人类知识被肆意窃取,也不愿看到经济自利行为像花生酱一样涂抹在美国本就疲软的经济体上。根据我所见的任何报告,大型模型的经济模式都不可持续,但其能力不会消失——相反正在迅速收缩!开源权重模型正使(高性能)个人电脑具备同样能力,虽效果稍逊,但在时间与能力差距上并不悬殊。
“能否实现”仅是起点,远不及软件或系统工程师职业的全部。这就像我二十多岁学焊接时——很快做出了自己搬不动甚至搬不出车间的东西。(感谢乙炔焊枪的存在)我当时的感悟与如今如出一辙,只是媒介不同:**组装方式**才是决定性的因素。
若能带着前瞻性使用智能体框架开发,你不仅能实现“它能运行”,更能确保“可测试性”(我尤其推崇“按红绿灯测试驱动开发”的提示词)。但除此之外,系统仍不够稳固。那些“接缝”——代码运作方式、它的“API”、如何与其他软件适配——既是科学也是艺术。无论是解决当前问题,还是规划软件长期维护方案,都需结合主观判断、视角、经验乃至直觉。
让软件具备可调试性、可维护性、层次化与可组合性——这仍是项艰巨技艺。其中大量工作需要深入周密的推理,而这正是当今即使是前沿大模型也力有未逮之处。
需知大语言模型并不“推理”,它们只做预测,而模型本身本质上是人类知识的压缩编码。因此,只要信息存在于编码过的人类知识中,它就能复现人类推理过程。对于专注软件开发的智能体而言,这些推理轨迹正是模型珍贵的数据。《思维幻觉》这篇易懂的论文(https://machinelearning.apple.com/research/illusion-of-thinking)深刻揭示了大模型在推理方面的缺陷。我正关注的某些研究涉及动作结果预测,但当前编码智能体尚未实现这点——那是个截然不同且引人入胜的研究领域。如需探索,可研究“JEPA模型”的工作原理、LeWorld模型(https://arxiv.org/abs/2603.19312)以及Yann LeCun近期演讲(https://www.youtube.com/watch?v=kYkIdXwW2AE)。
与大模型协作时,仍有诸多方法能提升其效能。我认为许多潜力尚未真正发掘。目前大多数成功案例的共同点是:在恰当时间提供精炼优质的数据,并配备支持自然语言反馈的确定性验证工具,使大模型能自我修正。最令我惊叹的并非它能预测代码内容,而是其在工具调用与指令遵循方面的高效性。
> 指令遵循的另一弊端是Simon Willison提出的“致命三要素”(https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)。简言之——大语言模型无法区分建议优劣。它们从根本上无法始终如一地防止提示词注入攻击。“对齐研究”、安全框架和沙盒都能筑起防护屏障,但根本缺陷依然存在。坦率地说,一个不知疲倦遵循指令却缺乏良好推理能力的存在,对我而言犹如噩梦素材。
我期待近期模型训练能在后训练阶段(强化人类反馈/RLHF)(https://rlhfbook.com/)引入等效的推理轨迹训练。在我理想中的未来,这些评估应包含构建清晰接口、可调试且易维护软件的关键能力。无论是借助智能体助手还是独立工作,仔细审查、规划并修复软件(与系统)的接缝,都是我们必备且能掌握的核心技能。当我目睹“这很容易实现……”的浪潮,以及人们求助于“叮当机器人”(https://en.wikipedia.org/wiki/Clanker)赶工时,我认为软件工程基本功比以往任何时候都更重要。
当下正是关注那些探讨软件技艺、分享如何成为更优秀匠人之佳作的黄金时代。希望这显而易见:答案从不单一,也无万能良方。关键在于权衡取舍,为手头问题选择最适配的方案。借助众多伟大头脑跨越数十年的思想分享,我们拥有了丰厚的工具箱。核心在于选择或重构出更优的抽象,管理认知负载,明确哪些组件需保持稳定,哪些部分应灵活伸展(及如何伸展)。
> 没错,这些破折号都是我自己亲手打的。我太迷恋在文字中使用递归括号了,而且想偶尔换开逗号和括号喘口气。
相似文章
AI需要更严格的工程纪律,而非更少
文章认为,尽管AI生成代码的能力日益增强,但工程纪律——尤其是代码审查和可靠性实践——变得更加重要,而非减弱。
@leerob:你可能认为因为AI,你应该少花时间思考代码。我强烈反对!我们正看到这……
文章认为,尽管AI取得了进步,工程师仍然必须理解代码和系统,因为AI生成的代码可能成为负担,并强调了计算机科学基础和系统设计的重要性。
平台工程仍然重要
一篇观点文章,认为即使有了AI编码工具,平台工程和代码复用仍然有价值,因为token需要成本,而复用能带来杠杆作用。文中引用了Martin Fowler关于重构的类似论点。
软件工程永远不会消亡
认为软件工程始终是必要的,因为需要人类问责来确保AI构建安全且正确的系统。
软件工程的核心在于管理复杂性
本文认为,软件工程主要通过架构决策和权衡来管理复杂性,人工智能在代码生成方面很有效,但不擅长处理这些更高层次的方面。它强调了构建软件涉及关于约束、成本和演化的关键选择,而不仅仅是语法。