This is something that I noticed when discussing technical problems with colleagues; plain spoken English seems to be unsuitable.
Language has evolved over thousands of years to facilitate the exchange of information between people in a way that was most relevant to them. A side effect of this is that language has become optimized for communicating information about relatively simple scenarios involving:
In the past few decades, however, the advent of intelligent machines and automation has meant that a third kind of interaction has become increasingly common, that is:
It turns out that the standard spoken form of the English language (and probably every other human language) is not great at discussing these kinds of complex non-living object-to-object interactions.
For example, take the following sentence which references the interaction between a person and an object:
“John ran into a signpost, it was damaged”
In this case, we know that ‘it’ refers to an object so this sentence is pretty clear; it’s the signpost that was damaged.
This sentence, however, is less clear:
“The car drove into a signpost, it was damaged”
In this case, we don’t know if it’s the car or the signpost which was damaged.
When discussing code, most of the situations we describe concern interactions between one or more inanimate objects and so using articles like ‘it’ in sentences is often a bad idea.
For example:
“The parent process sent a message to its child process, then it encountered an error”
In this case we don’t know where the error was actually triggered; on the parent process or on the child process?
The more objects are involved in a sentence, the more confusing article words like ‘it’ become. When discussing code, we shouldn’t be afraid to repeat the subject of a sentence multiple times. Also we shouldn’t hesitate to interrupt colleagues and ask questions like “What do you mean by ‘it’” when they’re describing a complex interaction between multiple objects.