Hasan's Journal

Stories, lessons, and scars from production.

Mehedi Hasan
Back to blog

Building Internal Tools Developers Actually Want to Use

Internal tools have a reputation for being ugly and hard to use. Here's how we built one that developers chose over the alternatives.

#Internal Tools#Developer Experience#Case Study

The Problem with Internal Tools

Internal tools have a reputation for being ugly, hard to use, and tolerated only because they're the only option. That reputation is largely deserved, and the reason is structural: internal tools are built by engineers who have no incentive to invest in quality because the users are captive — they can't switch to a competitor. The result is tools that technically work but are unpleasant to use, which means they get used as little as possible, which means the workflows they support are slower and more error-prone than they need to be. The cost of bad internal tools is paid in the aggregate, across every user every day, and it's invisible because nobody measures the time wasted fighting with tools that should work better.

The tool we needed was a deployment management dashboard — a way to see what was deployed where, who deployed it, when, and why. The existing solution was a combination of Slack messages, a shared spreadsheet, and tribal knowledge, and the failure modes were exactly what you'd expect: the spreadsheet was always out of date, the Slack messages were unsearchable, and the tribal knowledge left with the people who had it. We needed a real tool, and the question was whether to buy one (expensive, generic, would need customization) or build one (time investment, but exactly tailored to our needs). We chose to build, with the explicit goal of making it a tool developers wanted to use rather than one they had to use.

What We Did Differently

The first decision was to treat the internal tool like a product, not like an internal tool. That meant having a clear understanding of who the users were (the engineering team), what their needs were (fast lookup of deployment info, clear audit trail, integration with existing workflows), and what success looked like (developers choosing the tool over the spreadsheet within a month of launch). Treating it like a product meant we invested in UX — clear information hierarchy, fast page loads, keyboard shortcuts for power users — that internal tools usually skip because "the users can deal with it." That investment paid off in adoption: developers used the tool because it was faster than the alternatives, not because they were told to.

The second decision was to integrate with existing workflows rather than requiring new ones. The tool pulled deployment data automatically from CI/CD rather than requiring manual entry, which meant the data was always current without anyone having to maintain it. It posted deployment notifications to Slack with deep links back to the tool, so developers could click through for more detail without leaving their normal workflow. It integrated with the incident management system so deployments could be correlated with incidents. Those integrations were the real leverage — the tool became valuable not because it was a destination but because it was a hub that connected the tools developers already used.

The Outcome

Within a month of launch, the spreadsheet was abandoned. Within three months, the tool had become the canonical source of deployment information, and the question "what's deployed where" had an answer that took seconds rather than minutes. The tool reduced the time to diagnose deployment-related issues by roughly 70%, because the audit trail was complete and queryable rather than scattered across Slack and tribal knowledge. But the most valuable outcome was cultural: the success of this tool demonstrated that internal tools could be good, which raised the bar for every subsequent internal tool the team built. The default shifted from "internal tools are tolerable" to "internal tools should be as good as external products," and that shift compounded across every tool investment the team made afterward.

The lesson I took from this project is that internal tools are a leverage point that most organizations underinvest in, because the cost of bad internal tools is invisible and diffuse while the cost of building good ones is visible and concentrated. Making the case for investment in internal tools requires making the invisible cost visible — measuring the time wasted, the errors caused, the velocity lost — and framing the investment as a productivity multiplier rather than as overhead. A good internal tool pays for itself many times over in the aggregate productivity of its users, but only if it's built with the same care as a product that has to compete for users.