Common Language

A Common Language enhances the quality of the communication among the team members by standardizing the information flowing through the communication channels.

The need for a common language is pervasive to all steps of software development. The team members need to master the different languages that are used along the development process. Some of these languages are closer to the client while other are closer to the computer, and so, more formal.

When we talk about a common language we are referring to a small set of concepts that are shared by a community. Most people only speaks a small set of their mother language’s vocabulary, which improves understandability. The concepts they use, and which are in the language, are tuned for the problems the community addresses.

The use of a common language benefits communication because in communication often less is more. Less variations in the language helps to improve understandability by reducing the number of possible types of combinations, from which result the possibility of ambiguity. However, it may raise the question about expressiveness: by having a language with less variations do we loose expressive power? This question may be may also be asked in a more specific context: Do we loose expressive power when we use a structured programming language instead of a goto spaghetti-like language?

The answer is that some expressiveness may be lost, but most of the problems can be solved using the structured programming paradigm and, for those problems that require the use of gotos, these more complex concepts can be used in a controlled manner. Overall, there is a gain in understandability.

This applies to programming languages but also to other languages. Business people speak their own jargon. Software architects use architectural styles to define architectures. Software designers use design patterns. So, the quality of communication inside a community improves if there is a common understanding among their members, and this common understanding is reflected by the common language they use.

Interesting, here, common language applies to both, a pre-defined structure, that is explicitly enforced, for instance by a parser, or a de facto structure that is used by community. The former applies to the formal languages while the implicit structure occurs in the non-formal descriptions. Not surprisingly, implicit structures tend to be incorporated in languages. See, for instance the Actor model, the Active Object design pattern, and the Erlang and Scala programming languages.

In software best practices become language.