The world looks different than it did a few weeks ago. As a result of the health emergency brought about by the virus, many companies are urging workers to work from home if their jobs allow it. Just in the last week Microsoft, Twitter, Amazon, Apple and Facebook have all urged workers who can stay away from the office to do so, particularly in Washington state. This is likely to expand soon around the world.
Working remotely can be rewarding, and some studies suggest it can also boost productivity, but it also brings along some new challenges. If you are used to solving problems with your team in the same physical location by just yelling across the room or tapping someone’s shoulder, you need a new virtual way of addressing communication and collaboration.
At CodeStream, we have been remote since Day 1. In fact, our team has been working remotely for more than 20 years, over the course of four different startups. We built CodeStream specifically with remote teams in mind. Here are some things we have learned, along with five specific suggestions that will help developers work remotely more effectively.
Choose your toolset: You have probably been using many tools that already work well in a remote setting, just like they do in the office. If you are new to working remotely, you will need some version of these tools just to get started: video chat, team chat, a version control system and a task/issue tracker. At CodeStream we use Zoom for video chat, Slack for team chat, GitHub for version control and Trello for task/issue management. We also use CodeStream extensively to discuss code, do code reviews, create issues in Trello and automatically build a knowledge base, all without leaving the comfort of our IDE of choice. This is important because sharing knowledge was already the #1 challenge for developers, and that is about to get a little harder in a remote setting.
Learn to socialize remotely: Since lunch, grabbing coffee or walking down the hallway will not get you much social interaction when you work remotely, schedule socializing time in addition to whatever business reasons you have to do online meetings. At CodeStream, we have a short daily team meeting in the morning to review priorities and schedules, and a daily standup for the dev team, and we also schedule one on one “Let’s catch up” calls. Talking about more than work on a regular basis is part of staying happy in general and in sync with your team.
Get used to asynchronous code communication. Our own experience in building products remotely is the foundation of CodeStream. At the core of this type of remote work is solid communication, which includes a code discussion tool. We have posted on our blog before on this topic, and have highlighted how our customers iManage and Coformatique, among others, use Codestream to manage remote development. Unless you have a good code discussion tool in the mix, you may find getting answers is a bit more slowly than expected, directing your team to specific areas of improvement in the code is a little more cumbersome, and rather than boosting productivity you might boost frustration.
Capture and save interactions. When you work right next to your teammates you can talk about the issues at hand and build collective knowledge that lives in your collective memories. When developers work remotely, relying on ad-hoc conversations to solve issues becomes less frequent, but that is also a great opportunity to truly build referenceable knowledge. If you will have a discussion about something you might want to share with the whole team, you can record the video call on Zoom. If you have a question about how a certain function works in the code you are working on, you can ask your question using CodeStream and when you get the reply (which can come via Slack, MS Teams or email, in addition to in-editor), the Q&A pair will stay attached to the code it refers to for the whole team to see. If you use an issue tracker like Jira or Trello, connecting the issue to the code itself will reduce friction and make the information more accessible in context. Be more systematic in you approach to knowledge sharing and the whole company will benefit in the long run.
Communicate progress. When you do remote development work, your teammates and your manager have less opportunities to see what you are working on, unless you make your progress known, explicitly. You can update the team on Slack or MS Teams, or verbally during stand-up. In addition, when you push code, everyone involved will be able to see the changes you made. A more frequent and informative approach may be to comment on code using CodeStream, which also generates automatic updates on your activity feed. We are also working on a high-transparency mode that will allow managers and teammates to see what you are working on at any given moment, should you choose to share. Communicating progress is essential to good team dynamics, alignment and cohesion.
One of the largest organizations in the world who operate totally remotely is Toptal, and they published this comprehensive guide to help others learn from their experience.
Finally, we want to make ourselves available to assist in any way to help you adapt to the new situation and get more comfortable with remote work life. For a personal consultation, please email us at email@example.com and one of our founders will reach out to help.