Escaping the Stereotype: The Power of Communication in Software Engineering
Let's talk communication in the world of software engineering
The stereotypical image of the software engineer portrayed by the media is often one of a socially awkward male with questionable hygiene and difficulties interacting with others. Typically, they are depicted as the person staying in the background, passively observing the situation, only to suddenly disappear and return with a technological solution perfectly suited to solve the problem at hand.
Without a doubt, there are some kernels of truth behind this stereotype:
Computer science and software engineering have traditionally been male-dominated fields, although, luckily, this is slowly changing.
Some individuals may have turned to computers due to social awkwardness, preferring to spend time with a machine that "listens" rather than with people who might ignore or belittle them.
However, there's a profound dissonance here. Professional software engineering is a highly social activity. Software engineers spend a significant amount of their time communicating with each other, both face-to-face and in written form.
In this article, I will cover the topic of communication in the world of software engineering, showing that the stereotypical image is far from reality and aiming to convince you to invest time into becoming a better communicator.
The importance of communication
A typical software engineer spends a significant amount of time:
Providing and absorbing context on features
Describing technical limitations and their impact on the product
Discussing technical architecture
Providing feedback in code reviews
All of these activities are heavily social and require good communication skills to be performed effectively.
If engineers are not able to discuss new features with the Product Manager, collaboratively shaping the details and scope, it is almost impossible to deliver the intended feature on time.
If engineers are not able to describe how newly discovered technical limitations impact a feature, and cannot collaborate with the PM to find alternative solutions or re-scope, it’s inevitable that such limitations will sneak into the product and be discovered by customers.
If engineers are not able to collaborate in defining the software architecture, sharing doubts and suggestions on a proposal, the end result is likely to be less well-rounded, potentially leading to a design that does not adequately meet the needs of the project, lacks scalability, or contains critical flaws that could have been avoided.
If engineers are not able to provide constructive feedback in code reviews, exhibiting care for others, focusing on knowledge sharing, and demonstrating humility, it’s easy to be sucked into a downward spiral resulting in a toxic environment and the digregation of the team itself.
These are just some examples, but they should be enough to highlight how central a role communication plays in the software engineering world. All software engineers should regard communication as a skill just as essential as mastery of a programming language.
Communication as a skill
In my career, I have often witnessed colleagues removing themselves from situations that would force them to be at the forefront of communication, saying, “I’m not good at that stuff.” Most of the time, this happens in relation to activities not generally viewed as standard developer work, such as presentations or demos. However, sometimes the same attitude is exhibited regarding documentation or design work.
While avoiding work perceived as boring or uninteresting is certainly part of the motivation behind this behavior, another part is rooted in the belief of not being capable of communicating clearly and effectively. This was certainly true for me.
But if this is the case, there’s a (not so) easy solution. Just like almost everything in life, you can get better at something if you practice it.
You’ll probably never beat Marcel Jacobs in a 100m sprint, but with enough practice, you’ll be able to complete a marathon. Similarly, with communication, you might never be able to present like Steve Jobs, demo a product like Douglas Engelbart, or write a technical design document like that one highly respected engineer in your organization. However, with enough practice, you can become reasonably good at all of them.
One important caveat to consider is that practice does not mean just doing the thing. You can pick up a guitar and randomly strum its strings every day, but this alone won’t be enough to learn how to play.
To misquote Stephen King, the road to becoming a good communicator is like a wheel:
Study the medium: Whether it's face-to-face meetings, written reports, or presentations, understand the nuances of each communication channel.
Apply your learnings: Integrate your understanding of the specific medium into your communication style.
Gather feedback: Seek constructive criticism from colleagues or mentors.
Refine your approach: Incorporate the feedback to enhance your communication effectiveness.
The more you apply this process, the better you’ll become at that particular medium.
Characteristics of good communication
Each communication medium requires different strategies to be most effective, but there are some general principles at the core of good communication:
Target your audience: Tailor your message and delivery according to your audience. Discussing the technical details of an unforeseen issue slowing the development process requires a different approach than explaining to the PM how that issue impacts the scope and timeline of the feature.
Use simple language: Use the simplest language possible to explain a concept. Avoid using fancy words you just discovered in a thesaurus and steer clear of gratuitous technical jargon. Assume your audience may not have the same level of knowledge about the language you’re using or the domain you’re discussing.
Provide context: Do not assume people have prior knowledge. Before stating your conclusion, lay out the necessary context to understand your point. This ensures all members of the audience can follow you. For instance, suggesting jumping out of a second-floor window makes much more sense if people know the building is on fire and firefighters are ready to catch you with an airbag. Even those already familiar with the context may benefit from it, as they get a clearer idea of what was and wasn’t considered when forming your proposal. If you knew there were emergency stairs installed outside the building, you’d probably revise your plan to jump and instead use those.
Have a clear message: This may seem trivial, but to communicate effectively, you must have a clear idea of what you want to convey. This might be a single message or a few points. However, the more ideas you try to communicate, the harder it is for the audience to identify and internalize them. A good strategy is to focus on a core message and a few support points that validate and complement it.
Tell a story: People tend to forget details and facts but are much better at remembering stories. You can leverage this by including anecdotes that illustrate your point. For certain communication mediums like presentations and demos, you can structure your work as a tale with literal characters, goals, and development arcs. This will help the audience engage with the topic and make your message stick.
Listen actively: Communication is not just about telling people things; it also involves listening to what they have to say, focusing on their arguments, and trying to understand their core message. By listening actively, you’ll gain a better understanding of others’ perspectives and be in a better position to build on their arguments.
Communicate to grow
Effective communication skills are not just valued but often required for advancement to senior roles in many organizations. Through my own experience, I've observed that engineers who invest time in mastering these skills and demonstrate them in their work often attain senior titles much sooner than those solely focused on technical expertise.
If you find yourself as a junior or mid-level engineer aspiring for promotion, dedicating time to improving your communication abilities can make all the difference. The next time an opportunity arises to participate in a presentation, demo, or stakeholder meeting, consider volunteering yourself.
Conclusion
In the world of software engineering, I believe that communication is as crucial a skill as technical competency. Our work is essentially a social activity, revolving around the exchange of information and reaching agreements with others to develop software that delivers value to our customers.
If you haven't done so already, I hope that after reading this article, you'll consider dedicating some of your energy to improving your communication skills.
I myself am on that same journey, and what you just read is the result of one practice session. Following my improvement diagram, it is now time to gather feedback. So, I invite you to let me know what you think worked well and what could be improved. I'll try to incorporate your suggestions in my next article.
📚 Resources
How to Win Friends & Influence People by Dale Carnegie
Presentation Zen by Garr Reynolds
Communication for Engineers by Chris Laffra
On Writing by Stephen King
🤙 that’s it for this one
That is it from me! If you enjoyed (…or hated) this article let me know in the comments, and feel free to connect and reach out on LinkedIn.
Until the next one… allons-y!