A few months ago I changed jobs. My previous job was at a large software company, with offices worldwide. My day-to-day activities routinely included conference calls with people in the Americas, Europe and Asia. For the most part, these were coordinations meetings. My most meaningful collaborations were with the people sitting around me: The members of my team.

My situation now is quite different. I work for a much smaller company, in number of total employees. My team all works at headquarters, but I come in most days to a company office located in a different city. In practice, this makes me a remote worker. I’ve had time to make some observations about that type of work. My experience relates specifically to software engineering, but I imagine that it could also apply to other similar type of work.

Embrace Asynchronous Communication

When working in the same office, it’s relatively easy to tell when it’s appropriate to interrupt someone: They are preparing coffee, returning from a break, or are in between meetings. When working remotely, I am more careful about other’s time, since I don’t want to break their concentration. This is especially true if I need some input, but don’t need it right now.

Asynchronous, written communication helps. I can send someone an email or ask a question in a PR. While they respond, I can continue with other tasks. At first, this switching between tasks was difficult. With practice and a good organization system, this has become much easier. Now, I generally work on my tasks until I need input, request it asynchronously and switch to something else in the meantime.

Work At The Same Time

While asynchronous communication makes it easier to work remotely, there is such a thing as too much of a good thing. If members of a team work in widely different timezones, effectively collaboration can be very slow. I’ve experience this before, when I was assigned to lead and teach a team based in India – 11.5 hours away. It was challenging, because all the communication was in written form and, for all intents and purposes, delayed for a full work day. No matter how small the question was, it was never answered until the next day.

Working at the same times as your co-wokers – at least for a portion of the work day – allows for faster feedback cycles and the possibility of jumping on a call when written communication just doesn’t cut it.

Video Calls

The next best thing to in-person communication is video calls. There is a certain awkwardness inherent in them. In particular it bothers me greatly that because of where the camera is positioned, participant never seem to look each other in the eyes. That nitpick notwithstanding, video chat is much richer than just audio: Seeing other’s facial expressions conveys a lot of meaning. Using your computer as a communication device has some issues. I always have many windows open. When on video calls, it’s easy to allow myself to get distracted and peak into another window: Email, chat, the code I was working on. Pretty soon, I’ve stoped paying attention to the conversation. To avoid that, I’ve started combating the temptation by minimizing all windows except for the video call, having the video window in my laptop’s screen while sitting directly in front of it– to simulate as much as possible looking at the other people in the eyes. This has made me much more engaged in conversations. If I still need to fidget with something, I doodle on paper or turn to my current favorite fidget: A Rubik’s cube.

For video calls to be effective, they need to be high quality. A reliable internet connection is needed, but not enough. There is no shortage of video call providers. I’ve tried many. Their quality is much different, and it makes a big difference. Poor audio quality, or “lossy” connections make it hard to have good conversations. In my experience, Zoom quality is much better than others, including Slack and Skype. Google Hangouts seems to have good quality, too, but I’ve only used it a handful of times.

In the same vein, as a software engineer, I find myself talking about code a lot. Sharing my screen, or seeing some else’s screen, has been essential to good communication. A picture is worth a thousand words.

Everyone Needs To Be Onboard

Collaborating remotely only works if others are willing to collaborate with you in that way. On teams were this is effective I’ve observed that:

  • All meetings are by default remote, even if most participants are sitting in their desks in the same building.
  • Any agreement reached or significant exchange of information exchanged in person needs a follow up for the benefit of remote workers. Posting about in Slack, email, or commenting on the next standup is usually enough. As a bonus, this minimizes misunderstandings for the original participants.

Occasional In-Person Collaboration

In-person communication is still the highest-bandwidth form of communication. I travel roughly every two-months to spend a few days with the team. Eating lunch or dinner, and having the occasional beer with teammates helps for closer relationships. I consider some travel to be a necessary evil of remote working.


So far, I’ve been really happy working remotely. Most challenges I’ve faced, have been solved easily, not in the least because I am lucky to have a very supporting team and manager.

If you are thinking of working remotely, I recommend you prepare yourself for it. I recommend reading Remote, by Jason Fried and David Heinemeier-Hanson.