My experience has been that having names for things makes it easier to think and communicate about them; including in documentation.
For example, once I learned the term "tail" I no longer had to say "every element except for the first one".
As another example, learning about "complete" versus "partial" functions gave me the vocabulary to better understand and communicate about certain types of errors.
Does anyone know of any resources that describe different types of useful vocabulary such as this?
Being THE term is the holy grail for consumer brands. You can only get huge when your brand is the synonym for a whole concept or industry. Like ColaCola, Uber, Facebook, Tweet etc etc. For example Mark's explanation of Facebook [1] or the Photocopier sketch [2]
I find "first" and "rest" to be better names for "first element" and "all but first element". Whereas "head" and "tail" sound like the same type of variable, but are different types (element vs list of element).
It's a bit of a generic issue. Until tail becomes a norm, it's hard to understand. I found embedded test/examples pretty great to quickly get the meaning of an idiom.
in python for instance:
def tail(l):
'''
>>> tail([1,2,3])
>>> [2,3]
>>> tail([])
>>> ValueException("undefined on []")
'''
# actual logic
I think it is also useful to be aware of the specific terms your team might need and introduce words to those more abstract concepts. This frequently happens with naming specific code patterns or important classes in the code, but can also be for how the team operates in general. A DSL for how your team operates.
For example, once I learned the term "tail" I no longer had to say "every element except for the first one".
As another example, learning about "complete" versus "partial" functions gave me the vocabulary to better understand and communicate about certain types of errors.
Does anyone know of any resources that describe different types of useful vocabulary such as this?