Effective Ways to Improve Remote Communication
Effective communication is as vital as ever in the time of remote work. As software engineers, communication is not one of our strengths. Being remote makes it even more challenging.
All the communication best practices go out of the window. The visual cues like eye contact, body language, tonality are not available or degraded over video calls or Slack. It introduces room for misinterpretation, miscommunication, and frustration.
Engineering leaders have to step up and ensure that communication is happening. In fact, over-communication is necessary when there is no opportunity to ask a quick question. Without constant, productive communication, things go out of sync fast. Someone on the team has to take the lead facilitating remote meetings, help the team find the right format to continue the conversation while working from home.
Communication is not limited to an in-person conversation. It can have different forms. Some of the obvious candidates are documentation, async discussions, visuals, and meetings. But there are also more subtle ways to communicate like code review, code comments, issue tracking, release notes, blog posts, and more.
Documentation
Invest in the knowledge base for your team. A well organized, well written, and maintained wiki is a massive resource. It helps the engineers internally and everyone who is directly or indirectly involved with the team. Improving the collective knowledge base is an ongoing, never-ending process. I've been using Confluence, Notion, and Google docs to organize and share the wikis and meeting notes.
Every organization should have a mission, vision, projects' overviews, goals, priorities, technical wikis, and more readily available and easily discoverable. Rather than answering the same questions repeatedly, you can point people to your wiki or add the missing document. Some even collect all meeting notes for transparency and decision tracking. Expand on your internal jargon and acronyms. Even old-timers don't know all the terminology.
Adopt a habit of regularly reviewing the knowledge base to make sure it's updated and properly organized. It's your team's source of truth.
Asynchronous conversations
We're all busy. Working from home is still work. It can be even more challenging for some of us who have kids, family, and other responsibilities at home. Unexpected things come up. Be mindful next time you ask for help or want to chat "in-person". Asynchronous means non-blocking and doesn't happen at the same time.
My team heavily uses google docs, Slack, MS Teams, and email to communicate. We don't expect an immediate answer. Instead, it's a collaboration over time to reach an agreement, define goals, and propose a new architecture. Engineers make the best effort not interrupt each other unless it's time-sensitive. Some teams do standup updates over Slack.
Ask for opinions, feedback, questions as you go through your day. Keep it informal and fun. Treat it as your over the shoulder conversations in the office. It can be even more productive in some cases since the discussions are visible to more people for transparency without calling a big meeting. For those who interested, they can engage in the conversation or ignore if they choose to.
Visual collaboration
Diagrams, flowcharts, mindmaps, charts are another way to get your message across. Most people understand abstract concepts much better if explained visually. Tools like Miro, Lucidcharts, draw.io are en excellent replacement for your office whiteboard. Don't assume your colleagues know the context or share your state of mind. Use visuals as much as possible.
I find it helpful to build simple flowcharts in real-time while discussing architecture changes, new design, or complex systems. It's a shared view for participants to follow and make sure we're on the same page. It takes a lot of words to explain something that I can draw with 3-4 squares and arrows.
Meetings
My team doesn't like meetings, but everyone loves collaboration. The problem isn't meetings but rather the lack of planning. It's hard to collaborate in isolation and silence. That's why we have meetings. They can be great if everyone understands what the productive meetings look like and has the discipline to follow simple rules. Any productive meeting should have the following attributes:
- A clear goal and the agenda in the invite. Provide some preparation material, set the context and expectations. Explain why you need to steal 30 or 60 minutes of their time.
- It is limited to a small group. Keep the conversation focused and on point. Meetings over eight people won't engage all participants.
- Have an action plan with what, who, and when. Agree on the follow-up and next steps.
- Take notes and send the summary along with the action items after the meeting.
- An organizer is a facilitator who is responsible for keeping the conversation focused. People can get excited, take over the spotlight, change topics. Given the difference in personality types, it's essential to engage all participants.
As a participant, demand those things to protect your time and sanity. We all have been in bad meetings. Do a favor to other participants and the organizer, educate what a productive meeting should look like. Some even suggest declining a meeting with no clear goal or plan. It depends on the culture of the organization and what they allow.
In the remote setting, there are extra steps to improve the effectiveness of in-person conversations.
- Use video as much as possible. Agree in advance on the video conferencing platform. It has to be consistent and as easy as one button click to connect.
- Use a virtual whiteboard.
- Invest in the equipment, a good camera and microphone make a big difference.
- Engage people by asking questions directly, since the visual cues are not available. Silence doesn't always mean an agreement. Ideally, a meeting should be a conversation. Otherwise, it could've been an email.
- Stop and ask if everything is clear, and people still can hear you. Keep in mind that the focus and attention span is less than regular in-person conversation.
Summary
Software engineering is a team sport. There is no way to get around conversations, meetings, and collaboration. Invest in a centralized knowledge base system. Be mindful and intentional when interrupting someone, get to the point, formulate your thoughts and ideas. Repeat the message in different formats: written, visual, verbal until it sticks. Don't make an assumption others know the context.