好的工具是无形的。
Good Tools Are Invisible

原始链接: https://www.gingerbill.org/article/2026/07/10/good-tools-are-invisible/

作者认为,真正优秀的工具应该是“无形”的——它会淡化在背景中,让你专注于手头的工作。程序员常犯的一个错误是,将解决工具自身局限性所带来的“乐趣”误认为是真正的生产力。 许多用户对 Vim 或 Linux 等复杂工具产生了近乎宗教般的狂热,将它们陡峭的学习曲线和频繁的配置需求美化为某种英雄式的“黑客”成就。作者指出,这往往源于一种基于身份认同的部落主义:承认工具的缺陷会被视为对自我的攻击。由于将克服技术障碍带来的“聪明”感与实际产出混为一谈,用户往往会选择那些阻碍而非提升效率的工具。 归根结底,作者认为生产力应以“挂钟时间”来衡量,而不是看你与软件“博弈”时有多享受。好的工具应当提供出色的默认设置,而不是将设计决策转嫁给用户。无论你更偏好图形界面还是终端,衡量工具优劣的标准不在于其复杂程度或所营造的“格调”,而在于它能否隐于无形,让你在完成任务时不再有不必要的阻碍。

抱歉。
相关文章

原文

TL;DR: A good tool is and ought to be invisible—striving to make such tools is the goal of a toolmaker.

One habit I see a lot, and have to push back on, is taking a tool’s shortcomings and reselling them as a “puzzle game” which is “fun” to solve.

I don’t want my tools to be “fun”. I want my tools to be invisible.

Text Editor Wars

Let’s take vim as an example 

I’ve had people tell me how “fun” it was to build a macro to handle some one-off text-refactoring problem. But when I looked at what they were doing and how long it took, my honest reaction was: I could have done that in Sublime in a minute with multiple cursors, or just written a quick script.

To be clear, I’m not saying text editors don’t matter to your workflow. I’m questioning the near-religious devotion people have to a tool because it gives them a “hacker vibe”—which is basically the whole appeal for newcomers to vim or emacs.

That’s what I mean by “invisible tools”. When you’re proficient with your editor of choice—whatever it is—it disappears into the background. But the moment it cannot handle something easily, it stops being invisible. What baffles me is that so many people treat that friction—the effort of working around a tool’s limitations—as the “fun” part, and then advertise it as evidence that the tool is great.

I know plenty of things wrong with my own editor of choice: Sublime. I don’t dress those flaws up as fun little puzzles to solve. I just get annoyed that it lacks the tools I actually need, forcing me to write a plugin or reach for a separate program to write to transform text the way I want.

I’ve been using Sublime for 15 years now. It’s my editor of choice for a few reasons: its shortcuts are a superset of the graphical OS environment (which minimizes the mental context-switch when moving between applications), multiple cursors really are better than macros 99.999% of the time 

If people find vim, emacs, or whatever genuinely good and productive, I’m not going to criticize them for using it. People are most comfortable with what they know. But for the people I am discussing, that same familiarity blinds them to their tools’ flaws, and leads them to celebrate those flaws, flaunting them as games.

Tools as an Identity

Part of why these debates turn religious is that a tool choice becomes a flag you plant—it says something about who you are. The “hacker vibe” isn’t a mere aesthetic; it’s tribal signaling, and that’s the real trap. Once your identity is invested in a tool, admitting its flaws starts to feel like admitting something about yourself. So people don’t just tolerate the flaws—they defend them, and eventually flaunt them. You cannot have an honest conversation about a tool with someone who’s decided the tool is part of their personality.

Feeling Productive versus being Productive

The text-editor-macro anecdote I mentioned is really about a gap between feeling productive versus being productive. There’s a sensation of cleverness that comes from solving a fiddly problem, and it’s easy to mistake that feeling for actual output. A tool that makes hard things feel heroic and clever feel like an achievement can register as “powerful” while quietly being slow. The honest test isn’t how engaged or clever you felt, it’s wall-clock time and how many mistakes you made getting there. A lot of the tools people evangelize would lose that test.

If productivity is actually the goal, actually question your own views on this, and try to see what makes you more productive. You will be surprised when you do.

Terminal UIs vs GUIs

Another example in this same vein is when people advocate for terminal apps over GUIs. If you’re stuck in a terminal all day, then I completely get the obvious advantage, but most programmers aren’t stuck in a terminal all day.

From those people who generally advocate for a TUI over a GUI, one of the criticisms of GUI apps tends to be: “I cannot navigate them with the keyboard alone”.

Okay? That doesn’t make GUI apps inherently bad. It just means the GUIs people build aren’t good enough to be keyboard-navigable. There’s nothing inherently impossible about making a GUI navigable with a keyboard, rather it’s just that most toolmakers never bother to implement, and usually because they don’t realize how much more productive keyboard navigation is than reaching for the mouse a lot of the time. If the argument was that a specific TUI app is better than the other alternatives which are GUI based, then that is a fair argument, but arguing that TUIs are inherently better than GUIs is very misinformed.

And this is the common mistake: people look at the current state of a category of tools and assume its current limitations are inherent/essential, when really no one has put in the work to make those tools better.

Linux’s (Lack of) Popularity as a Desktop

The year of the Linux 

I went through that phase myself. But after a while, I just wanted things to work. Spending hours (if not days) configuring everything isn’t something I want to do any more. I want the defaults to be good and just work, and when I do need to tweak something minor, it should take seconds.

Maximal configurability shouldn’t be a tool’s goal, it should be an option for when it’s actually necessary. Designing an ergonomic tool is fundamentally about having good defaults, while still allowing escape hatches where they’re possible/needed.

The appeal of accidental 

Having good defaults is fundamentally a toolmaker’s responsibility. We as toolmakers have a tendency to put the burden on the user: to configure it, to tweak it, to learn it. A lot of that burden is really a designer declining to make a decision. “Highly configurable” is often just an excuse for shipping no opinion at all and calling the resulting work your problem. Good defaults are a form of respect for the user’s time: the toolmaker does the thinking once so a thousand users don’t each have to. And part of designing a tool is to allow for some escape hatches tool; those escape hatches are there for the genuine minority who need something unusual; they should not be a substitute for getting the common case right.

Steep Learning Curve as a “Feature”?

Another defence I’ve seen is that the difficulty is the whole point, it filters out the uncommitted, and once you’re over the hump you’re rewarded for life. But a learning curve is a cost, not a virtue. It could hypothetically be absolutely a cost worth paying, but the payoff has to be genuine productivity, not the satisfaction of having paid it. Too often the reasoning is just sunk-cost dressed up as merit: “I spent months learning this, so it must be worth it, and you should copy in my footsteps too”. That’s the puzzle game again, only now the puzzle is the tool itself.

Conclusion

None of this is an argument against any particular tool. It’s an argument against a way of thinking. Use vim, use emacs, use Sublime, but use whatever disappears into the background and lets you get on with the work. That is the whole test, and it’s a personal one. What I’m pushing back on isn’t the choice, it’s the storytelling that grows up around the choice: the reframing of limitations as features, the effort of working around a flaw sold as the reward, the tool quietly promoted from the thing-you-use to the part-of-who-you-are.

The clearest sign a tool is serving you is that you stop noticing it—it becomes invisible. You don’t celebrate its flaws because you’re not turning them into a hobby, rather you just get mildly annoyed and route around them. You don’t defend it because nothing about your identity is riding on it. And you don’t mistake the feeling of cleverness for the fact of productivity, because you’ve bothered to check the difference.

So by all means, enjoy your tools, for the joy of programming itself. Just be honest about which parts are genuinely good and which parts you’ve talked yourself into loving. The best tool isn’t the one with the best story. It’s the one you forget you’re using.

A good tool is and ought to be invisible—striving to make such tools is the goal of a toolmaker.

联系我们 contact @ memedata.com