Good Tools Are Invisible
28 points by telemachus
28 points by telemachus
I don’t want my tools to be “fun”. I want my tools to be invisible.
Interesting, this has always been my exact reaction when I read the landing page text of Odin:
Joy of Programming
We go into programming because we love to solve problems. Why shouldn't our tools bring us joy whilst doing it? Enjoy programming again, with Odin!
I made this same point on the zig issue tracker in 2021:
Making writing code from scratch "fun" was never a goal of the Zig language. Personally, I think it's fun to make great software, but what's fun has to do with the application and end user experience, rather than minutiae about the language. A carpenter might have fun building something out of wood using a hammer and nails, but they don't use a "fun hammer". They just want an effective hammer, and the fun part is the part where you build something.
Cool to see him coming around to my point of view. I wonder if he's about to change the landing page.
I dunno, I can see a difference between joy and fun. Joy might be the experience of solving a difficult problem and not having to solve accidental complexity around it at the same time. Maybe that's also fun, but from my read it's not the kind of "fun" (e.g. solving the "puzzle" of using a tool) Bill talks about in the article.
Personally I'm not much of a tool-customiser, but I think trying to implement something in Haskell has often led to that kind of "fun" for me.
I think this article states as fact an opinion about what makes a good tool. I don't personally favor total keyboard control or configuring every last detail, but why not let people enjoy things?
As a tool user, something I really appreciate from a toolmaker is that readme section with reasons to prefer their tool and reasons to prefer alternatives.
Something I did really like is the presentation of footnotes—Inserted right after the text wrap, no JS needed.
I'm a huge fan of tools with explicit anti-goals, and tools with very deliberate pros and cons instead of trying to do everything.
Very good point made. Any new tool I pick up is expected to have a steep learning curve. But after an amount of time I expect it to be "invisible" as the author puts it.
The only counter point I would make, is for the ability to customise it to me. Whether that's themes, shortcuts, plugins or workflows - I need the tool I'm using to work well for me. So, I'd say that the learning curve and "fun" or "puzzle" part is more on the learning side for me. This can be true of my operating system, editer, browser or whatever.
After many years of learning my tools, I've become proficient with them. My skills upgraded from Windows to MacOS, and even more when I moved to Linux. I am better at my job for it.
Coming at this as a software developer with an interest in puzzle design: "Puzzle" is a huge design space. You can engage with puzzles for many reasons, and a puzzle can be hard for many reasons. But (IMHO) the best puzzles, which can still be quite hard, involve working out how to do something that might not have seemed possible. The "fun" of these "puzzles" is learning (as Raph Koster would have it).
If you have to do this all the time with your tools it's exhausting, but a complex tool isn't always going to be invisible even at high skill levels. When you have to stop and figure things out, it's nicer for it to be fun than not! And to the extent that some of us find this stuff fun, that's what keeps us going.
(I concede the point though that sometimes it would be best to just know about a more appropriate tool that already exists.)