软件工程基础比以往更重要
The manifestation of my imposter syndrome, for me and today, is what does it mean to be a software engineer. There’s a lot more noise than signal on the Internet about agentic engineering, what can be accomplished, and its implications for the future. The title I chose rather gives it away; it’s about choosing — carefully — all the things you need to choose when you’re solving the puzzles of software and systems development.
对我而言,今天,冒充者综合征的表现就是:作为一名软件工程师意味着什么。关于智能体工程、其能实现的目标以及对未来的影响,互联网上的噪音远多于信号。我选择的标题多少透露了这一点;关键在于——在解决软件和系统开发的难题时,你需要谨慎地选择所有需要选择的东西。
Beyond the hype and junkie-like marketing fervor of “major model providers”, I found a really interesting power tool with the combination of harness and models. I’ve been following how friends have been using these tools, and learning a ton. As usual, the folks doing some of the most amazing things aren’t the ones crowing about it, or posting narrative blurbs in social media about the end of this profession. They found a “big damn stick”, they’re exploring the fulcrum points, and they’re representing good ole Archimedes to lean into that lever, moving the world.
在“主要模型提供商”的炒作和上瘾般的营销狂热之外,我发现了一个真正有趣的强力工具,即工具框架与模型的结合。我一直在关注朋友们如何使用这些工具,并学到了很多。像往常一样,做出最惊人成就的人并不是那些大肆宣扬或发帖声称这个职业终结的人。他们找到了一根“大棒”,正在探索支点,并代表着老阿基米德,靠着那根杠杆,撬动世界。
In the past year, agent harnesses crossed the “can it be done” rubicon. (yep, jumping forward to Roman references). I would not have wished for the world’s knowledge to taken without permission and regard, or the lunatics to delve into economic self-dealing that’s peanut buttering over the otherwise tanking US economy. The economic models for the large models aren’t viable from any report that I’ve seen, but the capability isn’t going away. Instead it’s shrinking (fast!). Open weight models are making (beefy) personal computers quite capable of doing the same. They’re not quite as effective, but the delta in time and capability isn’t large.
在过去的一年里,智能体工具框架已经跨过了“能否做到”的卢比孔河。(是的,跳到罗马典故了)。我不希望世界知识被未经许可和尊重地获取,也不希望疯子们陷入经济上的自利行为,这种行为正在像抹花生酱一样掩盖本已低迷的美国经济。据我所见,大型模型的经济模式并不可行,但这种能力不会消失。相反,它正在(迅速)缩小!开放权重模型正使(强大的)个人电脑能够胜任同样的任务。它们的效果稍逊一筹,但在时间和能力上的差距并不大。
“Can it be done” is only the start, not even close to the majority a software or system engineer’s profession. It’s like when I learned to weld in my 20’s – I quickly created things that I couldn’t lift or even get out the door of the shop. (thank goodness for acetylene torches). What I learned then is I think the same lesson, different medium: How something goes together is what makes all the difference.
“能否做到”只是开始,远非软件或系统工程师职业的大部分。就像我二十多岁时学焊接一样——我很快做出了自己都搬不动、甚至无法搬出车间的东西。(幸好有乙炔炬)。我那时学到的,我想现在也是同样的道理,只是媒介不同:事物如何组合在一起,才是决定一切的关键。
If you use agentic harnesses to develop with a bit of foresight, you can get not only “it works”, but also “it’s testable” (I heavily lean into the prompt “develop with red/green TDD”). But it’s not very solid much above that. The seams — how your code works, it’s “API”, and how it fits with other software — are as much art as science. It is made up of subjective measures that rely on your viewpoint (and experience, as well as your guesses) for both what you’re solving now, and how to live with that software over a long period of time.
如果你在使用智能体框架(agentic harnesses)时稍微有点前瞻性地进行开发,你不仅能得到“它能跑”,还能得到“它可测试”(我非常倾向于使用“用红/绿 TDD 来开发”这样的提示)。但再往上,它就不那么稳固了。那些接缝——你的代码如何工作、它的“API”、以及它如何与其他软件配合——既是科学也是艺术。它们由主观衡量构成,这些衡量取决于你的视角(以及经验,还有你的猜测),既关乎你当前要解决的问题,也关乎如何长期与这套软件共存。
Making software debuggable, maintainable, layered, and composable – that’s still quite a trick. Quite a lot of that work requires extensive, thoughtful reasoning. And that’s where the LLM’s today, even the leading edge of the “capability” from frontier models, fall short.
让软件可调试、可维护、分层且可组合——这仍然是个不小的难题。其中相当多的工作需要广泛而深思熟虑的推理。而这正是当今 LLM,即使是前沿模型“能力”的领先水平,也力不能及的地方。
It helps to know that LLMs don’t “reason”. They predict, and the models themselves are effectively written human knowledge compressed. So if it’s in human knowledge that was encoded, it can echo out the human reasoning. For agents focused on software development, those reasoning traces are the precious data for the models. There’s a very approachable research paper on just how bad LLMS are at reasoning called The Illusion of Thinking. There is some research I’m following that includes prediction of results of actions, but that’s not what we have today with coding agents. It’s a pretty different – and fascinating – area of research. If you want to explore, go digging on how “JEPA models” work, LeWorld Model, and recent talks by Yann LeCun.
了解 LLM 并不“推理”会有所帮助。它们是在预测,而这些模型本身实际上就是被压缩的人类书面知识。因此,如果某些内容存在于被编码的人类知识中,它就能把人类的推理回显出来。对于专注于软件开发的智能体来说,这些推理轨迹正是模型的宝贵数据。有一篇非常易懂的研究论文,讲的是 LLM 在推理方面有多糟糕,名为《The Illusion of Thinking》。我也在关注一些研究,包括对行动结果的预测,但这并不是我们今天在编程智能体中所拥有的。那是一个非常不同且迷人的研究领域。如果你想探索,可以去挖掘“JEPA 模型”的工作原理、LeWorld 模型,以及 Yann LeCun 最近的演讲。
While you’re working with LLMs though, there’s still a ton of ways to make them more effective. I think there’s a lot of advances that we haven’t even really begun to eek out. Most of the wins I’m seeing today involve providing it good, concise data to work from, at the right time, and providing deterministic validation tooling with natural language feedback that the LLM can use to correct itself. The amazing thing to me isn’t that it can predict what to write, but that it is effective at tool calling and following instructions.
不过,在你使用 LLM 时,仍然有大量方法可以让它们更有效。我认为有很多进展我们甚至还没有真正开始挖掘。如今我看到的大多数成功,都涉及在正确的时间为它提供良好、简洁的数据,并提供带有自然语言反馈的确定性验证工具,让 LLM 能够用它来纠正自己。对我来说,令人惊叹的不是它能预测该写什么,而是它在工具调用和遵循指令方面非常有效。
Another downside of this instruction following is what Simon Willison coined as the lethal trifecta. Basically – LLM models can’t distinguish between good advice and bad. They’re foundationally incapable of always and consistently preventing prompt injection attacks. “Alignment work”, safety harnesses, and sandboxes all help to add barriers against the worst, but there are fundamental gaps. And frankly, something that tirelessly follows instructions without having good reasoning is nightmare fuel to me.
这种指令遵循的另一个缺点是西蒙·威利森(Simon Willison)所称的“致命三重奏”。基本上,LLM 模型无法区分好的建议和坏的建议。它们从根本上无法始终如一地防止提示注入攻击。“对齐工作”、安全护栏和沙箱都有助于为最坏情况设置屏障,但仍存在根本性的漏洞。坦白说,一个不知疲倦地遵循指令却没有良好推理能力的东西,对我来说简直是噩梦般的存在。
I hope there will be near-term nadvances in how models are trained to include the equivalent of reasoning traces for post-training (RLHF). In my ideal future, these include more of what it means to build software with clean interfaces, that’s debuggable, and and that’s maintainable as a key part of the reinforced evaluations. Carefully reviewing, planning, and fixing the seams of software (and systems) is one of the critical skills we both can, and need to, employ when developing software – with or without agentic assistants. And as I see the wave of “Oh, that’s easy to implement…” and people reaching for clankers to get it done, I think it’s more important than ever.
我希望在不久的将来,模型的训练方式能取得进展,纳入相当于后训练(RLHF)的推理轨迹。在我理想的未来中,这些包括更多关于如何构建具有干净接口、可调试且可维护的软件的含义,并将其作为强化评估的关键部分。仔细审查、规划和修复软件(及系统)的接缝,是我们在开发软件时能够且需要运用的关键技能之一——无论是否有智能体助手。而当我看到“哦,这很容易实现……”的浪潮,以及人们伸手去拿笨重工具来完成任务时,我认为这比以往任何时候都更重要。
It’s a great time to be following folks who write, talk, and share about the craft of software, and how we can be better artisans. Hopefully it’s obvious, but there’s never a single answer — a panacea. It’s always about tradeoffs, choosing what makes sense for the problem at hand. With the help of a lot of great minds sharing their thoughts — both now and going back decades — we have a great tool chest for this work. It’s about picking, or reworking to move to a better choice, the right abstractions. It’s core is managing the cognitive load, learning which pieces we need to be stable, and where we want our work to flex and bend (and how).
现在是关注那些写作、谈论和分享软件工艺以及我们如何成为更好工匠的人的好时机。希望这很明显,但从来不存在单一的答案——万灵药。总是关于权衡,选择对当前问题有意义的东西。借助许多伟大头脑分享他们的想法——无论是现在还是过去几十年——我们为这项工作准备了一个很棒的工具箱。关键在于选择或重新设计以转向更好的选择,正确的抽象。其核心是管理认知负荷,了解哪些部分需要保持稳定,以及我们希望工作在哪里灵活应变(以及如何应变)。
And yes, I wrote the damn em-dashes myself. I’m too in love with a recursive parenthetical in my writing, and I like a break from commas and parentheses.
是的,那些该死的破折号是我自己写的。我太喜欢在写作中使用递归的插入语了,而且我喜欢从逗号和括号中解脱出来。
Share this:
分享此内容:
- Share on X (Opens in new window) X
- Share on Facebook (Opens in new window) Facebook
- Email a link to a friend (Opens in new window) Email
- Share on LinkedIn (Opens in new window) LinkedIn
- Share on Reddit (Opens in new window) Reddit
- More
- Print (Opens in new window) Print
- Share on Tumblr (Opens in new window) Tumblr
- 在 X 上分享(在新窗口中打开)X
- 在 Facebook 上分享(在新窗口中打开)Facebook
- 通过电子邮件向朋友发送链接(在新窗口中打开)电子邮件
- 在 LinkedIn 上分享(在新窗口中打开)LinkedIn
- 在 Reddit 上分享(在新窗口中打开)Reddit
- 更多
- 打印(在新窗口中打开)打印
- 在 Tumblr 上分享(在新窗口中打开)Tumblr
Like Loading...
赞 加载中...
Related
相关
Published by heckj
由 heckj 发布
Developer, author, and life-long student. Writes online at https://rhonabwy.com/. View more posts
开发者、作者和终身学习者。在线写作于 https://rhonabwy.com/。查看更多文章
更进一步:量化金融体系
看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力