Skip to main content

Guiding Principles

The following considerations should be applied when determining a naming standard:

Consideration        Description
Cognitive LoadAll efforts should be made to reduce cognitive load. Unnecessary Abbreviations, Indirection, inconsistencies, and foreignness increase cognitive load, and decreases productivity.
QualificationAlmost every resource should have a qualifier, easily identifying what it is at first glance and ensuring it isn't over-broadly squatting on a concept name.

As an example, having a repository called 'reporting' is a poor choice. Is it the reporting service code, the reporting database schema, a bunch of statically generated reports? Note that qualification can come from Contextuality.
ConsistencyIdentify lowest common denominators where a standard will be applied, and ensure the standard can be implemented consistently in all locations.

When a standard has been identified, efforts should be made to apply it in all new contexts, and retrofit existing contexts as feasible.
UniquenessDetermine uniqueness requirements for a given context, and ensure a naming standard meets them.
ContextualityCan a Resources be uniquely identified within a context, without unnecessary qualifiers?
SuccinctnessNames should be no longer than necessary to meet objectives, without compromising on other considerations.
FamiliaritySomeone reading a name should be able to reasonably understand what it's meaning is, or what it applies to, because it is immediately a common, familiar concept they have likely seen before.
AutomationEnsure naming standards aid in automation, and do not create unnecessary burden on automation implementors.

As an example, would an implementor need to make addition API calls or take additional steps to resolve a resource name due to a shortcoming with a naming standard?
DiscoverabilityNaming standards should have a certain element of "guess-ability". This goes hand in hand with 'consistency'.

Someone trying to access a resource should have a reasonable chance of guessing the naming scheme applied to a resource because it follows the same patterns used on other types resources.
LimitationsEnsure naming standards are not compromised based on naming lengths and allowed characters withing a resource context.

If there are limitations that might compromise the value of a naming standard, strong considerations should be made to apply other considerations. For example, if there is name length restriction, it is better to determine if the name can be shortened by removing unnecessary qualifiers instead of using abbreviations.
Sorting/SearchingA naming standard should aid in sorting and/or searching where appropriate.
Refactor-abilityA naming standard should take into consideration what happens if a name change needs to be made, and the blast radius should a name change be required.