Communication Skills: A Core Part of Software Engineering
Developing the skills tech companies look for
Communication skills. They come into play when writing documentation for frameworks and libraries, or when sending emails or slack messages to coworkers. They’re an important factor in how two or more people convey complex ideas and concepts to each other, which is core to collaborating as a software developer. And, more recently, communication skills have become an important part of software developer interviews, where most companies will check for a level of aptitude in a candidate’s communication skills.
But we throw communication in the soft skills category, where it lives as a second class citizen to the more dignified technical skills. Maybe it’s the name soft skills that gives it that feeling of being lesser-than, but communication skills are sometimes simply considered as nice to have. However, it is an imperative skill for a successful career in tech, as the need to communicate more complex ideas to a wider group of people becomes an increasingly important part of the job. It’s also an important factor for making the tech industry more inclusive by enabling people from different backgrounds to work well with each other on projects.
When we look at software development, we talk a lot about the amazing inventions and technologies that will move our global society one step further. But in reality, it’s people, real people — not machines, algorithms, or robots — who decide what gets built, how it gets built, and when and where it gets into the hands of people who’ll use it. There’s a very human aspect to software engineering, so in a big sense, software development requires very human skills in order to do the best job. So, it’s only natural that, in a highly detailed and skilled job like software development, communication is key.
Today I wanted to discuss three major steps and concepts that can help level up your communication skills:
- Start by working on your listening skills
- Express your ideas through public speaking
- Always strive to empathize with others
These steps set up a great foundation for communicating effectively with other people. They have all been important themes in my own software engineering career, and I believe these steps really helped to level up my communication skills early on.
Start With Listening
The first step in becoming a great communicator is to be a great listener.
As software engineers, we know that, when solving a problem, we need to gather as much information as possible in order to come up with the best solution and make the best decision. It turns out that this is a great practice for solving and for communicating, too. That’s because great communication happens when all parties reaches a point of mutual understanding.
We all communicate in vastly different ways. If you ask two people how to describe a technical concept, it’s likely that they’ll use very different sets of words to explain the same thing. A ton of things factor into how different people communicate with each other — different languages, upbringing, hometowns, etc.
But in a highly technical job like software engineering, it makes a huge difference to reach a mutual understanding. Differences in understanding of the implementation can lead to errors and bugs, extended project timelines, and disappointment from unmet expectations.
In order to reach a mutual understanding, it’s important to both convey your own thoughts and to fully listen to another person’s. We often don’t talk about listening skills being a part of communication in tech, so today I have three methods on how to be a better listener:
This is when you hear someone’s words, pause, and then play back to them what you thought they said in your own words. This creates an opportunity for yourself to ingest and present your own interpretation of someone’s meaning, and also creates a chance for the other person to correct your understanding in case it’s misaligned. Here’s an example:
Person 1: So how long do you think the project is going to take?
Person 2: Well, the back end is gonna take maybe like three days to make, and there’s also a dependency with another team, so maybe another two days too. The UI will take about six days right now given my estimates, and I’m also still waiting on them to finish up.
Person 1: (Playback) So it sounds like it’ll take about nine days at least, depending on other people and teams?
Person 2: That’s right!
The important part here is when Person 1 says “it sounds like” — and they say what they understood in their own words.
2. Allow other people to finish their thoughts before adding yours.
When having a conversation with someone, make sure to give them time to say everything they need before adding on to the conversation. If you have a question or idea, they might answer your question or get to the idea before you interject. It’s also impolite to cut someone off and can lead to poorly managed relationships with coworkers.
3. Use positive body language.
There’s a really big difference in the experience of talking to someone who is physically engaged versus physically disengaged in a conversation.
Showing engagement signals interest in the topic and leads way to a more productive and enthusiastic conversation. Ways to use positive body language include: a comfortable amount of eye contact, good posture, using hand gestures while speaking, and focusing on the conversation (e.g. don’t use your phone or while talking to someone).
These are all great ways to level up your listening skills — this will enable you to communicate effectively with people you work with on your team and at your company. But a big part of software engineering is also public speaking — this is not just limited to meetups and conferences, but also come to play within your company and team as well.
Express Your Ideas With Public Speaking
Public speaking is an important skill to work on as a software engineer. It’s one of the common ways that software engineers express ideas, whether that be in product demos, architectural overviews, or even standup updates where you’re talking to multiple people at once. It’s also worth noting that the more you advance in your career, the more public speaking you’re likely to encounter as your audience widens to more people and the scope of your work increases in size and complexity.
When working on your public speaking, it’s helpful to first visualize what a great example of public speaking looks like. Especially for technical talks, it’s usually characterized by:
- Great eye contact with the audience
- Talking at a volume where everyone can hear
- Not using crutch words like “um” or “uh” or “so”
- Using engaging gestures and body movements
- Speaking concisely.
This is obviously a lot to think about while speaking, so the most important thing you can do to get better at public speaking is to practice. Practice, practice, practice.
Taking an iterative approach to improving these skills enables you to start early and quickly and correct the mistakes that you make along the way. So, practice giving your speech or talk before you actually need to deliver it. Here are some tips to practice purposefully:
- Practice your speech in its entirety — don’t rush through it, and deliver it as you plan to later on.
- Practice delivering it in different settings: at home, at work, and most importantly, in the room (or a similar one) where you’ll be presenting.
- Have someone you trust to listen to your speech. Ask them for their honest feedback on what you could do better in each of the categories listed above, so that you can correct your behavior for next time.
- Practice a lot. The more you practice and catch yourself making these mistakes, the better you’ll get in no time.
Next, we’ll move on to an underlying theme that greatly improves communication in tech: Empathy.
Always Lead With Empathy When Communicating
Empathy is the act of putting yourself in someone else’s shoes to try to understand their feelings and ideas.
It’s a core part of the software engineering job because the stuff you’re making is for other people. You need to understand their needs about how they’ll use a product so that you can make a better product.
And, you’re making this stuff with other people. You’ll work with people in so many different roles — product managers, designers, data scientists, managers, other software engineers. And, all of them will be individually unique in how they communicate.
Putting yourself in their shoes will help you understand how to effectively communicate with them so that you can reach mutual understanding.
So, how do you get better at empathy? I think that it’s a combination of being a great listener and establishing strong relationships with the people around you. Learning about other people’s backgrounds, their motivations, and their passions will help you to see the bigger picture of what makes that person unique. Understanding where a person is coming from helps you to shift your communication style accordingly.
For example, if someone is new to your company, you’ll know to explain acronyms that are commonly used internally, since they probably don’t know them yet. Alternatively, if you’re talking to someone whose role doesn’t require a technical background, it could be important to use easy-to-understand technical terms, or to explain those concepts as you go so that they can be on the same page as you.
Using empathy in communication doesn’t mean that you have to be judgmental — it means the opposite. It’s counterproductive to judge someone for what they know and what they don’t know . Helping each other get to a common understanding by using common language is a key ingredient in successful communication.
All of these skills — listening, public speaking, and empathy — can ultimately help you and others reach common ground and mutual understanding about ideas, thoughts, and work. This is the most important thing about communication.
As a tech community, we really shouldn’t discount these skills — they help move projects, companies, and organizations forward. It’s an important skill to look for in software engineering interviews and should be an expectation of people in technical roles. Because when software engineers communicate effectively together, great things happen — great things get built!