註冊並分享邀請連結,可獲得影片播放與邀請獎勵。

檢索結果 SoftwareEngineering
SoftwareEngineering 貼吧
一個關鍵字就是一個貼吧,路徑全站唯一。
建立貼吧
用戶
未找到
包含 SoftwareEngineering 的搜尋結果
推荐这篇文章。Redis 作者 antirez 的核心论点:控制想法比控制代码更重要。 他认为审查 AI 代码已经"大部分毫无意义"——真正该做的只有两件事:掌控设计,拼命做 QA。 看看这个博客过去的历史。有很多关于用 AI 编程的文章,其中一些可以追溯到 2024 年 1 月。毕竟,我是一个还算受尊敬的开发者。我不需要作为一个寻求关注的老头子留在"圈子里",我最近重新加入了 Redis,现在还在开发一个本地 LLM 推理的开源软件,在社区里受到了不错的欢迎。为什么我继续做这件事——说人们不想听的话?为什么我一直宣布未来的编程默认会是什么样子?因为我感到有一种紧迫感,想降低那些比我更没准备好应对变化的人受到的冲击,他们通常比我年轻,而且不像我,没有预见其中许多事情的发生(在 ChatGPT 出现之前,我就在 2022 年出版了一本书,预示了许多现在已经发生的事情,以及我相信将会发生的事情,所以我觉得我可以说这些而不显得自我中心)。 所以我的做法是一个技巧。人们越来越觉得编程被 AI 彻底改变了,不知道该怎么办,不知道自己是否真的可以用一种完全不同的方式开始编码,不再把代码当作主要的产出。他们觉得在背叛自己的领域。所以我的意图是站出来说"看着我,我会写代码,你知道的,我没有躲在 AI 后面:然而,事情变了,这不是你的弱点,不是你中了 AI 的毒。只是我们的领域正在朝着一个令人难以置信同时又痛苦(但也快乐)的方向演进。" 这就是为什么昨天我在 X 上说,我相信许多程序员现在的影响力比他们本可以达到的要小,因为他们在盯着代码看。我真的相信这一点。请注意,这并不意味着用 vibe coding 的方式直接要最终产品。重点是:如果你掌控了你软件的想法,盯着代码本身是次优的,而且常常毫无意义。 原因如下: 1. 你现在可以生成大量代码,即便不计算 LLM 的代码啰嗦问题(那也大部分是因为你还不能很好地 instruct 它们)。你打算怎么每天审查 5000 行代码? 2. LLM 非常擅长写局部最优的代码,但在大想法上更弱(虽然在改进)。逐函数、逐行地扫描有什么意义?相反,你应该把你心里的设计 prompt 进去,有时候问"那个部分的精确设计是什么?它是怎么工作的?"然后评估它是不是正确的模型。这快得多。 3. 工作日是 8 小时。如果你在读代码,这是一个取舍。你在减少做另一件事的时间——今天你工作中最重要的那部分:问自己"我在用这个软件做什么?我想往哪个方向走?"以及想新想法、新功能、优化技巧。以及做大量的 QA。 掌控想法。记得《人月神话》里的这句话吗?一本 70 年代的书告诉我们关于当前软件时代的东西,比 2000 年到 2020 年间说的很多东西都多。为什么现在抗议 AI 的人,没有被过去十年软件的状态所震惊?我们在最近几年——在 AI 之前——触碰到的 slop 水平是不可想象的。我再告诉你一件事。什么是 slop?用 DwarfStar 我完全自动化地实现了两个 LLM(DeepSeek v4 和 GLM 5.2)的推理:但你自己试试,你会发现你不能只是说"实现 XYZ"然后就看到它能用。你必须理解事情是怎么运作的,什么是最好的设计,如何达到某个性能水平。然后我把实现和其他系统做了对比,检查正确性,发现其他实现有时包含更多错误。我进一步研究,发现本地推理领域充满了微妙的错误,累积起来会损害模型输出——attention 实现中的问题导致上下文超过某个限度后性能滑坡,因为索引 attention 的实现是坏的(比如做了超过应该做的工作),等等。这是一个非常复杂、快速变化的领域,每天都有模型发布,推理图彼此略有不同。对开发者来说,这是一个不公平的游戏。好吧:AI 在这方面的帮助极大。在许多领域,严谨的工程(在设计层面)和测试远好于手写一个 GPU kernel(或逐行读它)。所以我们确定大部分抵抗不是意识形态吗? Matteo Collina 昨天回复我的推文问我:但你不是说过你会检查 Redis 的所有 AI 生成代码吗?这确实是一个好问题。是的,我做,但这在这一点上是我需要做的事情,但我相信大部分时候是毫无意义的——部分是在 GPT-5.5 发布之后,但现在有了 Fable 和 GPT-5.6 Sol 更是如此。是的:我发现了一些我不喜欢它们被编写的方式,但如果我打开其他 Redis 贡献者写的 Redis 文件,里面有远更糟糕的东西,不是因为他们不是好的程序员,而是因为这是一个品味问题。我写非常干净的代码,因为我希望它是可读的,所以在 Redis Arrays 的实现过程中我做了修改。我现在又在为 Redis sorted sets 的 50% 内存节省优化做同样的事,一个我很快会提交的 PR。但我不觉得这还有用了。没有人应该再盯着这段代码看,而应该只看代码包含的想法。我继续这样做是出于对用户的尊重。Redis 已经是一个被广泛使用的东西,许多程序员会打开文件,手动修改东西。但如果我完全自由,你知道我会怎么做吗?把审查占用的所有时间用来做更多的 QA,想下一个优化思路并应用它,以及用 LLM 写一个 DESIGN.md 文件——用人类语言描述每个数据结构,包含它承载的想法、实现技巧和设计。将来,这比审查代码有用得多。 你想修改 sorted sets?你打开文件,读设计文档,你就拥有了这些想法。你可以打开 agent,用正确的思维模型让它帮你做事。这比审查代码有用得多。 Fable 和 GPT-5.6 对 sorted sets 内存节省的审查,将比我自己的审查发现更多的错误和微妙的竞态条件。然而我还是会做。但对于大多数软件项目,所有这些已经不再有意义。专注于掌控想法。专注于质量、测试、以及对你想要交付的软件有一个清晰的构想。世界变了,这是痛苦的,但同时也充满了机会——去改善一个已经彻底腐烂的软件世界。 我只有一个疑问,关于那些经验不够、无法建立心智模型的年轻程序员。我们不知道他们是否需要深入理解一段代码是怎么工作的,但我相信他们应该学怎么写程序。然而,我不确定检查 LLM 输出是不是他们应该做的正确的事。学一门编程语言,实现一个小解释器、一个小数据库、一个哈希表等等——这可能有用得多。审查某个客户网站的 JavaScript?算了吧,别把时间浪费在那上面。 原文: #AIProgramming# #SoftwareEngineering# #antirez#
顯示更多
再次推荐 Google Engineering & DevRel Leader @addyosmani 重磅开源的 Agent Skills (69.7✨),把资深工程师的生产级工程纪律,固化为 AI Agent 可机械执行、强制验证、跨工具复用的工作流 Agent Skills: Production-grade engineering skills for AI coding agents. 它要解决什么问题? AI Coding Agent 的默认行为是"走最短路径"——跳过规格、跳过测试、跳过安全评审,给出能跑但不可靠的代码。Agent Skills 的立论是:质量不靠提醒出来的,要靠强制流程托底的。它把"什么时候写规格、测什么、怎么评审、何时发布"这类隐性工程判断,固化成 Agent 必须遵循的步骤。 顶层架构:六阶段生命周期 DEFINE → PLAN → BUILD → VERIFY → REVIEW → SHIP /spec /plan /build /test /review /ship 8 个 slash 命令作为入口,分别对应一个阶段,自动激活对应 Skills。Skills 也会按上下文自动触发(写 API → api-and-interface-design,写 UI → frontend-ui-engineering)。/build auto 在一次批准后自动跑完计划与实现,但每个任务仍独立测试、独立提交、遇险即停。 24 个 Skills 的分布 1. Meta - 1 个 using-agent-skills(路由,决定该用哪个技能) 2. Define - 3 个 interview-me、idea-refine、spec-driven-development 3. Plan - 1 个 planning-and-task-breakdown 4. Build - 7 个 incremental-implementation、test-driven-development、context-engineering、source-driven-development、doubt-driven-development、frontend-ui-engineering、api-and-interface-design 5. Verify - 2 个 browser-testing-with-devtools、debugging-and-error-recovery 6. Review - 4 个 code-review-and-quality、code-simplification、security-and-hardening、performance-optimization 7. Ship - 6 个 git-workflow-and-versioning、ci-cd-and-automation、deprecation-and-migration、documentation-and-adrs、observability-and-instrumentation、shipping-and-launch 几个值得点名的设计取向 · doubt-driven-development:对抗性"新上下文复盘",CLAIM → EXTRACT → DOUBT → RECONCILE → STOP,可选跨模型升级。这是该仓库比较有原创性的一项,针对高代价/不可逆决策。 · source-driven-development:框架决策必须挂在官方文档上,要引源、要标注未验证项。直接对治 LLM 编造 API。 · deprecation-and-migration 把"代码即负债"单列为技能,配套强制 vs 建议性弃用模式与僵尸代码清除——很少见但有工程味。 · Google 工程文化底蕴:Hyrum's Law(API)、Beyonce Rule 与测试金字塔(测试)、变更尺寸约 100 行 + 评审速度规范(评审)、Chesterton's Fence(简化)、主干开发(git)、Shift Left 与 feature flag(CI/CD)。来源明确标注自《Software Engineering at Google》与 Google 工程实践指南。
顯示更多