It’s All About the Emersons

A foolish consistency is the hobgoblin of little minds

A wise consistency is the obsession of system architects

Humans like patterns. We even see them when they are not there1. Much of poetry is the patterns of word sounds and rhythms and even the patterns of grammar and meanings

Patterns can help optimize construction: standard sizes of materials and tools, as well as construction and assembly standards (“codes”), allow various environments to be predictable, familiar, and productive. Beyond the namesake Software Patterns, common computer languages, frameworks, protocols, and idioms allow software developers to move from project to project and organization to organization, pausing only to learn about the new specifics before diving into work

As with most things, extremes of standardization are generally a Bad Idea. An absence of patterns and consistency makes cooperation and task mobility impossible, and a surfeit drowns productivity in “red tape” as the effort to standardize everything starves the work which those standards support. As with most things, good solutions are somewhere in the middle — a compromise best suited for the situation: It Depends

For a standard to be a good balance, consider these factors:

The last point is not an idle one. Projects are full of decisions, and having to decide about enforcement (e.g. the format of a Pull Request title or where the curly braces go) is not a good use of attention2. A standard, even a petty one, might be valuable in removing distractions and exceptions. Every exception invites politics: who gets the exceptions and who grants them. And every exception tests (or “proofs”) the rules, and once rules are instituted and supported, most people won’t keep testing the rules they have finally become accustomed to

As long as consistencies serve more than they constrain, then perhaps they are not foolish at all


  1. apophenia: refusing to believe that apparently connected or synergistic things are random and coincidental; The Texas Sharpshooter Fallacy is taking a collection of random data and recognizing the subset that supports one’s position 

  2. A common view of languages with a single, enforced format (e.g. Go) is everyone hates the standard because it is not their personal style and loves it because they don’t have to argue with others’ personal style 

 
0
Kudos
 
0
Kudos

Now read this

A Function’s Interface Is It’s Bond

TL;DR: A function must respect all arguments or return an error The Arguments # The only realistic way a function can fail its interface is how it treats arguments as mis-typed arguments or return values are usually caught by a framework... Continue →