AK / PORTFOLIOWriting
4 min

Quiet software is a design decision.

The best internal tools are the ones you stop noticing. That takes more work, not less.

Every team eventually ships a tool that works but never quite disappears — the kind you keep needing to explain to new hires, the kind that shows up in retros as "let's just live with it." That tool isn't broken. It's loud.

Quiet software is a design decision, not an emergent property. It requires you to notice, at every step, where you're asking the reader (or user, or teammate) to hold state that the tool could have held for them.

The three loudness signals

There are three signals I've come to trust. When any one of them appears in an internal tool, the fix is almost always additive — do more work behind the scenes, not less.

  1. "Which flag do I pass again?" — the tool is asking the user to remember something it could have inferred, defaulted, or prompted for.
  2. "Wait, is this the prod one?" — the tool has failed to communicate its own state. Color, label, or terminal prompt should have already answered.
  3. "I always run these three commands together." — the tool has exposed primitives where a composed skill would have served better.

Every one of these is the tool being loud on behalf of laziness on the builder's part. The fix isn't to write documentation. The fix is to make the documentation unnecessary.

Loudness is contagious

The reason to care isn't aesthetic. It's that loud tools train their users to be defensive — to double-check, to add safety wrappers, to build ad-hoc scripts around them. And those defensive habits carry into every other tool the same person uses next.

A team that's spent a year working with three loud tools will build a fourth loud tool by default, because that's what "working software" now looks like to them. The bar resets downward.

What quiet costs

Quiet is expensive up front. It means:

  • More validation. Not just to catch errors — to catch ambiguity before it reaches the user.
  • More defaults, chosen carefully. A good default is a small design decision every time.
  • More status surfacing. Every action should leave a trace the user can read without asking.
  • Fewer configuration knobs. Every knob is a question the user has to answer forever.

None of this is glamorous work. It doesn't demo well. But it compounds — every quiet tool a team ships makes the next one easier to design because the bar has been raised, not lowered.

The best compliment an internal tool can receive is that nobody talks about it. Aim for that.

Command palette

Search and jump to any page.