NEE's Blog

好的软件知道何时停止

March 05, 2026

本文翻译自 Good Software Knows When to Stop,原载于 Hacker News。


一个令人啼笑皆非的假想场景

早上 9 点,你准备升级你最爱的 Linux 发行版和软件包到最新版本。升级过程很顺利,重启后系统焕然一新。你开始像往常一样工作,当你尝试列出目录内容时,一件奇怪的事情发生了——那个你习以为常、平平无奇的 ls 命令给了你一个”惊喜”:

$ ls
┌──────────────────────────────────────────────────────────────────────┐
│                                                                      │
│ NOTICE: The legacy utility `ls` has evolved.                         │
│                                                                      │
│                      _ _                                             │
│                     / \   __| | ___                                  │
│                    / _ \ / _` |/ _ \                                 │
│                   / ___ \ (_| |  __/                                 │
│                  /_/   \_\__,_|\___|                                 │
│                                                                      │
│                 AI-Powered Directory Intelligence™                   │
│                                                                      │
│ Hello.                                                               │
│                                                                      │
│ The classic `ls` command has reached the end of its lifecycle.       │
│ For decades it faithfully listed files.                              │
│ But listing is no longer enough.                                     │
│                                                                      │
│ The filesystem deserves to be *understood*.                          │
│                                                                      │
│ Introducing:                                                         │
│                                                                      │
│ █████╗ ██╗   ███████╗                                                │
│ ██╔══██╗██║   ██╔════╝                                               │
│ ███████║██║   ███████╗                                               │
│ ██╔══██║██║   ╚════██║                                               │
│ ██║  ██║███████╗███████║                                             │
│ ╚═╝  ╚═╝╚══════╝╚══════╝                                             │
│                                                                      │
│                Adaptive Listing System                               │
│                                                                      │
│ `als` doesn't just show files.                                       │
│ It predicts which ones you meant.                                    │
│ It ranks them.                                                       │
│ It understands you.                                                  │
│                                                                      │
│ Your current `ls` binary will remain functional for:                 │
│                                                                      │
│                         30 days                                      │
│                                                                      │
│ After this period:                                                   │
│   • `ls` will be deprecated                                          │
│   • updates will cease                                               │
│   • directory awareness will be disabled                             │
│                                                                      │
│ You can begin your transition today:                                 │
│                                                                      │
│ $ als --trial                                                        │
│                                                                      │
│ (30-day free evaluation period)                                      │
│                                                                      │
│ Thank you for participating in the future of file awareness.         │
│                                                                      │
│                    — The `ls` Team (now part of ALS)                 │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

幸好,这只是个假想场景。

核心观点:软件需要边界意识

好的软件知道自己服务于什么目的,它不会试图包办一切,它知道何时停止,知道该改进什么。

对于人类这种”极简主义”不太友好的心理来说,最反直觉的一件事就是:认清你的软件在整个生态中的角色和位置,然后判断你接下来想做的事情是否符合所谓的”产品愿景”,还是说这只是另一个项目、另一个工具而已。

来自 37Signals 的智慧

对于我们这些”老程序员”来说,这类教训来自 37Signals(Basecamp 的创始团队)。他们写过两本很棒的书:《Rework》和《Getting Real》。我强烈推荐这两本书,尤其是《Getting Real》对产品设计非常有启发。这些经验可以总结为:

1. 约束是优势

小团队、紧预算、有限的范围——这些限制会迫使你做出更好的决策。不要羡慕大公司”无限的资源”,那是陷阱。

2. 忽略功能请求

不要用户说什么就做什么。相反,去理解他们真正想解决的问题是什么。用户说要”更快的马”,你要给他们汽车。

3. 尽早发布,频繁发布

一个真实存在、只完成了一半的产品,胜过一个完美但永远停留在 PPT 里的产品。Shipping 本身就是一种能力。

4. 核心优先设计

从最核心的界面和交互开始设计,而不是边缘的东西(导航、页脚等)。先做最重要的 20%。

5. 默认说不

每个功能都有隐藏成本:复杂度、维护负担、边缘情况处理。每一个 “yes” 都要付出代价。

6. 解决自己的问题

做你自己需要的东西。作为自己的用户,你会做出更好的决策。

当下的 AI 狂热

在 Minio 变成 AIStor、甚至 Oracle Database 都改名叫 Oracle AI Database 的今天,我觉得有必要提醒一下:不是所有东西都必须剧烈改变,成为某个领域的既定标准,比把自己包装成没人预期的新热点更有价值。

这种”万物皆可 AI 化”的风潮让我想起当年的”互联网+”——一切都要加上互联网,好像加上这个词就能点石成金。现在的 AI 也是一样,ls 不需要理解我,它只需要列出文件。数据库不需要 AI,它需要的是稳定、快速、可靠。

写在最后

作为开发者,我们很容易陷入”功能叠加”的陷阱。每次产品会议都在讨论”还可以加什么”,但很少讨论”可以删掉什么”或”应该拒绝什么”。

好的软件像好的设计一样,不在于还能加什么,而在于不能再减少什么。知道何时停止,可能比知道如何开始更重要。


关键要点:

  • 软件应该有清晰的边界,专注于做好一件事
  • 约束条件往往能激发更好的设计和决策
  • 不是所有软件都需要 AI——有时简单就是最好的
  • 学会对功能请求说”不”,专注于解决核心问题
  • 成为某个领域的标准工具,比追逐热点更有长期价值
comments powered by Disqus