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

Walk, Don’t Race

TL;DR # Cha-Cha-Changes # Breaking changes happen, and the breaking occurs between the layers (e.g. UI and API, API and database). Rather than trying to release new layers simultaneously (especially with edge distribution), commit the... Continue →