Communication is frequently mentioned as one of the fundamental skills of a good software developer, but finding simple and actionable ways to get better is hard.
A couple of months ago I came to the realization that I needed to improve my communication skills, which was exacerbated by the fact that I work in a remote team. This is my intent to write down what worked for me over the last six months; the conclusions I came to after making an active effort to change my communication habits. Please take them with a grain of salt, it is a work in progress and it’s not backed with any more data than my own—probably very biased—experience.
For the sake of organizing things, I’ve grouped my conclusions into three categories: the other, the group and the self.
“The other” alludes to 1:1 communication with other teammates, it’s partially different from group communications because the dynamics and the constraints are different, but almost everything in this section can be extrapolated to the group section.
- It may sound cliché, but communication is a two-way street, don’t expect others to hear you if you don’t pay attention to them.
- Always make sure you understand 100% of what the other is trying to manifest. Ask any necessary follow-up questions until it’s crystal clear to you. Making “progress” based on the wrong assumptions wastes way more time and adds frustration to both sides.
- Try to find the balance between not asking questions and asking too many. It’s easier said than done, but at the end of the day it’s a muscle that needs to be exercised.
- If you are having a 1:1 conversation with somebody that needs your help, try to stay in the convo until the issue is sorted, async communication is great, but if you can unblock your teammate by giving your exclusive attention to the chat for 10 minutes it’s worth it.
“The group” alludes to 1:many communication, this includes chat groups, email threads with several recipients, pull requests, issue trackers, etc.
- If you are using pull requests or similar workflows to deal with team collaboration, treat them as documentation, put in as much detail as you can so other members in the team can read and understand what is going on.
- If you are not posting in chat groups because you don’t want to disturb the whole team, think about that twice: you don’t need to mention
@everyone every time you post, if you are working on something and you think that could be beneficial for other team members to know about that go ahead and post in the group channel.
- If you find anything interesting, whether is a tool or something related to the product that you are building, don’t keep it for yourself.
- Tools don’t matter that much: don’t be attached to them, communication is always possible when goodwill is present.
While the previous two sections are clearly self-actionable, I think there’s room for a third group: “the self”, here are some points that make your personal communication skills that are worth paying attention:
- Commit yourself to make an active effort to communicate better, communicating is hard.
- Take the time to re-read a long message before sending it, sometimes a brain dump is not clear for people that are not in your head!
- Try to be clean in regards to formatting, it helps to process the information.
- Find ways to express yourself and your work better, an image, a GIF or a video can show in a few seconds what could take a lot of written text.
Communication is a complex and difficult topic, I plan to expand and revisit this list in the future. If you have any tips or resources, please ping me at @roperzh!
I try to post once a week interesting stuff about programming, *nix, and the web.
If you’d like to be notified when a new post goes out, you can subscribe with the form below.