好工具无形
摘要
一篇哲学博文,主张好工具应隐形且无摩擦,批评了将工具的缺陷视作有趣谜题而加以称颂的倾向。作者以 vim 和 Sublime 等文本编辑器为例,说明工具选择如何成为部落身份认同。
暂无内容
查看缓存全文
缓存时间: 2026/07/10 12:12
# 好工具是隐形的
来源:https://www.gingerbill.org/article/2026/07/10/good-tools-are-invisible/
2026\-07\-10
TL;DR:好的工具应当是隐形的——努力制作这样的工具是工具制造者的目标。
我常见到一种习惯,并且不得不反驳:人们把工具的缺点重新包装成“解谜游戏”,声称“解决它很有趣”。
我不希望我的工具“有趣”。我希望我的工具是*隐形的*。
## 文本编辑器之战
以 vim 为例这只是一个例子,同样适用于其他编辑器。我经常看到一些人称赞它,并非因为它的真正优点,而是把它不擅长的地方变成“解谜游戏”,从中寻找“乐趣”。
有人告诉我,构建一个宏来处理某个一次性文本重构问题有多“有趣”。但我看到他们在做什么、花了多长时间后,我的真实反应是:我可以用 Sublime 的多光标在一分钟内搞定,或者直接写个快速脚本。
澄清一下,我并不是说文本编辑器对工作流程不重要。我质疑的是人们近乎宗教般的奉献——仅仅因为工具给他们带来“黑客 vibe”——而这基本上是新手选择 vim 或 emacs 的全部吸引力。
这就是我所说的“隐形工具”。当你熟练使用自己选择的编辑器——无论是什么——它会隐入背景。但当它无法轻松处理某件事时,它就不再隐形。让我困惑的是,这么多人会把这摩擦——即围绕工具局限性的努力——当作“乐趣”,并把它宣传成工具优秀的证据。
我知道自己选择的编辑器 Sublime 有很多问题。我不会把这些缺陷美化成有趣的小谜题。我只是恼火它缺少我真正需要的工具,迫使我写插件或另用程序来按我的方式转换文本。
我已经使用 Sublime 15 年了。它是我选择的编辑器,有几个原因:它的快捷键是图形操作系统环境的超集(最大限度减少在不同应用间切换时的思维上下文切换),多光标在 99.999% 的情况下确实比宏更好我认为在过去十年里,我只有两次在 Sublime 中“需要”宏,而且两次设置宏所花的时间都比直接写一个脚本来做同样的事情要长。(因为它们提供直接视觉反馈),而且它留给我的文本编辑工作流中需要解决的“谜题”最少。我发现像 vim 这样的工具在基本编辑方面更好,但在批量操作方面更差——我不是指 grep 类的操作——这就是我长期坚持使用 Sublime 的原因。我从未发现 vim 的移动键比我的 Sublime 工作流高效多少,这也并非仅仅因为缺乏尝试或熟悉说实话,多年下来,我大部分“vim 移动键”知识都忘了,因为我不常用,也不需要。。而且我几乎从不在终端中写代码,所以我对终端导向编辑器的需求几乎不存在。
如果有人觉得 vim、emacs 或其他工具确实好用且高效,我不会批评他们的选择。人们最习惯自己熟悉的东西。但对我正在讨论的这些朋友来说,这种熟悉感却蒙蔽了他们,让他们看不到工具的缺陷,甚至为这些缺陷喝彩,把它们当作*游戏*炫耀。
## 工具即身份
这些争论变得宗教化的部分原因是:工具选择变成了你插下的一面旗帜——它说明你是谁。“黑客 vibe”不仅仅是*纯粹的美学*;它是部落认同信号,这才是真正的陷阱。一旦你的身份投入某个工具,承认它的缺陷就开始像在承认关于你自己的某些东西。所以人们不仅容忍缺陷,还为其辩护,最终甚至炫耀。你无法与一个把工具当作自己个性一部分的人坦诚谈论这个工具。
## 感觉高效 与 实际高效
前面提到的文本编辑器宏轶事实际上涉及的是*感觉高效* 与 *实际高效* 之间的差距。解决一个繁琐问题会让人产生聪明劲的感觉,人们容易把这种感觉误当作实际产出。一个工具让困难的事情显得英勇、让聪明之举像成就,可能会被注册为“强大”,而实际上它可能很慢。诚实的测试不是你觉得有多投入或多聪明,而是实际耗用的时间和过程中犯了多少错误。很多人们*传教*的工具通不过这个测试。
如果生产力真是目标,那就该真正质疑自己的想法,试着看看什么让你更高效。当你这么做时,你会感到惊讶。
## 终端界面 vs 图形界面
另一个类似例子是人们推广终端应用而非图形界面。如果你整天被困在终端里,我完全理解其中的*明显*优势,但大多数程序员并非整天困在终端里。
那些普遍推崇 TUI 而非 GUI 的人,对 GUI 应用的一个常见批评是:“我不能只用键盘导航它们。”
哦?这并不意味着 GUI 应用*本质*上不好。只是人们构建的 GUI 还不够好,无法实现键盘导航。让 GUI 能够用键盘导航并非本质不可能,只是大多数工具制造者从未费心去实现,通常是因为他们没有意识到键盘导航在很多时候比伸手用鼠标高效得多。如果论证是某个特定的 TUI 应用比基于 GUI 的替代品更好,那还算公允,但说 TUI 天生优于 GUI 就很不客观。
而这是常见的错误:人们看到一类工具的当前状态,就假设其局限性是固有/本质的,其实只是没人努力去改进这些工具。
## Linux 桌面(缺乏)的流行
Linux我知道肯定有人会说“Linux 是内核,操作系统是 [某个发行版名称]”。抱歉,但大多数人不这么谈论 Linux,我也不太在乎这种无益的咬文嚼字。尤其当你要批评它时,显然必须理解说的是什么。桌面还没有迎来它的年份(2026 年仍然没有),而达到这一点之所以花了这么久,有一个根本原因:很多使用 Linux 的人喜欢摆弄配置文件来重塑系统——这是他们眼中的“乐趣”,他们的解谜游戏。
我自己也经历过那个阶段。但过了一段时间,我只想让事情正常运作。花几小时(甚至几天)配置一切,已经不是我愿意做的事了。我希望默认设置足够好,开箱即用;而当需要微调小细节时,只需几秒钟。
最大可配置性不应该是工具的目标,而应该是在真正必要时提供的一个选项。设计一个符合人体工学的工具,本质在于拥有良好的默认值,同时在可能/需要的地方保留逃生舱口。
意外复杂性偶然特性:一个对象可能偶然拥有的特性,改变它不会改变对象的*本质*身份。对很多程序员/技术爱好者来说有着奇怪的吸引力,给他们一种古怪的安全感。
拥有*良好默认值*本质上是工具制造者的责任。我们作为工具制造者,倾向于把负担推给用户:让他们去配置、调整、学习。这很多负担实际上是设计者拒绝做决定。“高度可配置”常常只是给出无意见的产品,然后把后续工作称为你的问题。良好的默认值是对用户时间的尊重:工具制造者做一次思考,这样成千上万的用户就不必各自思考。而设计工具的一部分在于允许一些逃生舱口;这些逃生舱口是为真正需要特殊情况的少数人准备的;它们不能替代把通用情况做好。
## 陡峭学习曲线作为“特性”?
我见过的另一种辩护是:难度本身就是重点,它能筛选出不坚定的人;一旦你跨过那道坎,你将终生受益。但学习曲线是成本,不是美德。它可能完全是一个值得付出的成本,但回报必须是真正的生产力,而不是“付了成本”后的满足感。很多时候,这不过是沉没成本被美化为美德:“我花了几个月学习这个,所以它一定值得,你也应该像我一样做。”这又成了解谜游戏,只不过现在的谜题是工具本身。
## 结论
这一切并非针对任何特定工具的争论。它是对一种思维方式的争论。用 vim,用 emacs,用 Sublime,但要用那些能隐入背景、让你专注于工作的工具。这就是整个测试,而且是个人的测试。我所反驳的不是选择本身,而是围绕选择而滋生的叙事:把局限性重新定义为特性,把绕开缺陷的努力包装成奖励,把工具悄悄从“你用的东西”升级为“你是谁的一部分”。
工具服务于你的最明显迹象是:你不再注意到它——它变得隐形。你不会庆祝它的缺陷,因为你没有把它们变成爱好,而是稍感恼火,然后绕开。你不会捍卫它,因为你的身份没有寄托在它身上。你也不会把聪明劲的感觉误当成生产力的事实,因为你花时间检验过它们之间的区别。
所以尽情享受你的工具吧,享受编程本身的乐趣。但要坦诚:哪些部分是真正优秀的,哪些是你说服自己去爱的。最好的工具不是拥有最好故事的那一个,而是你忘记自己正在用的那一个。
好的工具应当是隐形的——努力制作这样的工具是工具制造者的目标。
相似文章
“每个人都在做同样的事情,由相同的人资助,用相同的措辞。”
一篇关于技术同质化与‘无用’研究价值的反思性文章,以作者亲身体验 Folk Computer 为中心——这是一个开源实体计算系统,将编程重新构想为一种协作式空间活动。
垃圾时代的品质
一篇反思性的博文,引用罗伯特·波西格的《禅与摩托车维修艺术》,探讨随着生成式AI工具泛滥,科技行业中的质量危机与虚无主义,呼吁重新关注工艺与价值观。
优秀的架构不需要胡萝卜,也不需要大棒
这篇博客文章主张,良好的软件架构应当是不言自明且毫无阻力的,倡导采用 Netflix/Spotify 式的“铺平道路”模式,而非依赖强制性的治理委员会或嵌入式架构师。
有人也讨厌这种无IDE的趋势吗?
一位开发者批评了AI编码工具移除代码编辑器、转而采用独立聊天界面的趋势,认为这浪费token且忽视了技术用户的需求,他们更希望在IDE内管理代码输出。
反对功利主义
一篇认为基础性、‘无用’的研究对未来有用的创新至关重要的文章,以Folk Computer项目为例,这是一个重新构想人机交互的物理计算系统。