His observations are actually true of any tool, not just "git". I want everything I use to be robust, and not magical. (About the only exception is perl, and that's because it is actually designed to be a Swiss army knife. But even here, I've moved more toward python.)<p>Magic is the enemy of scripting, too; not only in shell scripts when running programs, but in other languages when calling functions. It is very hard to work around things that have stupid side effects. Every program/API should have basic functions, with no default behaviors that are even slightly unpredictable.<p>Output format is also related to this flexibility. For instance, to me, a program that does something useful, but then chooses to pretty-print all its output in hard-to-parse tables, has severely limited its value. (After all, if I wanted it pretty, I could pipe to a program that makes it pretty. Then again, it's more likely I want to use the data for something else first.)