When I was working as an engineer, I would often hear people from non-tech departments complaining about programmers being difficult to talk to. In my opinion, there’s a grain of truth to that - but it’s not our fault.
Programming is a very niche field that is hard to talk about unless the person on the other side of the conversation knows what is going on. For developers, working with variables, functions, and methods is so routine we often forget not everyone is on the same page with us.
Also, software engineering has a strong solitary component - if you write code for hours without having to talk to anyone, before you know it, reading social cues will get more challenging.
So, if you are in software development, it is likely you’ll get out of the habit of communicating with the non-tech world (the majority of humanity). However, in our field, communication is important, and learning how to express concepts and ideas in a clear way or connect with teammates will propel your career.
In this post, I want to share a few tips that took me from a fairly reserved engineer to a confident manager of a team focused on sales and communication.
Personal communication: cracking the code
Regardless of the number of people and type of interaction, improving basic social skills will come in handy. I’ve seen a lot of my coder friends hide in the “I’m an introvert” bubble and give up on intentionally improving the way they interact with others.
Here are a few simple tips that, in my experience, improve water cooler chats with colleagues, help build connections with team leaders, and make the most out of a social environment.
- Trust your gut. As programmers, we often expect conversations to follow an “if-then” flow:- if I say this, my colleague will answer that, and so on. Obviously, communication is way more complex - there are inflections, connotations, gestures, and other nuances. I don’t think it’s possible to dissect and monitor all components of a conversation. That’s why, over time, I started focusing on aligning the emotional wavelength with that of my conversation partner. So, before I strike up a conversation with someone, I usually think about the feeling I want to transmit - being relaxed, spontaneous, or on the contrary - professional and down to business. Once you decide on the tone of the conversation and get yourself in the right state of mind, the people you are talking to are likelier to match the vibe.
- Don’t take all the responsibility (but don’t let it go completely). Another issue I’ve seen people struggle with is either feeling pressured to take full control of the conversation or hoping the other party will save the day. The first logic puts you under a lot of pressure and discourages you from reaching out to teammates or managers. The second state of mind gives you no control over the situation and leads to misunderstandings down the road. A more reasonable approach is in seeing a conversation as a two-way street. If it’s getting stale, it’s not your fault but there’s definitely something you can do to improve the flow: ask a question, make a joke, or offer a suggestion.
- Failure is a data point. A lot of people believe that social failures reflect their core self - it doesn’t. From a coder’s perspective, when we find bugs or see that a module failed a test, do we think that the entire project is no good and should never be brought to production? Usually, that’s not the case - everyone accepts bugs as part of development. Likewise, from time to time I see bugs and errors in social interactions but I discard the entire “codebase”. Instead, I take the time to pinpoint and address the issue, run a few more tests (talking to more people), and ship my improved conversational skills to the production.
- Find your version of Stack Overflow for social interactions. I am convinced that communication is a skill so the combination of learning resources and practice should help improve the outcome. Since, in programming, we don’t expect ourselves to know every function or method and ask online communities for help, the same should be true in the social context. When I want to put conscious effort into improving social skills, I go to books, communities, and YouTube channels. These resources guide me when I encounter an unknown social problem.
Functional communication: how to get things done
Building personal relationships with co-workers will make your career more fulfilling and enjoyable. At the same time, you want to stay productive and drive your projects forward.
That’s why a new - functional - layer is a crucial component of the communication infrastructure.
Here are the workplace communication tips I learned as an engineer and use to this day as a manager.
- When you discuss something verbally, follow it up by writing it down on Slack or other collaboration tools. In verbal communication, details often slip through the cracks - after a while, your teammate can forget or misinterpret what you had previously discussed. To avoid confrontation and unmet expectations, I put together a short summary of meetings and share it on Slack, Notion, or other platforms you are comfortable with.
- Don’t bottle up concerns. When I don’t understand project details or am unsure whether a manager’s approach is correct, I do my best to speak up. Doing a lackluster job because I am not aligned with the idea will set the entire project back. At the same time, rather than openly stating that something doesn’t work, I would for ways to understand the team leader’s train of thought - in most cases, there will be valid reasons that would get me on board with the project.
- Make catching up with teammates a routine procedure. Connecting with the rest of the team might feel difficult when you feel like you are getting in the way of people’s work. That’s why, instead of asking people for their time out of the blue, I schedule regular catch-up sessions (once a week, once in two weeks, or once a month) for asking questions, sharing knowledge, and discussing ideas.
- Writing and formatting go a long way. Workplace communication is in many ways similar to programming: we follow formatting and naming conventions to keep the code readable and neat. Similarly, catching spelling and grammar mistakes and making yourself clear in Slack messages and emails help me avoid miscommunication and make sure people understand my points. Since I am not a writing expert, I use Grammarly to check the tone of my messages and keep them clear and concise.
- Plan your interactions. In casual conversation, being spontaneous helps me be fun and keep an open mind. In work-related situations, jotting my talking points and outlining the problems I want to solve work way better. This way, I save the team time and can easily understand if a meeting was a success or a failure. I highly recommend setting a time window for conference calls (for example, 30-45 minutes) to keep everyone present in check - otherwise, we might keep going back and forth for hours. ## Leadership: how to motivate, inspire, and teach When I started my career in software development, I was more used to following than leading.
I still think that doing what needs to be done is an important skill - however, as I progressed in my career, I would get new ideas and have to pitch them to the team. Also, my manager would ask me to mentor junior engineers and I would realize I don’t know where to start.
That’s why communicating as a leader is important - and it has unique challenges.
In my case, the quest for leadership started when I switched from engineering to management. I had to communicate and delegate rather than just do the technical work. I already shared the lessons I learned during the transition - now I’d love to dive deeper into how I practiced communicating as a leader.
- Learn how to teach. Explaining ideas in an understandable way will be crucial in workplace communication. There are several ways to go about this - sometimes, I go through concepts out loud as if I’m teaching someone. Other times, I would volunteer to help teammates out just to practice mentoring. Also, watching educational content of any kind (The Coding Train or Derek Banas for coding, Veritasium or Kurzgesagt for broader science) shows how people explain complex ideas in a digestible fun way.
- Listen and care. One of the approaches to management is “servant leadership” which implies putting the team first. I advocate for this leadership style because it encourages leaders to appreciate their teams and puts the focus on employee well-being. I found that managing a team successfully is often about understanding what other people want and looking for ways to make their aspirations a reality. To make sure I know what my team wants, I welcome and listen to suggestions, and resist the urge to say “no” right away even if something seems impossible or wrong at first.
- Connect with the team. It is fascinating to me how helpful just being in the same space with your team is. The feeling of synergy and building projects together is empowering and helps boost engagement. The pandemic and shift to hybrid work made connecting with teammates harder but not impossible. To stay united no matter where we are, our team built oVice - a virtual office platform that helps our team and many others not lose connection and inspire each other to be more productive. One of my favorite management tactics is coming to the virtual office space as much as I can for work or meetings. When the rest of the team sees me being productive, they also feel motivated to finish their tasks.
- When you work on a project, think of it as your own. As I was working in development, I would get caught up in tasks someone wanted me to do and lose interest in a good result. At times I would feel like: “I’ll just get this over with so my manager is not breathing down my neck”. Eventually, I changed that mentality and started treating the projects I was engaged in as my own. This flipped a switch in how I saw my to-do list - I started applying a business perspective to my engineering efforts and looking for ways to optimize everything I’m working on. When I transitioned to a manager role, this mindset helped me lead teams, strategize, and make intelligent decisions. ## Final thoughts Software development is an amazing field because it teaches people so much - problem-solving, discipline, creativity, logical thinking, and more. However, communication is often overlooked in a developer’s formation, making engineers struggle in team settings.
In my opinion, knowing how to collaborate is the driving force behind successful projects - there’s only as much we can do on our own but nothing seems impossible with the right people by your side.
That’s why improving communication skills and finding the right tools to stay connected with your team is one of the most worthwhile investments one can make.
To help tech teams communicate seamlessly without needing a physical office, we built oVice. It is a virtual office platform that brings engineers, project managers, and teammates from other departments together for status updates, discussions, and networking.
Leaders who use our spaces are confident that no employees are overlooked. Teammates use oVice to make the most out of their time at the company and not feel like they missed out on amazing connections.
I started working at oVice as an engineer and now help grow the product as an operations manager.
I am really proud of the work we are doing on the product and business side - if you want to check it out or consider creating a virtual office space for your team (which I highly recommend), visit our tour space.
Top comments (2)
There’s only as much we can do on our own but nothing seems impossible with the right people by your side.
As a former engineer myself, this hit home in so many ways!
Looking forward to what comes next!
Amazing read! Real insightful.