跳到正文
Hacker News· speckx·· 5 天前AI 评分17

为什么软件没有变得更好?

Why is software not getting better?

AI 导读

一位资深工程师反思软件质量下滑:在“空中更新”普及前,发布需烧录 CD、依赖圈复杂度与 MCDC 单元测试,如今“快速行动、打破常规”让发布带 bug 的软件成为常态。他指出 AI 编程由管理层自上而下推动,开发者明知 bug 与技术债增加仍照做,并质疑用大量 token 换取可接受代码是否值得。

正文 · AI 翻译

多年来人们一直在抱怨软件有 bug。说实话,我认为互联网以及快速更新软件的能力要负部分责任。

我刚开始从事软件工程工作时,创建发布版本是我工作的一部分。这包括为新版本制作安装程序,并将它们刻录到 CD 上,准备发送给客户。

当时没有下载机制来获取软件更新。软件必须第一次就做到没有 bug。公司还为其他公司生产软件,大多用于难以更新的嵌入式设备。

为了达到这种质量水平,我们被要求使用圈复杂度和其他静态分析工具,以及 MCDC 单元测试。除了航空和军事等受监管行业外,现在已经没人再费心做这些了。

如果你发布的软件带有严重 bug,那么最终会有一大堆不满意的客户,他们不得不等上几周才能拿到修复版本。

快速行动,打破常规 #

一旦“空中下载”更新成为现实,我们就开始看到“快速行动,打破常规”的运动扎根。发布有 bug 的软件,然后在接下来的几周或几个月里慢慢用更新打补丁,突然之间就变得可以接受了。

这就是科技行业名声不好的原因,公众把它和不好用的东西联系在一起。

大多数被生产出来的软件并不需要做到没有 bug。如果你公司的 SaaS 应用没有按预期运行,没有人会因此丧命。

这是否意味着我们不应该努力写出更好的软件?

过去 10 年左右,开发者已经习惯了写有 bug 的软件,因为公司更关心速度而不是质量。

开发者倡导 #

通常要靠开发者来抵制,并坚持一定的单元测试覆盖率和代码质量。我以前入职一些公司时,曾是第一个把单元测试引入一个已经成型的项目的人。

开发者的这种抵制显然已经消失了。

使用 AI 的指令来自上层,许多开发者心甘情愿地使用它,即使他们知道这会给代码引入更多 bug,技术债也在增加。

我最近看了 对 Robert C. Martin(又名“Uncle Bob”)的采访,内容是关于他使用智能体来构建软件。与大多数实际上只是在凭感觉写代码的人不同,他至少试图搭建一个系统,使用圈复杂度和变异测试等概念,把 AI 代码调教成可以接受的东西。

说实话,如果要从 AI 产出可接受的代码需要这么多工作和 token 消耗,那真的值得费这么大劲吗?

既然我们知道 AI 会出错,难道我们不应该做更多事情来确保代码正确且可维护吗?似乎每个人都放弃了良好的工程实践,乐于把所有思考都委托给那台垃圾机器。

权力的丧失 #

我并不是想把所有责任都推到开发者身上。过去,当市场对开发者有利时,我们可以要求高薪,并决定我们想如何构建软件。

随着 COVID-19 之后的大量裁员以及现在的 AI,我们不再拥有过去那样的议价能力。大多数开发者只要能保住头顶的屋顶,就乐意把代码粗制滥造地写出来。

这可能只是我处于“老人对着云大喊大叫”的情绪中,但我为我们这个行业在如此短的时间内变成这样感到难过。

看到当AI泡沫破裂或token成本变得贵10倍时会发生什么会很有趣。当我们再也不能用AI来修复它制造的意大利面条式代码时,会不会突然出现逆转?


❤️ 本周精选 #

🛠️ 工具 #

MinIO单节点本地S3的替代方案 - 在MinIO背后的公司放弃该项目后,我很高兴有相当多合适的替代方案。

Hister:为你访问的页面和保存的文件提供的私密搜索引擎 - 这看起来是个很酷的项目。我想知道它能否连接到LinkWarden,我目前在那里存储所有书签。

💻 编程 #

.NET 11中的性能改进 - 很高兴看到.NET在持续改进。

在LLM时代学习编程 - 如果你想学习如何编程,不要以为有什么捷径。你仍然需要写代码,而且很可能需要读一本书。

小型编程技巧 - 这个列表里有一些不错的提示。值得一读。

🤖 AI #

聊天机器人及其“保障措施”、替代导航应用 - 我喜欢这期AI部分的讽刺。

Dario,拜托 - AI公司寻求监管并非表面看起来那样。他们绝对不是关心人类。他们只是想要一个替罪羊来解释为什么他们没有取得任何有用的成果,并阻止开放权重模型参与竞争。

微软高管称AI抓取是“人类历史上最大的劳动力盗窃” - 正是如此。怎么有这么多人对此无所谓?个人因为轻得多的事情都进过监狱。

美国军方在使用AI生成幻觉情报报告后险些酿成大祸 - 直接导致人类终结的不会是AI,而是有人信任它的输出,或者我们因所有数据中心而加剧全球变暖。

我认为你几乎永远不应该用AI来写作 - 我同意,但请去掉“几乎”。永远不要用AI写作。我宁愿读你语法不正确、有拼写错误的句子,也不愿花时间读不是你写的东西。

AI生成的海报不必很糟糕 - 我现在到处都能看到这些AI生成的海报。说实话,即使是改进过的那些也仍然有同样千篇一律的布局。AI助长懒惰,这就是为什么你到处都看到同样的东西。

LLMentalist效应(2023) - LLM是统计幻觉,那里没有智能。

🏢 科技行业 #

AWS称无法从遭伊朗袭击的中东设施恢复部分数据 - 只是提醒你在多个地方备份数据。

PS5 Linux负责人辞职:“一群使用LLM的菜鸟”,而“他们并不理解” - “Slop kiddies”向索尼或赏金计划报告了最后一个PS5虚拟机管理程序漏洞,所以现在我们不会得到PS5 Linux了。慢慢鼓掌。

🧠 杂项 #

Minimal Phone 2 - 这是个很酷的概念。看起来有点像黑莓,但运行Android。每个人对极简手机应包含什么都有不同的想法,所以我认为运行Android是正确的做法。


👨‍💻 我的最新内容 #

我发布了一个新视频!几周前我写过“GitHub 已死,下一步是什么?”,这个视频深入讲解了如何安装 ForgeJo,以便你可以摆脱 GitHub。

🎬 自托管你自己的 GitHub 替代品 - 这已在 PeerTube 上线,并将于周二在 YouTube 正式上线。

这个月是墨水十月,所以我决定为这个月的视频绘制缩略图。你可以在我的Patreon上找到我绘制过程的延时视频,以及本周视频的花絮集锦。


💬 本周名言 #

“做一件事,并把它做好。”通过阅读、学习和实践,成为你所在领域的专家。

出自 James Victore 的《Feck Perfuction》一书。

来源:Hacker News · alexhyett.com