The best feedback I’ve received in my career is that I have a great ability to explain highly technical concepts in a way that makes sense to even non technical folks. I wear this badge with pride – and its carried over well to my Youtube Channel where I have over 250 uploads and nearly 2.5 million views.
As a Software Developer, communication skills aren’t exactly the expertise of our demographic. We are usually quiet, nerdy, math types. We are the kind of people that would prefer spending our Friday nights reading wikipedia, or working on a side-project rather than spending the night out with friends.
So many of us struggle with effectively communicating, especially when it comes to our day jobs. We drop uhms, aws, and ya’knows throughout our sentences–and hey, I still do this from time to time. But I certainly have improved – and so can you.
That’s what this article is all about. Its about the single most useful advice I’ve received on how to grow my communication skills to explain technical concepts simply. But I’m hoping you’ll find this helpful.
Here’s an outline of what we’ll be discussing:
- Why do Developers Suck at Explaining Things?
- Whats the Secret to Being an Effective Communicator?
- Real Life Applications
Why Do Developers Suck at Explaining Things?
As we touched on previously, our demographic is not a exactly a social crowd. In high school, most of us trended towards closed book subjects that can be studied in isolation – maths, sciences, and physics to name a few.
In this world, communication is largely optional. Unless you’re in a study group (I’d like to assume only a few of us that had the social abilities to participate in these), you probably never really needed or wanted to communicate with classmates. Sure, a friend or two here and there to let us know what we missed if we skipped a class, but a friends as classmates? Unlikely.
As we finished our schooling and entered the job market, we started realizing a glaring gap. We are just terrible communicators! One of the root causes is our educational upbringing. By focusing on the maths and sciences, we never really needed to develop our communication skills. Our marks were our bible and we excelled at them shown through assignments and exam marks.
So it happens that most of us start our first jobs and get quickly overwhelmed. How do these senior engineers explain these concepts with such grace? Harnessing the complicated abstract concepts and delivering them so concisely and without hesitation? We explore the answer to this question below.
The Secret to Being an Effective Communicator
When reviewing at some of my most popular youtube videos, such as this one (also below) explaining the difference between two AWS services, I came to an exciting conclusion. I realized that the videos that tended to do best on my channel leveraged real life examples thoroughly to explain the technical concepts.
Not in the sense of a magical fairy tale story, but of a practical examples related to the topic at hand. In my most popular videos, I started approaching the topic not by defining the concept itself, but by giving a relatable example that one can relate to.
We humans are social creatures. We love storytelling. Reaching back to our neanderthal ancestry, stories were one of the many ways cultures were formed. Our brains are hard wired to get engaged and captivated by stories. Leveraging this innate tendency to have higher engagement levels during stories, we can more effectively explain concepts, including software concepts.
Lets take an example.
In one of my popular videos, I explain the concept of Pub-Sub–a common distributed system pattern. It consists of two actors – The Publisher (or the one who broadcasts a message out into the void, usually related to a certain topic), and The Subscriber (the one who is on the receiving end of this relationship, and who wants to get notified when changes occur).
These two roles seem straightforward, but what do they actually mean? Why is this important, and why should I care?
It may not be immediately clear just by having information being thrown at you, but by leveraging storytelling through an example, we can start to see the advantages.
The way I explained it in my youtube video includes visual aids relating to an example of a Credit Card transaction processing system. Now Imagine we have two parties, the person that owns a system that is responsible for providing CRUD apis to transactions, and stores them durably in a data store. In a Service Oriented Architecture world, we may call this the CreditCardTransactionService.
Now suppose we have a group of developers building an analytics platform. They want to capture credit card transactions and update a daily dashboard on the number of purchases, refunds, and the total value spent. This needs to happen in near real time. We might call this service the CreditCardDashboardService.
In this relationship, if you are the individual that owns the CreditCardTransactionService, you ‘own’ the transactions themselves and would likely publish new tranasction events to a topic such as Apache Kafka or AWS SNS. In this case, you are the publisher – you are the person that owns the data and wants to tell others about it.
If we take the perspective of CreditCardDashboardService, we are clients. We care about consuming information from the authority in order to serve our purpose. Therefore we are the subscriber.
To simplify this even further, if you own a domain model and want to tell others about it (in an asynchronous and decoupled manner), you are the publisher. And if you are on the other end and want to find out when an event occurs, you are the subscriber.
Did it Work?
So did it work? Did you feel like you were able to grasp this concept with ease? If you didn’t tell me why below in the comments. And if it did, also let me know down below.
Applying These Lessons in Your Daily Life
This strategy is a simple and straightforward way to enhancing your communication abilities. It has truly done me wonders and allowed me to teach hundreds of thousands of individuals complicated topics, while stile providing an enjoyable experience.
Remember, learning how to communicate effectively is a long-game type of play. You don’t get better at this overnight. Its bydeliberate practice and experience do you develop the abilities to explain these complicated software concepts gracefully. Don’t give up hope if you flop on your first attempt – it all gets better in time.
The next time you’re try to explain a complicated topic and having difficulty getting your point across, I invite you to explain through examples. You’ll often find that boiling these concepts down to relatable scenarios will greatly enhance your audience’s ability to understand the subject matter and retain it moving forward.