I'm a language guy. I love languages. Not just programming languages, they have not much in common with the real stuff: natural languages.
Being a seasoned software developer with a linguistic background, this is a topic that is very dear to me: naming things. Naming is all about communication. And communication is hard.
Two Types of Understanding
Creating software is a dauntingly complex task, partly because it requires a constant flow of successful communication, which itself requires a good deal of understanding -- in two ways.
First, we need to understand what we are doing and dealing with (let me call this technological understanding): If you have no idea what an HTTP request is, or how a browser exchanges data with a server, you will have a hard time developing web applications. Your technological understanding here is key.
Then there is a second type of understanding. It involves less the things we deal with and more the people we communicate with.
When developing solutions, we continuously need to make ourselves understood while talking to fellow developers (or users, if you will). We have to do so under all circumstances, given a plethora of media we can choose from (videos, voice messages, text, person to person, person to group, ...). This part I'd like to name communicative understanding.
Now, technological understanding roughly translates to what we are talking about (factual knowledge), while communicative understanding translates more or less to why we are talking and our intentions behind (pragmatic knowledge).
Software development can only work if it communicates on those two levels successfully. This is why language matters and the value of proper communication cannot be overestimated.
Misnomers: When Understanding Breaks Down Entirely
Sadly, there are some things in our industry (as in any part of human life, I guess) that make our job quite difficult. They do so because they fail us on both levels of understanding.
I'm talking about Misnomers, these greedy little bastards that infiltrate our talks easily and compromise all our efforts to communicate successfully.
The Oxford English Dictionary defines the term misnomer as
 The use of a wrong name; misapplication of a term.  A wrong name or designation.
And there we clearly see why misnomers fail us miserably: They hinder technological understanding (through wrong designation, i.e. by referring to the wrong idea or concept, see ), and they prevent communicative understanding (through misapplication, i.e. by disguising our intentions, see ).
A Problem for Aspiring Developers
Misnomers are a problem for all developers, but they pose especially great problems to less experienced and aspiring developers that are new to our field.
These lack the necessary overview, knowledge and experience to see through the mere words and catch the intention behind them. They fail to see them for what they really are: misleading and obliterating.
When confronted with the term object-oriented programming (OOP), aspiring developers may easily fall into the trap of thinking that OOP is all about objects the same way that functional programming (FP) is all about functions.
When presented with the word serverless they might take the word literally as a new way of solving problems through the use of clients only, thus rendering the whole notion of client vs. server meaningless.
These are just three prominent examples, and many more exist. I'd love to discuss them and then maybe compile these discussions into a wiki or book as a help for anyone who decides to start a career as a developer.
Name Your Favorite Misnomers!
What other misnomers are there that we should discuss and warn about?
Top comments (0)