Back to all writing

Small tools need clear boundaries

A useful tool is not only easy to start using; it is also easy to understand, change, and put down.

BY TIAGO BALABUCH
Three compact tool modules arranged inside a clear luminous boundary.

Small tools are appealing because they promise to make one task easier. But “small” is not just a line-count goal. A tool stays small when its purpose and limits are easy to see.

That starts with a narrow job. A script that renames a batch of files can be excellent at that job without also becoming a scheduler, a configuration platform, and a general-purpose automation engine.

Make the edges obvious

Before adding an option, ask what a person needs to know to use the tool safely:

  • What inputs does it accept?
  • What will it change?
  • How can someone preview or undo the change?
  • What happens when an input is missing or invalid?

These questions are part of the interface, even when the interface is only a command line. Clear output and a useful error message are often more valuable than another feature.

rename-files --preview ./photos
rename-files --apply ./photos

The first command makes the boundary visible: look at the proposed change before applying it.

Let the next need stay separate

If a second use case appears, it does not automatically belong in the same tool. A small, stable core can be combined with another tool later; a vague tool with overlapping responsibilities is harder to test and harder to trust.

A good boundary is a feature. It tells you what the tool promises—and what it does not.

This is a sample article for testing the blog’s Markdown workflow. Replace it with your own writing whenever you are ready.

Share this post