I still remember one of the most interesting questions I have been asked last year when I was interviewing for a Software Engineering position:
How would you explain to a 12 years old what an API is?
At first, I was surprised: it certainly sounded like an uncommon question for a Software Engineering interview. And yet I tried to answer as best I could, trying to come up with a concise definition that could convey what I meant, but without assuming any specialist knowledge about computers and software.
As I progressed with the interview, it became evident what kind of ability my interviewer was trying to test.
Whatever is the job we do, there is a good chance that we will need to interact with other people multiple times a day to get things done. However, the ability to communicate effectively is often overlooked and it is rarely a skill that is taught at school.
While we have no difficulty in interacting with other people in the same profession, things can sometimes go wrong when we meet someone with a totally different background.
Have you ever tried explaining virtualization to a customer?
If at some point their attention faded, they openly told us they could not understand what we were saying or we saw terror in their eyes when we met them during the following days, it is generally not because they are stupid, but probably because we are doing it wrong.
(Even if you are not from the IT field, you have probably been in a similar position. This post may apply to your experience as well.)
So, how can we get better?
Here is one trick that can help a lot.
Spend time with children. If they are the curious, inquisitive type that always ask questions like “Why do airplanes fly?”, even better!
In addition to being fun, explaining complex concepts to children turned out to be one of the most valuable exercises in communication I ever had the chance to try.
Even if we are not dispensing unsolicited lectures, but we are rather asked a random question, chances are we will learn some interesting lessons about children.
Here are some examples:
- _They do not possess the same knowledge as we do_ → It is not that they are stupid: we just have to choose the proper language for them and pick the right level of abstraction
- _Their attention span is generally limited_ → We must be concise, stay on topic, and we should not answer their question starting from too far
- _They are not as much interested in the subject as we may be_ → There is no point in delving into details that are irrelevant to them. We must know when to stop: never start a treatise on Nuclear Physics when asked why stars shine.
- _They pay little attention to pure abstractions_ → We must leverage examples and analogies
It turns out that those principles are _exactly_ the same ones you could use to explain an abstract technical concept to a non technical colleague. It will not probably work for lambda-calculus, but I assure that it works for virtualization and many others.
But what if I hate children?
There are other activities that help getting better at communicating ideas. Here is a list of the most obvious ones, along with some non-obvious considerations.
- Read – good books are able to engage us and keep up our attention. Fiction is fun, but try to read some non-fiction about some subject you are not an expert about. By doing that, you will be in the exact situation as your non technical colleagues when you try to explain something from your field. Look for patterns that work (e.g. metaphors and analogies) and try to make them yours.
- Listen to good podcasts (e.g. Radiolab about science, Planet Money about economics) – those are a great example about how you can take a complex subject and make it accessible to almost anyone.
- Practice writing – written communication is a lot different from speech. Writing on a blog is a good starting point, but keep in mind that email works only if you write concise messages that can be acted upon. Focus on brevity and meaning.
- Teach – Teaching offers a great incentive in delving deeper in the fundamentals of your profession, but it also forces you to pay a lot of attention about whether your message is getting across and keep the right pace when explaining things.
While I still have lots to learn, I feel that in more than one occasion I was able to solve problems because I cared about expressing concepts in an effective way. I am still looking for ways to improve in this, however, so if you have any advice, please share.