Good Tools Are Invisible

(gingerbill.org)

69 points | by theanonymousone 3 hours ago

28 comments

  • jrimbault 32 minutes ago
    Having designed a good number of internal tools for teams of developers I couldn't agree more.

    Earlier I had the tendency to "leave the guts" open, thinking my users were developers and would want that. All it did was put obstacles in my teammates actually doing their work. My teammates must use the tools I made for them to achieve work the company needs them to do, they don't want, nor should they want to, fiddle with a little tool they won't find anywhere else.

    I still leave a lot of escape hatches, but I try to design the internal tools in such way as to make the users fall into a pit of success.

    • lanthissa 3 minutes ago
      it really depends on the framing, some work, especially fun work that develops skills is more valuable than people realize.

      From an org perspective the goal is to create the highest curve of performance over the lifetime engagement of the employee or from the employee perspective their career.

      And a lot of that depends on teh relationship of the people involved. From my perspective its a net negative when if my movers worked out the day before, their muscles will be sore and they'll do a worse or slower job. From the moving companies perspective its good, they'll be stronger for more jobs. Unless they quit or are fired that day, in which case we're back to bad.

      The real evaluation isn't the macro vs the sublime edit. its does the thought process of making them macro improve them in other things, and what were they doing before that. In my experience no one is going use the time they spent writing a macro or a learning vim to do real meaningful work, they're doing that because they're bored or burned out and want to think about something else they find fun at the time.

      your problem isn't your employees choose to write random scripts, its that they dont have a sense of urgency or care about their current task.

    • lcnPylGDnU4H9OF 26 minutes ago
      > make the users fall into a pit of success

      I don't have anything else to add but I thought this was a wonderfully evocative phrase.

  • bluGill 28 minutes ago
    > usually because they don’t realize how much more productive keyboard navigation is than reaching for the mouse a lot of the time.

    In a large number of cases people who say they are more productive have never measured it. They have no idea if it is true. There are been many competitions between keyboard and mouse navigation over the years. Depending on the details of how the test is written one will win or the other, often by a significant amount, in many cases the loser is the one that user said was more productive before seeing the real results.

    • skilning 15 minutes ago
      I think that's a pretty reductive stance to take. Keyboard nagivation is more productive _if_ the primary use of the tool is text-based. In a word processor, an IDE, a file manager, or anything else where the primary mode of interaction is reading, typing, and processing the things you've read and typed, keyboard navigation can be demonstrated to be faster and more natural _only if_ the user has taken the time to learn the shortcuts.

      For tools that are mainly for non-text visual information, then the keyboard versus mouse debate is much more heavily weighted in favor of the mouse. Even then, there are times when effective keyboard shortcuts are far more useful than menus and icons. Take any CAD or 3d modeling software as an example. 90% of what a user does will be interacting with visually-presented spatial data, but even then knowing the shortcuts for changing tools or modifying a tool's settings will make you much faster and remove the need to constantly navigate nested menus of options.

    • hrombach 18 minutes ago
      I think if you need to measure this kind of thing, you're missing the point in the first place. I don't want to be chasing some absolute productivity metric, I want a setup that doesn't break my flow. For many people, reaching for the mouse breaks their flow and feels wrong, which is oftentimes worse than being a second slower, because it takes you out of the mental frame you were in.

      For me, using my mouse while I'm working feels natural, so trying to change my workflow to learn how to navigate everything by keyboard would be a huge amount of extra effort just to maybe possibly save a little bit of time in some situations.

      • miyoji 0 minutes ago
        I think this is unhealthy self-handicapping. Your "flow" is just habits, things you've taught yourself to do. You weren't born with the ability to use either a keyboard or a mouse, there is no "natural" or "intuitive" way to operate a computer. It's all 100% learned behaviors that can be altered.
  • jt2190 2 minutes ago
    > 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 think it’s fine if that’s your hobby, but I agree that in a professional context one should be much more critical of their tools. Even asking “why do I need a tool for this at all?” will reveal shortcomings in processes, data structures or other tools that will reap much greater rewards if effort is put into fixing those instead of optimizing use of a quirky tool.

  • ventana 35 minutes ago
    As a long time terminal user, it does not surprise me much when people just don't get it. The discussion often goes like this:

    — In a terminal, I can do so-and-so with a simple command

    — Well, in my FrobnicatorStudio, there's a shortcut Ctrl+Alt+So for that

    and this can go forever, going into pretty much useless comparisons like "in vim, I can delete 24 lines by pressing four keys" (no Sublime user ever needs that) vs "in Sublime I have multiple cursors" (no vim user ever needs that either).

    The proper argument here, probably, is this one: the terminal, with its way of combining small CLI tools into pipelines, covers infinitely many use cases, but indeed has a learning curve, taking probably a year or so to become really comfortable. When you reach that point, you will be, on average, much more productive than an average GUI user, but it requires some dedication, pain, and suffering to reach that point, and people often do it involuntarily.

    In my case, my first job required managing customers' servers over ssh, those servers had bare minimum installed (often vi, not vim), and I had no choice other than figuring out how to do things effectively in this setup. If not for that experience, I'm not sure I would've gone through the pain of starting doing things in the terminal.

    • necrotic_comp 25 minutes ago
      Exactly this. The non-composability and non-standardization of GUI tooling is my main issue with them ; having the same toolkit available to solve every problem takes some doing but is ultimately more efficient.

      That being said, it's a hard sell. It's not easy to grok the simplicity of the commandline tools until you've used them to solve what would otherwise be an intractable problem.

    • persedes 27 minutes ago
      Recently revamped my terminal setup after all IDEs have just gotten painfully slow to work with (the debugger + git integration in intellij was my last moat, but spend some time to learn nvim-dap + lazygit and it's excellent). AI has been immensely helpful here too to figure out the long tail of weird config gotchas.

      Also thanks confirming the multiple cursor YAGNI for vim, could never wrap my head around needing it in the first place.

  • itchyouch 9 minutes ago
    I think of "invisibility" as a way of removing unnecessary friction and the author doesn't quite drive home that point effectively.

    Good invisibility is like well designed roads. Smooth, clear markings, adequately wide or narrow for the desired speed, easy and obvious signs. Unbothersome and pleasant. Drivers simply drive, rather than get bothered by, "gotta avoid the pothole. Here's comes the bumpy part. That blindspot, I gotta slow down for way too much. Unseen pedestrians pop out here."

    This is where invisibility in interstate highway regulations are obvious.

    When I see TUI vs GUI comparisons, it distills to friction for a given context/workflow.

    I worked in a restaurant with a micros system. It was a very easy to use GUI that was touch screen button driven. A 1 person order could easily be entered in 6-7 button pushes in 2-3 seconds to a seasoned operator: drink > coke > dish > steak > medium > a1 > submit

    The beauty with micros was that it reduced the typical navigate > select > add > back-to-navigate workflow into 1-2 button presses with a receipt-like tally providing immediate state feedback.

    In this scenario, telling a user to get into a terminal console and type "cd Foo; ./add ketchup" would violate the invisibility principle. It has nothing to do with TUI or GUI.

    To me, good tools get out of the way, in the given context. Micros did that.

    CLI users are in a CLI flow, thus introducing a mouse to a keyboard workflow violates the invisibility workflow. But for a GUI user to hit up the terminal violates their flow.

    Ultimately, all workflows are in search of a faster/less-toilsome feedback loop to the desired goal and tools are in service to the loop. Well designed tools with rabid followings understand through usage where to add friction, and where to cut toil and I'd argue this is where CLIs shine with decades of refinement of the same tool chain.

    GUIs are a, it depends on how composable or self contained the given problem for a GUI interface is.

    But yes, tools should be invisible. How they become invisible depends.

  • sph 27 minutes ago
    I am afraid the author confuses familiarity with proof that his tools are better. The reality is that every tool has a trade off, and if a user prefers tool X compared to tool Y, it’s not because they are dumb, but likely they make better use of the affordances of that tool that only a power user would get.

    Give a developer 10 years each with vim, emacs and Sublime Text, they wouldn’t be so sure which is better. [1] They might have a personal favourite, sure, but would also be able to tell why other people prefer other tools.

    I am afraid this is one of those arguments borne of ignorance whereby one is has never given a proper chance to software they are unfamiliar with.

    1: to me the mark of a greybeard that has been around a while is a vague dislike of every software and any promise of improving such software. In the long run, every piece of software tends towards mediocrity.

    • zaphar 19 minutes ago
      The article was not against a tool but a way of thinking. He didn't say anywhere that Sublime was better than Vim. He did say that he disagrees with the idea that a tools friction is a feature.

      I can take his entire thesis and use it to show that vim is the perfect editor for me precisely because vim is invisible to me when I use it. In part this is because I turned vim into the tool I wanted. He turned sublime into the tool he wanted. His basic point however still stands. If you are making something for someone else to use then making that tool invisible to them is a powerful property.

    • cj 20 minutes ago
      > In the long run, every piece of software tends towards mediocrity.

      Alternative view: Maybe that's okay, and greybeards know that.

      Mediocre: "something of only moderate or ordinary quality"

      Maybe we don't need the latest and greatest extraordinary technology when coding our next CRUD app.

  • bitwizeshift 48 minutes ago
    Well this is a take.

    It’s weird how much the author fixates on Vim being “visible” and implies multiple cursors and features in Sublime aren’t. Just because your brain is trained to not think about it anymore doesn’t make it any less visible.

    Multiple cursors aren’t a native feature in many tools, it is still something to learn how to use, let alone effectively — just as Vim key bindings are. Plus, vim is more than just a TUI choice for terminal-only users, it’s key bindings for people that have learned that a keyboard is a natural extension of themselves and would rather not jump back and forth to mice repeatedly — just as “multiple cursors” can be to a sublime user of 15 years.

    • wtetzner 38 minutes ago
      What I find especially weird is that I'm not sure I've ever heard anyone describe vim as a puzzle that's fun to solve. The most common sentiment is that it has a learning curve, but ends up being worth it.
      • latexr 24 minutes ago
        > I'm not sure I've ever heard anyone describe vim as a puzzle that's fun to solve.

        Search for “vim puzzle” and you’ll find entire websites dedicated to it. Here’s a random one: https://vimventure.dev/

        • Jtarii 6 minutes ago
          Specific enthusiasts enjoying something is different from telling beginners that "vim is a fun puzzle to solve".
    • latexr 22 minutes ago
      Agreed. I used to enjoy vim macros, but ever since switching to Helix I reach for its multiple cursors all the time and barely use its macros. But that doesn’t mean multiple cursors don’t have a learning curve, I still need to think of he method to place the cursors in the right places.
    • ahahs 12 minutes ago
      I think I noticed halfway through reading that most of this is AI nonsense.
  • jeffrwells 8 minutes ago
    In the age of agents, I’ve found the headline claim is even more true

    I acquire and operate ecommerce companies, and build a lot of workflows with openclaw-like agents (my own stack).

    When it’s working really well, there’s literally no interface needed besides iMessage and email. I’ve built a SaaS app interface style largely to show it off for demos because invisible tools don’t make for great demos

  • Jtarii 2 minutes ago
    People use vim because they want to use vim, not because people tell them to use it.
  • tpoacher 31 minutes ago
    Reminds me of this quote:

    "We notice the person who is for ever bowing and fussily servile, and perhaps say, How humble he is! But the truly humble person escapes notice: the world does not know him."

    ~ Tito Colliander

  • GodelNumbering 18 minutes ago
    Interesting how all of grep, sed, ls, cp, mv, rm, cat, pwd, chmod etc are well over 50 years old and get used more than ever today. Claude code owes at least some of its success to the well established and solid unix toolchain
  • chamomeal 11 minutes ago
    > 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

    I totally agree with the larger point, but there are things you can do with vim macros that are just an absolute PITA to do with the built-in tools in vscode. Or maybe there is a specific tool that can compete (or beat) a specific use case of a vim macro, but macros are a single tool that covers a zillion use cases. So for this specific example I think there’s a tangible difference in capabilities.

    Also 99.9% of the time-saving macros that people write on a day to day basis are not being shared with a single other person. It’s just a tool that becomes invisible to people who are comfortable with it. I’d argue that modal editors are particularly good at getting out of your way! Particularly ones with little or no config, like helix (or even vim mode in an IDE)

  • tecoholic 12 minutes ago
    Keybooard and Mouse. Everytime. I have the same question.

    How much do you type in a day that moving the hand to the mouse is a productivity loss? I spend a lot of time staring (thinking, planning) than typing. So, moving my hand to the mouse and back barely has any impact.

    • ClawsOnPaws 7 minutes ago
      It has a pretty profound impact on me, since the only way I can use a computer is using a screen reader, which works primarily using a keyboard. It can read things under the mouse, but it is not at all a comfortable way of working.
  • robwwilliams 14 minutes ago
    Funny: This title is a classic statement of Martin Heidegger’s. Go programmers!
  • zetanor 27 minutes ago
    I rarely use vi{,m} these days but I sometimes still instinctively type motions or :commands into other terminal editors (which naturally blurts them out into the text buffer). When using something like Sublime or VSCode, I'm always hunting through menus, documentation and search engines to do something simple like ":%!sort -u". Kate is a bit unwieldy—far from invisible—but I've found it to be the most frictionless editor on the market by a wide margin.
  • snapcaster 51 minutes ago
    Good Editors are Invisible would make more sense. I think this only applies to the class of tools we would call "controllers"
  • mistidoi 13 minutes ago
    I think this article might miss the point that tools like vim often have a much higher ceiling than the transparent or conventional alternative. You get good at the puzzle part of it (which goes along with any craft), and you are able to do things faster than your former self could have conceived.

    I remember coming up as a programmer and seeing someone who was truly excellent at using their text editor making large sets of changes that would have taken me double or triple the time and having this feeling of, "ohhh that's the payout."

  • james_marks 6 minutes ago
    Solved problems are invisible.
  • iand675 4 minutes ago
    The problem with the article is that it's two arguments pretending to be one.

    The first argument is about people. People romanticize the flaws of their tools, turn vim macros into a personality, and mistake the feeling of cleverness for output. Fine. True. Bill is correct that a lot of tool evangelism is tribal signaling dressed up as productivity advice. However, people join these tribes because they get benefit from it. If the tool wasn't meeting their perceived needs, they wouldn't be passionate.

    The second argument, the one in the title, is about tools: that being invisible is what makes a tool good. That one is fundamentally wrong, IMO.

    Halfway through, Bill admits the invisibility test "is a personal one." Which means: a tool is good when it disappears for you. Sublime is invisible to him because he's been at it for fifteen years. On day one it was not invisible to anyone. In fact, I remember buying a book and reading it back in the day about how to get better at using Sublime. So "good tools are invisible" reduces to "good tools are tools you've already mastered." That's not a claim about tools; rather, it's a claim about experience. Every powerful tool is bad to the novice and invisible to the expert. So I'll categorize this one as a veiled tautology.

    Then there's the metric. Bill's "honest test" is wall-clock time and mistakes made. Anyone who's less familiar with a tool is going to make more mistakes up front. I have a couple of professional-grade sanders that I've used for some projects around the house, and because I use them infrequently, I tend to make mistakes when I get started since it's not my core competency.

    The right question for a power tool isn't how fast you did the routine thing, it's what became possible that wasn't before. Git is not invisible to anyone, ever, and it's the most successful version control system ever built, for better or worse. Of course, lots of people also think Git is bad, so I'm not making any particular claims on that front, but it did manage to reach a local maxima that led people to jump ship from SVN et al. SQL has been the standard for fifty years and is famously brutal to master. A profiler demands your full attention every time you open it. These tools are good because they expand the frontier of what you can express. A tool that makes the impossible merely hard beats a tool that makes the easy invisible. Bill's metric scores the median task and is blind to the edge, which IME is where I end up spending more of my time as I grow as a software developer..

    The configurability section is where the essay argues against itself. Bill's fix for "highly configurable" cop-outs is "good defaults, plus escape hatches for the rare cases." But the escape hatch is the whole problem with his thesis. The moment a tool has escape hatches, the knowledge to use them is valuable, and the tool isn't invisible even to him. He wants the power and wants to disown the learning it costs. You don't get to do that. The escape hatch and the learning curve that leads to it are the same object. He even admits it. In the learning-curve section he concedes a steep curve "could absolutely be a cost worth paying" if the payoff is real productivity. That's the entire counter-thesis. So I'm not really sure what point he's actually trying to make with this article besides that you should have good defaults for tools.

  • frizlab 53 minutes ago
    Sublime is a very good editor indeed.
  • senfiaj 24 minutes ago
    Yeah, I'm so sick of hearing "it's way faster to install app on linux by using terminal than using that bloated gui softare center".
  • cryo32 18 minutes ago
    This is why LLMs are shit. They get between you and everything and turn it into a negotiation.
  • curtisblaine 57 minutes ago
    What is a good tool that's invisible? I'm genuinely curious. All tools I've used are either simple and heavily limited (so, not "invisible" because hard things are hard) or powerful but heavily specialized (so, not "invisible" because the learning curve is very evident). I feel the trade off is inescapable.
    • dgellow 20 minutes ago
      A tilling window manager is a fantastic tool that is close to invisible.

      Though I don’t agree with the author. Visibility isn’t what matters, if you get comfortable with a specialized tool like a CAD software, or a game engine studio like Unreal, it’s not invisible at all but your brain will stop focusing on all the noise on your screen and you become pretty focused and productive. I live emacs, but Rider is also a fantastic editor.

      Though I would love for things like LLMs to be way more out of your way, more “invisible”, more tool like. I hate the current UX of having to tame a patronizing, annoying fake human just to get things done the way I want them to be done

    • blanched 22 minutes ago
      I think this is really insightful. Every "good and invisible" tool I thought of fit neatly into one of those two categories. Examples:

      Powerful and specialized: automatic transmission, display/monitors

      Simple and limited: syntax highlighting, deterministic autocomplete

      The closest ones imo that bridge the gap: ssh, google search

    • tpoacher 26 minutes ago
      That's just it though isn't it. Good tools that are invisible to you won't easily come to mind because they tend to be, well, invisible.

      It's not until you randomly end up on a system which doesn't have that tool that its usefulness becomes visible; and I mean really visible.

    • dsmurrell 56 minutes ago
      The eye.
      • curtisblaine 42 minutes ago
        Many definitions of tool explicitly exclude body organs to draw a line between innate mechanisms that are inestricably linked to the body and objects used to extend one's innate physical or mental influence on the environment. The eye is not a tool, according to these definitions, but eyeglasses are.
  • dude250711 55 minutes ago
    An invisible hammer would be more prone to land on your toe.
  • psychoslave 20 minutes ago
    More often than not, good people too. And there are a lot of them. But a single unrepresentative person yelling in the room is all it takes to break stillness of quiet exchanges.
  • jdw64 35 minutes ago
    This is truly a high-quality post. I completely agree with it.

    Workflow is tied to one's identity.

    Regarding the discussion about Linux desktops in this post, I think the reason Linux lacks popularity as an desk operating system is that programmers want their computers to be not a 'product' but their own personal tool. So rather than preferring a unified system, they tend to want more freedom to modify the OS themselves.

    In other words, this is about system customizability, and about 14 years ago, Linus Torvalds made a similar point [1].

    Personally, I think the TUI vs GUI debate simply depends on the domain you belong to. Those focused on OS or open source work face pressure to become familiar with TUI, while programmers like me who deliver software to factories face pressure toward GUI. The people I deliver to almost always ask for the same thing: 'Make it understandable without reading the manual.'

    On the other hand, most of the TUI and low-level work I've encountered has been dominated by the 'Read The Fucking Manual' culture.

    I think people see the pros and cons of their environment depending on where they place their identity. I'm a programmer, but honestly, I don't really enjoy looking at a terminal. I look at the logical structure of my code and the logs when it runs, but I'm not really comfortable with the terminal. But the typical end users I deliver to are even less comfortable with terminals than I am. So I don't particularly like terminal culture or memorizing long command strings. They're just more used to clicking buttons. The problem is that the products we develop don't just stay with developers—they also need to be accessible to ordinary consumers. Of course, those who build tools for developers might not think that way, but I believe that even ordinary consumers should be able to easily operate the software

    Others, of course, think differently. In the end, as the author of this post said, it's a matter of identity.

    [1] https://www.youtube.com/watch?v=ZPUk1yNVeEI

  • sachinaag 5 minutes ago
    [dead]
  • aledevv 1 hour ago
    [flagged]