Working in a Distributed Engineering Team

Ostap Korkuna
People.ai Engineering
5 min readJul 15, 2019

Our team at People.ai is distributed across the globe with offices in San Francisco, Los Angeles, New York, and Kyiv. The engineering team is split almost equally between our two main offices, San Francisco and Kyiv. Having a distributed team comes with a set of benefits as well as challenges. Here’s what our experience at People.ai has been and some tips on how to improve working as a distributed team.

Let’s start with the benefits first.

The Benefits

There’s a reason to open engineering offices in multiple locations. Here’s how it benefits our engineering organization at People.ai:

  • Better hiring. One of the main reasons for tech companies to open remote offices these days is hiring. Competition for top talent is intense and companies are often looking across borders to find great engineers. At People.ai, having engineering offices in Silicon Valley and in Ukraine (both places have world-class engineers) helps us hire the best.
  • Shared on-call. Having engineers across time zones, especially across continents, helps make the burden of being on-call easier. Many distributed teams take advantage of split rotations, where two or even three offices change shifts during the day, avoiding the need to wake someone up at night when issues arise. Some companies make it a policy to have split rotations (e.g., the Site Reliability Engineering group at Google). We at People.ai also take advantage of split rotations to improve work-life balance for our engineers.
  • Clearer communication. When business hours between two offices don’t overlap much, you have to embrace asynchronous communication. Our teams at People.ai get limited hours each day of live communication between offices. The rest has to happen asynchronously: GitHub, Jira, Google Drive, even Slack can work. Of course, truly effective asynchronous communication is not solved by tools alone, you also have to think and process tasks accordingly. Remember, if you forget to respond in one of the channels today, the other person has to wait another work day to get things done. Make it a rule to start your day by unblocking others: review diffs, respond to comments in Gdocs and Jira, reply to urgent emails, etc. Another great benefit of asynchronous communication is that, unlike an in-person meeting or chat, it leaves a trace, so anyone can easily catch up on context if needed. It also drives better documentation (meeting notes, design docs, etc.)
  • Working from home. Distributed teams are accustomed to asynchronous communication and video conference meetings, so being able to work from home on occasion or a regular basis becomes a flex benefit that is attractive to new hires.

The Challenges

The biggest challenge with remote offices is, obviously, communication. When we’re talking about a fast-paced startup, effective communication becomes critical. Creating a good communication flow between distributed offices takes a combination of tooling, culture, and process. Let’s start with the essentials.

The tools

Here’s a basic list of tools we use for communication:

  • Slack. Hands down the most-used team chat out there. There are alternatives, of course. To be fair, any chat application, that supports 1-to-1 and group communication, will do. At People.ai, besides the channels covering global topics (#general, #engineering, #sales, etc.) and channels for each team, we also have a practice to create dedicated Slack channels for every major project or initiative — this really helps segment and focus our communication.
  • Zoom for video calls. Again, there are alternatives. That said, you’ll want something that can be integrated well into meeting rooms. BTW, since we mentioned meeting rooms, it’s important to have a good amount of those. If you’re a distributed team, every meeting room you have should be equipped for video calls. Another good solution for smaller offices are phone booths — you might even be able to build one yourself as a team building activity!
  • Google Drive. Planning, brainstorming, design reviews, and many other things that can be done in-person can also be partially made asynchronous thanks to online collaborative tools like Google Drive. With limited business hours overlapping across time zones, you want to make as many processes asynchronous as possible.
  • Gmail. Doesn’t need much explanation. Non-urgent communication fits perfectly in email.
  • Collaborative development tools. Since we’re talking about collaboration of engineering teams here, you’ll obviously have source control and code review tools (we use GitHub) as well as a task tracker (we use Jira). But that’s regardless if your team is distributed or not.

Tips for great virtual meetings

Having lots of virtual meetings is a given in distributed teams. Here are some tips for making those effective and enjoyable:

  • Follow basic video conferencing etiquette: Mute if your environment is noisy or when dialing into a large meeting; avoid heavy typing or opening that bag of chips right next to the table-mounted mic; avoid side talk; etc.
  • Turn the video on. While it’s a good practice to mute your mic when not speaking, it’s the opposite for the video. Make it a habit to have your video on. This is obvious for room to room calls, but even when calling from home, being visible helps you “connect” with the rest of the team.
  • Use solid audio/video equipment. One thing we learned is that investment in good audio/video equipment is essential. It might seem like “just” an annoying 0.5-second lag, but this can make the difference between feeling you’re in the conversation versus feeling you’re just listening to it.
  • Give a voice to “online” folks first. It’s much harder to jump into the conversation when you’re not in the room where the conversation happens — keep this in mind if you’re driving/moderating a meeting and make sure people “online” have a voice.
  • Take it offline. Remember, meeting time is limited. Things that can be discussed in a smaller group or asynchronously (e.g., in a Google Doc), probably should be “taken offline” — this trick alone can help you stay on track in most of your meetings.
  • Go remote occasionally, even if you don’t have to. This is especially useful if you’re a lead on the team or happen to drive meetings frequently. The best way to check if your meetings are “remote friendly” is to occasionally dial in remotely yourself even if you work from one of the main offices. See how it feels on the other side. Same goes for working from another office and joining meetings from there.
  • Remember video conference can’t replace in-person connection. People are social creatures and we’re pre-wired to connect with other people face to face. Meeting someone in-person is critical for building relationship and trust — both of these improve communication. So make sure you regularly travel to other offices to meet the people you work with. At People.ai, we’re trying to make sure every engineer travels to the other engineering office at least once a year, often every quarter.

Working as a distributed team at People.ai has been one of the keys to our success. What has been your experience? Comment below.

Apply Now By Visiting: https://people.ai/careers/

--

--