What Makes a Good Developer Tool
I've used a lot of developer tools. Built a few. The ones I return to consistently have three qualities: they're fast, they're obvious, and they stay out of the way.
Most tools fail at all three.
Fast
Performance in developer tools is not a nice-to-have. It's the feature. A linter that adds 3 seconds to every save is a linter that developers will disable. A build tool that takes 45 seconds per compile is a build tool that fractures focus.
Speed compounds. A tool that's 10x faster doesn't just save time — it changes how you work. Iteration loops tighten. Feedback loops close. The tool disappears into the workflow rather than interrupting it.
Obvious
A developer tool should be learnable through use, not through documentation. The interface — whether CLI, GUI, or API — should reveal its own model through consistent behavior.
The test is: can someone familiar with tools in this category pick it up and be productive within minutes? If the answer requires reading a README first, the tool has failed at obviousness.
Out of the way
The best developer tools are invisible during use. They don't interrupt. They don't require ceremony. They don't ask questions whose answers should be defaults.
A linter should lint. A formatter should format. A build tool should build. The moment a tool asks me to think about the tool itself rather than what I'm building, it has failed at its primary job.
These three qualities are in tension with each other. Making a tool obvious often requires adding affordances. Adding affordances can slow things down. Staying out of the way can make something harder to learn.
Getting the balance right is the craft.