Sometimes I think it's a tragedy that two people merely think they're speaking English to each other, but in reality, they're not only talking past each other, but speaking completely different languages.
Okay, I'm going to vastly oversimplify things here, but I've got another proposition. Engineering speak is not english. Neither is computer-geek speak. Neither is builder speak, physics-speak, contractor speak, architect speak, navy speak, or doctor speak.
Sure, the words sound like English. Some of them. At least until you hit that which we call "jargon" but is really your first clue you've left english as most people know it. Some of the words even share a similarity of meaning with their common origins.
An old joke to illustrate:
If you give the command "SECURE THE BUILDING", here is what the different services would do:
The NAVY would turn out the lights and lock the doors.
The ARMY would surround the building with defensive fortifications, tanks and concertina wire.
The MARINE CORPS would assault the building, using overlapping fields of fire from all appropriate points on the perimeter.
The AIR FORCE would take out a three-year lease with an option to buy the building.
It's hoary, and too-often told, but aside from what it illustrates about stereotypes of the various armed services, it also illustrates that while those services are using something resembling english, they have an entirely different set of assumptions and definitions for what appear to be the same sound symbols, when operating in a military context, than when using regular English.
Sure - look the word "secure" up in the dictionary, and you'll see enough different definitions to support all of those interpretations. This allows us to walk away secure in the knowledge that we're only speaking one language.
Of course, we are talking about the language that mugs other languages for spare grammar. Where Spanish, German, and French might use one word each to describe a range of nuances, based on context, English borrows a word from each of them, and uses each for a subtly different meaning.
It gets worse when you talk programming languages. Sure, the vocabulary is smaller, and the rules of grammar and syntax, while different for each, are fairly rigid and well defined. Yet, if you look at the actual words used - if, until, go, class, procedure, etc., they look like english. English with very formalized meanings.
A non-programmer looking at code from several languages like Ruby, Perl, Java, C, and Python might have a hard time telling that they're even different languages. Well, except Python, which happens to be pretty visually distinctive. And yet, while the languages have many commonalities, the subtle differences in between them, and between these languages and other languages like Smalltalk and Haskell, result in completely different metaphors and methods for solving the same problem. Completely different ways of thinking about things, different models of thought.
Each language, each set of restrictions, each context, each set of grammatical and syntax rules, that tells us how to interpret and understand these symbols which often look alike, result in you having to think in a completely different way to solve a problem. In much the same way that the different grammar, structure, and conjugation rules for German, Spanish, and Lithuanian require you to approach speaking a simple statement in completely different ways.
Learning to be a carpenter involves not only learning words you may have never heard of that only apply to carpentry, but definitions of words, and terms of art, that may have completely different meanings from those outside of that context.
And learning those multiple contexts and the different patterns and assumptions and metaphors behind them make it easier to find solutions that people who've only seen one of those concepts may never have spotted. Programmers are often recommended to learn several languages, especially oddball ones with completely different idea structures like Haskell, because even if they never make a living programming in those languages, it will help them become better programmers and problem solvers.
The same is true of learning a new skill like carpentry, painting, hiking, skating, or shooting. It gives you a new language (even if it sounds like english) and a new set of thought-patterns and symbols.
Which brings me to another, final thought.
Most of these "languages" I've discussed here are still, in the end, subsets of English. But, while the lessons and tools they give you may be different, just like a 'real' foreign language, they give you a very similar experience in mapping a new set of mental tools.
But it really does confuse communication when two people think they're talking "English" - and they're not. At least not the same english.