Building Developer Tools That People Love
Principles for creating tools developers actually want to use
June 18, 2026 9 min read
Principles for creating tools developers actually want to use
June 18, 2026 9 min read
I have built internal tools nobody used and internal tools people fought to keep when leadership wanted to kill them. The difference was rarely the feature list. It was how the tool felt in the first ten minutes.
A developer tool gets one chance to prove it respects your time. If the first command requires a config file, three environment variables, and a Slack message to find an API token, most people quietly close the tab. The tools that win do something useful with zero configuration, then let you go deeper when you care to.
The error message is the most-read part of any CLI, and most are written as an afterthought. A great error says what went wrong, why, and what to do next - ideally with the exact command to fix it. "Permission denied" is a dead end. "Permission denied writing to /etc/app: run with sudo or set APP_HOME to a writable path" is a tool that has your back.
Developers run their tools hundreds of times a day. A 400ms startup you would never notice in a web app becomes a tax you pay constantly, and it changes behavior - people stop running the slow linter, stop checking the slow status. Treat latency in the inner loop as a correctness issue, because a tool nobody runs catches nothing.
The best tools compose with what developers already use - they read from stdin, write to stdout, exit with honest status codes, and stay out of the way. Build for the pipeline, not the demo. The reward is a tool that survives long after the team that built it has moved on.