The single biggest problem in communication is the illusion that it has taken place.
— George Bernard Shaw
It’s the classic stereotype of a programmer: an antisocial geek who slaves alone, in a stuffy room with dimmed lights, hunched over a console tapping keys furiously. Never seeing the light of day. Never speaking to another person “in real life.”
But nothing could be further from the truth.
This job is all about communication. It’s no exaggeration to say we succeed or fail based on the quality of our communication.
This communication is more than the conversations that kick off at the water cooler. Although those are essential. It’s more than conversations in a coffee shop, over lunch, or in the pub. Although those are all also essential.
Our communication runs far deeper; it is multifaceted.
Software itself, the very act of writing code, is a form of communication.
This works several ways….
When we write code we are talking to the computer, via an interpreter. This may literally be an “interpreter” for scripting languages that are interpreted at runtime. Or we communicate via a translator: a compiler or JIT. Few programmers these days converse in the CPU’s natural language: machine code.
Our code exists to give a literal list of instructions to the CPU.
Every so often, my wife leaves me a list of jobs to do. Make dinner, clean the living room, wash the car. If her instructions are illegible, or unclear, I won’t do ...