Communication is hard, mainly for three reasons: linearity, low bandwidth, and WIOTYIOTY (defined below).
For our purposes we can define successful communication as the act of transferring mental state from one person to another, such that the source state and the resulting state differ as little as possible.
That “differ” makes it a rather pessimistic-by-default definition, but I think it describes reality fairly well. When you look at an object and refer to it by a word, that word refers to something other than the actual object. It refers to what you perceive the object to be, which is necessarily an incomplete, your-personal-context-dependent perception of the object. This sometimes can be a huge distortion. Now imagine saying that word to another person. What image it evokes in their mind is dependent on the combination of their mental context, their idea of what your mental context is, and the definition they attach to the word, which may or may not partially overlap with yours.
Concretely, a designer might say “please make the button bigger”, and you might reply “sure”. The two of you communicated. But what does “bigger” mean in the designer’s head? Is it 10% bigger, or twice the original size? What’s “certainly big enough” to you may be very different than what it is to the designer. And now extrapolate that to pretty much every word and concept you use in speech. We, being the optimistic bunch that we are, tend to think that everybody is on the same page, but this is laughably unrepresentative of reality.
Words suck, but they are not the only problem.
Thoughts in your head are simultaneous, multi-dimensional, intertwined. Fascinating, beautiful, complex constructs. And then you need to “communicate” them, which means simultaneously linearizing all this complexity, and shoehorning it into a channel of words, one at a time. It’s like transferring RGB values of the pixels of a Monet painting over morse code by hand, and expecting the person on the receiving end of the morse code to be speechless at the beautify of the original painting.
So yeah, communication is hard, and the odds are really stacked against you.
If you want to think about it more positively, communication is an act of painting with words. In a painting, each brush stroke in itself, while could be considered beautiful even in isolation, does not carry much meaning. But in concert, all the strokes come together into building a complete image in the viewer’s mind. Similarly you can think of communication as painting with words — individual words or sentences do not matter so much as the final image that the reader is left with[1].
Both the pessimistic and the optimistic view of communication is helpful, because they tell us what to watch out for, and inform us of the possible countermeasures. For the purposes of getting better at programming, let’s list some properties of communication that we’ll need to be conscious of.
- Communication is context-dependent. Strive to foresee what context your reader is likely to be in when reading — it’s probably quite different from yours.
- Agree on terminology up front. Clearly defining the meanings of words will reduce ambiguity and thus increase the throughput of the communication channel.
- Try to foresee what misunderstandings may arise, and address them proactively.
An important point is that a surprisingly large portion of your work output is communication. Even code, especially code, which one may simplistically consider “instructions to the machine that enable business logic or product features to work”, are an act of communication. Even in a one-person team, code is a communication tool between the current you and the future you — and these two people are different, with different mental contexts. Very little code gets written once and never revisited. The corollary is that code needs to be written in a way that is easy to understand, i.e. the communication aspect of it has to be a first class citizen.
An important aspect of human nature to watch out for communication is WIOTYIOTY — “what is obvious to you is obvious to you”. That is, often only to you. We fail to predict what context is shared, and what is only in our head, and end up communicating less than is necessary to get our point across. An extreme version of this is the situation when you’ve been engrossed in a task for hours, and then ask a coworker some question about the task. The wording you use to ask the question seems clear and obvious to you, but your coworker is giving you a blank stare, because you failed to given them the background and context to understand the question.
Next: Usability and User Experience Design ⇒
[1] In this day and age, this is much harder to swing, since you’ll likely be quoted out of context on Twitter and the rest of those society-destroying, brain-degrading products of eyeball-hungry tech. And then you’ll be executed by the mob for this or that purported sin, promptly dismissed by your organization frantically trying to save their name, etc. You know the drill. Lynching by the angry mob in the city square has long been outlawed, but its current incarnation, in many cases no less destructive, is for some reason permitted.
Comments
Post a Comment