Tools are good, so more tools must be better, right?

There is an art to making a good tool. If you don't make the right tool, you can end up making the task more cumbersome rather than easier.  Automation is especially vulnerable to this.  Automate the wrong thing and you can make a process more restrictive instead of more flexible.

A good tool is in its essence an abstraction.  And abstractions as most people conceive of them are hand-wavy, wishy-washy concepts.  I prefer to think of abstraction as having a precise definition (copped from abstract algebra):

A collection of entities combined with a set of operations defined over those entities.

The virtue of such a formulation is the synthesis of a new thing: the abstraction, something that exists of itself and permits one to interact with it without regard to the encapsulated details.

I love tools and I seem to have a knack for making good ones.  But I've used a lot of bad tools, too.  I've given a lot of thought to tools and to why some are good and why some are so bad and I think I can summarize the problems.

Many tools have no net benefit.  They simply replace one action with another.  Modern "language designers" commit this sin with every C-like-syntax-transpiled-in-a-novel-toolchain hobby project that gets attention because the author works at one of the Big 3.  Simply replacing one action with another does not constitute a good tool.  And, in the extreme, such a tool can make things worse when the old abstraction is hidden by a leaky abstraction, forcing the user to care about both (similarly to the next sin).

Other tools actually add steps to a process, increasing the total work.  In the worst case, the original action must still be performed, in addition to using the tool.  This seems to be a failure unique to computer tools as no sane person would use a hammer that required hammering something else before you could hammer a nail.  But plenty of users seem to think it perfectly normal to have to manually edit input text files, character by character, before feeding them into a tool to process the text.

But worst IMO are the tools that actually restrict the user or prohibit full use of existing capabilities.  From hence is born the all too common lament that "the system won't let me do that."

All of this technology, and yet so much "can't".

Obviously, a lot of restrictions are deliberate power grabs by unchecked corporations, but many still are the result of poor tool design.  Such tools say to their users "stop what you're doing and do it this way from now on".  Bad tools are very much the tail wagging the dog, demanding care and feeding from their users while providing reduced or restricted benefit as compared to not using the tool.

Good tools should be genuinely useful, interesting to learn, and should delight their users while using them.