One of the most important skills for a language developer is making distinctions between similar terms. This involves several sub-skills:

  • Understanding the difference between two similar terms. If a domain expert uses parameter once and configuration variable next, are they the same thing or are they different?
  • Using the proper terms in each situation. If a parameter and a configuration variable are indeed the same thing, use only one of the terms consistently. If they are different, use the correct term each time.
  • Realizing when the other side is not using the terms correctly and dealing with it.

Why is it important? This ties in with one of the reasons why we develop languages in the first place: help our users speed up their work by making fewer mistakes and spending less time correcting them. Misunderstandings about terms are a major source of errors, both for our language users and for ourselves as language developers. At the same time, misunderstandings are fairly easy to correct once you tune yourself to looking for them.

How can one develop the skill of making distinctions? I believe it is mostly about strengthening your intuition. You might get a feeling that something is “a bit off” in whatever you are hearing or reading. This feeling may be weak, irrational and easy to dismiss. Instead, take it seriously and reflect on it. Try rephrasing what you read or hear in your own words, see what terms you are inclined to use naturally, and if they are different from the original terms, what is the difference in meaning?