-------------------
Being precise
2020-02-06
-------------------
One of the most important skills: being precise with language
Most tech literate people will have experienced the following:
A friend or family member asks you for help, their internet
connection does not work. They describe it as "my internet is
broken". But what does this mean? Does a specific website not work?
Do they get 500 errors? Some proxy error? Does the computer have
networking at all? Are DNS lookups borked?
Of course one would not expect a user to describe any technical
details, but the generic "it's broken" does not help at all. A bit
more detail could be provided by any user. My experience is, they
simply have not learned the relevant skill. Which is to be precise
in wording and description. I think most people never had to learn
this skill as they do not need it very often.
Human language (with exceptions, i am sure) is full of implicit
meaning and ambiguity. Many things only make sense or are useful
in context. In contrast, engineering disciplines rely on exact
phrasing, so no ambiguity is left and no interpretation is
possible. If it's describing a software feature or designing an
electrical circuit, precision is key.
My perspective is software, where lack of clarity can mean
implementing the wrong feature or, as I have often experienced,
waste of time. Often a project manager writes a feature request as
pages and pages of definition. Which in itself is a good thing, and
a huge step up from the horrifying "development by hollering" where
everything is ad-hoc and nothing really is thought through. Despite
the verbosity of such documents, I many times find myself picking
apart almost every paragraph and coming back to the author with as
many questions.
This is not meant as a bashing exercise, and I do not expect a
product manager to excel in this skill. Even as they have the
expertise in the domain in question, or at least should have, they
do not necessarily realise the ramifications of some of the
details. Which means that as the engineers, we have to be even more
vigilant in finding all the ambiguities and clear them up.
Being precise is useful in all kinds of different things. The one
already discussed is asking the right questions the right way. To
be precise in this area means expressing a question in a way that
the person answering knows what exactly you want an answer for.
"What do you mean with this sentence?" becomes "I think you mean x,
but based on the rest of this document, this could also mean y or
z. Which one do you refer to?"
Since asking the right questions is itself an important skill,
being precise with them is pretty damn important.
Describing problems is the other big one. We have all seen the bug
reports of the form "it's borked", like in my example above. Since
we are engineers we should strive to do better. Never spare the
time or effort to research, double-check and cross-check your
problem. Narrowing down the space with negative tests and the
process of elimination brings us pretty close to describe the
problem in sufficient, precise detail, and, again, ask a good
question.
Doesn't really matter if it's an issue on some bug tracker or the
request for help from a colleague in the office. Or simply writing
documentation. I find myself regularly rewriting and rearranging
documentation for the work I do. Describing the test cases I came
up with, technical docs or information for users and colleagues. It
takes considerable effort to make them as precise and useful as
possible. Of course this means that writing such documentation with
care is time consuming, and in my experience underestimated all the
time.
Terminology is another factor that gets often overlooked. Every
domain has it's own set of special terms, often with more than one
meaning. Or two words mean the same, but only in a special context.
Being precise here means always use the exact right word, even if
another would mean the same in this context, but not in another.
Reducing inconsistences is vital. Explain the specific meaning of a
word in the current context if it can have more than one. Be
careful with the language your non-technical users or clients use.
I write software for a big multi-national corporation. What one
department calls something, another calls it differently. Or they
use the same words, but for different things. Always disambiguate.
This skill can always be improved on, and as I continue to learn
I'll try to become better at it. If you have a junior under you
wing, try to educate them on this. It'll make both your lifes
better.