Below is an article originally written by Hannah Henderson, Engineering Manager at PowerToFly Partner CircleCI, and published on March 31, 2020. Go to CircleCI's page on PowerToFly to see their open positions and learn more.
Communication is hard, communication on a remote team is harder. Fortunately, it can be as effective on a distributed team as it is on a colocated one, if not more so. This post delves into ways our team has learned to counter the two biggest challenges of remote communication: understanding tone and upholding a collaboration framework.
Although this post is written from my point of view of as an Engineering Manager, the practices described and templates linked are valuable for anyone on a remote team: they are the result of collaboration, ideas, and retrospective takeaways from people throughout our Engineering organization.
Getting to know a distributed team
Hyper-communication goes a long way towards ensuring that folks understand their peers' intent. This is especially true early in a groups' formation when trust, the hallmark of an effective team, is first getting built. To lay that foundation of mutual understanding, spend time getting to know the individuals on your team, and helping them get to know each other.
Do this by:
- Conducting asynchronous introductions to collect information and set expectations.
- Implementing these agreed-upon standards in synchronous sessions.
- Adjusting guidelines as-necessary based on input from the team.
Keep in mind that on a highly-distributed team, it can be difficult to find overlapping working hours on everyone's calendar. This overlap is synchronous time. Synchronous time is valuable, and should be treated as such. Know what you're hoping to achieve before entering synchronous interactions. Use your asynchronous time for focused individual work and to prepare for synchronous interactions.
When your team is forming, use asynchronous time to collect information, set expectations, and allow folks to define their own boundaries.
- Make sure you're familiar with the company's existing communication expectations. Stomping all over folks' toes is not a great way to build relationships. If you're new to a team, consider sending out a short message explaining that you'll be asking lots of questions while learning the ropes. If you use Slack, update your status to say something similar.
- Send out a detailed questionnaire to learn what the team needs (or, at the very least, what the members of the team think they need). If you're a manager stepping into a new team, I recommend sending out some variation of this form to solicit as much input as possible and to suss out the lay of the land.
- Define a team manifesto. Write this as soon as is reasonably possible. Broadly, this document should roll-up your understanding of what processes exist in order to codify healthy practices and value-signal. In the past, I've boiled this down to two sections:
- People (please make sure you're familiar with everyone's write-up) - I expect teammates to get to know each other as people with rich lives, curious interests, and priorities outside of work. I signal that I really care about this bit by populating my own profile first, and listing everyone's name as its own section.
- Team Process (you can skim this, it's good as a reference) - The frameworks defined in our team entente are important, and I sincerely hope we follow them. That said, process for the sake of process doesn't add value; I'm happy when we achieve our guidelines 80 percent of the time.
- Prepare for synchronous time. The logistics of organizing face-time on a distributed team can be difficult (especially during the month plus of global daylight savings misalignment). Ask folks to fill out a Team Schedule and remind them to populate their personal profile in the team manifesto.
Synchronous relationship building
Synchronous time is critical to the storming, norming, and performing phases of team development. Use this time to get to know your direct reports and to create space for folks on the team to get to know each other.
Note that asynchronous communication doesn't go away, it, along with synchronous communication, is further-established in your Communication Framework (below).
- Maximize your one-on-ones. Get to know your reports and drive alignment with this Getting to Know Each Other exercise. Consider grabbing some questions from this extensive set to round out subsequent 1:1s.
- Build in time for water cooler chit chat. Remote teams don't cross paths at lunch or in the hallway. Create space and synchronous time to connect. This may mean padding meetings with time for banter; it definitely means creating chat groups for shared interests (which are also async-friendly). We have #random, #wordnerds, #keyboards, #babies, and #bread, to name a few.
- Set up scheduled pairing. Randomly assign a pairing partner, and rotate partners once a week until everyone has paired with everyone else at least once. At the beginning of each matchup, the members of each pair should set up (best effort) three hour pairing blocks every day for the week. Sometimes, "best effort" only equates to an hour of pairing. Particularly on teams with a wide timezone spread, actually scheduling sessions ensures that folks are able to connect during their working hours.
For us, after a few rotations through the whole team, folks were comfortable reaching out and ad-hoc pairing. During one of our retrospective meetings, we decided to stop scheduled pairing.
- Make a team channel and share status updates. (This is also async-friendly.) We have a private team channel where folks post all manner of status updates: their good mornings when they hop online, notes about what they're picking up, lunch breaks, hot takes and random observations (debates about the plural form of "octopus" and whether or not an Xbox qualifies as an essential shelter-in-place item spring to mind).
We use JIRA and Namely, and have integrated Kanban board updates with the channel, as well as weekly updates from Namely about folks' PTO and birthdays.
Setting up a communication framework
On a remote team, it is especially easy for information to fall between the cracks. It is important to set up process that acts as a communication forcing function. There's no need to run around after folks trying to extract information and context, let your process be the heavy. Our team takes an Agile-inspired approach with a recurring two-week cycle of meetings.
Pro-tip: use the availability collected during asynchronous introductions to pick meeting times.
Meetings for knowledge transfer
Scrum-flavored methodologies are popular because they tend to work. That said, on a remote team the focus of each of these classic meetings is a bit different: they're all much more geared towards teasing out information disconnects and misalignment in advance.
Our standup is at the end of the day for our European teammates and in the morning for our West Coasters. These engineers won't overlap again for 20+ hours.
- Standup (30 minutes, daily). This daily check-in is our only guaranteed synchronous time on any given day. Instead of a 5-15 minute session, we block off 30 minutes so there's time to properly exchange context and also to chat. We review a Kanban board, and, importantly, the standup leader shares their screen and takes update notes on every card as an alignment forcing function. These notes often come in handy during cross-team collaboration and even during incidents (rather like a well-written git log that actually includes the "why".) Schedule standup back-to-back with other regular team meetings so that you can roll straight from one into another, and get out early if time allows.
- Planning (1 hour, weekly). We groom our backlog by Friday each week, and set up asynchronous points poker that everyone is expected to fill out by our Tuesday planning meeting. This allows us to spend the Planning meeting using estimates as indicators in deciding what treatment is appropriate for each card. Use this process to tease out context. Don't always ask the junior person to explain why they think something will be hard. DO ask a senior engineer that has given a high estimate to share what they know about the dragons in that space. Your goal is to expose information, not people. By the end of Planning, the cards in our Next Up column are ordered by priority and, we hope, are generally correct, and shovel-ready.
- Retrospective (1 hour, fortnightly). An excellent time to check in on team processes and to decide how they can be changed to better suit the needs of the team. We have a Slackbot reminder asking folks to add topics to the meeting agenda. As team-appropriate concerns are raised in 1:1s, I will often seed the retrospective document with them. These conversations have led to larger discussions on topics like when and how to give code review (at what point is asking for a complete overhaul OK? Not OK? How do we push back without escalating disagreement?) as well as pairing preferences and retrospectives of on-call escalations. As much as possible, the questions, concerns, and thoughts of the folks on the team should drive the content of this meeting.
- Big Picture (1 hour, fortnightly). This meeting reserves space for Product to keep Engineering in the loop about the grander vision of what we're doing and why. It should provide broader directional context for folks on the team so that:
- They understand the value of their work.
- They're better-equipped to make decisions that roll up into the company's goals.
For each of the above meetings, there's a more detailed breakdown in this Two weeks in the life of Foo Team meetings document, which is worth a skim. It includes recommendations on what to include in invite bodies (especially an agenda and a link to meeting notes stored in a single folder for improved discoverability), many examples of specific questions to ask, and several templates.
Calendar tips and tricks (because time zones are hard)
Configure your calendar to do some heavy lifting for you. I use Google Calendar, and have gotten tons of mileage from:
- Adding my working hours. This feature notifies folks that when they send invitations that fall outside of my office hours.
- Turning on world clock. Mine is configured to show the time in California, Japan, and Germany. When I click on a window in my calendar, the world clock displays local time for everyone at that window.
- Displaying secondary time zones. Mine are configured to show the time in Ireland and in California. My current team is spread across these time zones.
- Adding my Pagerduty rotation to my calendar. I do not want to be notified by Pagerduty unless I'm being paged. I live by my calendar, so this helps me see when I am on-call without the extra notifications.
- Adding the Zoom Scheduler to my calendar. Because 99.9% of my meetings are virtual, they all require a meeting room link. This annoying-to-configure extension puts a giant, handy "Make it a Zoom meeting" button on my draft calendar invites.
Effective remote communication requires intentionality. By adopting the practices in this guide, picking and choosing what works for your team, it's possible to establish the foundation of trust and communication framework that enable remote teams to flourish. The resulting communication will rival that of a collocated team, and will be inherently better for context-sharing and information discoverability.
Below is an article originally written by Rosalind Lutsky, Copywriter at PowerToFly Partner CircleCI, and published on March 19, 2020. Go to CircleCI's page on PowerToFly to see their open positions and learn more.
Remote work is top of mind right now for many employees, teams, families, and companies suddenly faced with a very new work situation. For many people, this is the first experience they've had working from home for an extended period while also trying to figure out how to establish a new normal.
On top of the standard challenges involved with switching to a fully-remote setup, many people are also dealing with a host of unexpected changes – kids who need to continue learning while schools are closed, pets jumping in to join meetings, partners and roommates talking from the next room. We're also worrying about the safety and health of our friends and families. It's a lot to deal with.
CircleCI has a fairly distributed workforce – about 40 percent of our company works remotely and several of our teams are completely remote – but we still work collaboratively every day, regardless of location. Over the years, many of our remote folks have come up with a host of useful tips on how to stay productive and happy as a fully remote employee.
These tips aren't meant to solve all of the new and challenging issues associated with working from home, but we do think that the strategies that our more experienced colleagues have developed can inform us as we quickly adjust to this completely new reality.
Here are the best reads by our employees about working from home:
- How to communicate on a remote team: tools and templates for engineers - Communication is hard, communication on a remote team is harder. Fortunately, it can be as effective on a distributed team as it is on a colocated one, if not more so. This post delves into ways our team has learned to counter the two biggest challenges of remote communication: understanding tone and upholding a collaboration framework.
- Maslow's hierarchy of remote worker needs - Remote work is an art and a science - it's iterative, and not necessarily something that can be perfected overnight. That being said, there are certain areas of focus that can help you figure out what works best for you more easily, which is exactly what Customer Engineering Operations Analyst, Liene Verzemnieks breaks down in this post.
- How my distributed team communicates so no context is left behind - A number of our engineering teams at CircleCI are mostly or fully distributed. One such team, led by Engineering Team Lead, Marek Nowak, has consolidated their four main tips for keeping their team productive and successful: overcommunication, pairing/collaborating, Slack usage, and meetings. This post describes how they've learned to use these tips to thrive as a fully distributed team.
- Tools for effective remote pairing - The Plans and Pricing team at CircleCI is 100% remote and pairs almost 100% of the time. While this might seem like a challenge, the team has developed a number of strategies that make them consistently successful at pair programming. In this post, we break down some of our best tips for remote pairing that other engineering teams trying this for the first time might find particularly useful.
- What it means to be remote-first vs. remote-friendly - There are tools and strategies that teams can use to keep everyone feeling supported, connected, and empowered - even at a distance. In this post, Product Manager, Rose Jen, details how CircleCI works to create a culture that puts remote employees first.
- What to expect as a remote CircleCI employee - We often get asked in interviews what it's like to work for a distributed team. In this post, we asked engineers from across the organization to describe their experience, and share some tips for working as a fully remote employee.
Below is an article originally written by Rose Jen, Product Manager at PowerToFly Partner CircleCI, and published on July 26, 2019. Go to CircleCI's page on PowerToFly to see their open positions and learn more.
Hi! I'm Rose Jen, a product manager at CircleCI. I've run a number of interviews here at CircleCI, and the #1 question I get asked is "What is your experience with the distributed culture at CircleCI?"
I have worked before in companies that allowed remote work. They've offered their teams access to tools to make remote working possible. I've also worked on teams which start out as colocated, but have become distributed by necessity as team members move. Often in these cases, the folks working remotely become increasingly left out and distanced from the rest of the team. Given those experiences, I was initially hesitant about working on a distributed team, specifically with concerns that communication could be difficult, or worse, that I might feel disconnected from my team. However, during my time here at CircleCI, I've noticed that the company's deliberate work on building an inclusive distributed culture put many of my fears at ease. And through this experience, I've seen the difference these efforts make, and learned that merely allowing employees to work remotely isn't enough.
While CircleCI has been a distributed team since the beginning, we do have an official headquarters in San Francisco. To support our teammates all over the globe feeling fully connected, included, and empowered, we work hard everyday toward building a "remote-first" culture. The difference between a team which allows remote work, and one which strives to be remote-first may sound like a technicality, but in practice makes a world of difference to our team members, regardless of where they are. Remote-first means that remote employees are not an afterthought. Being remote-first means being intentional about not just the tools that are used, but also how we plan a company culture to be as inclusive as possible of remote workers while allowing everyone to be the most productive.
For anyone considering joining us, or for those who are looking to foster a remote-first culture in their own organization, here are 5 ways of making it work:
Videoconferencing by default
We rely heavily on videoconferencing at CircleCI – it's quite impossible to go through a workday here without some sort of videoconferencing (we use Zoom). To be maximally inclusive, we are very specific about how we use videoconference tools. First, as a company we invest heavily in hardware and software that makes our reliance on vidoeconferencing work. Every single conference room at our office is fully video-enabled. On the flip side, we expect our employees to have access to high speed internet connections, and to work from a location where they can be clearly heard and seen – being unable to hear someone on a call won't cut it. The success of this tactic relies on everyone's participation. We also made the choice early on to grant every employee full access Zoom accounts – so every team member feels empowered to call meetings, whether large brainstorms or ad-hoc chats.
Additionally, we have practices about how we disseminate information from video meetings. We include a Zoom link with every event invite, so that no matter where the participants are, they can join. At CircleCI, we have a general rule that if there are team members in various time zones who won't be able to attend a meeting, we record the meeting and make it available for viewing at a later time. This gives folks in all time zones the flexibility to manage their day the way that best suits them.
Accessible, structured, and documented team meetings
At CircleCI, most product development teams have a variety of weekly get-togethers: planning meetings, daily standups, brainstorms, design reviews, and retros. These are all done via videoconferencing. Depending on the type of meeting, we also utilize digital tools (Google Docs, for example) that everyone has access to in realtime, through which we facilitate discussions and document decisions as they're made. For example, we use Google Docs to outline brainstorming or retro discussion topics. For planning meetings and standups, we go to our shared Jira board that shows our deliverables and progress, so that everyone is following along in realtime while the discussion is happening. For design reviews, we use Invision, a design prototype tool, that allows designs to be shared across the team and allows team members to provide comments. These have helped us have productive meetings anywhere the team is. I personally don't miss cramming an entire team into the same meeting room, and I'm certainly glad to be freed of the struggle to find available meeting rooms.
Document, document, document
Who doesn't love good documentation? In a remote-first environment, pay special attention to physical artifacts that may disadvantage team members who are not colocated with you. There will always be things that occur in realtime (quick sketches, Post-its) when a few folks are in the same room, but we take efforts to document and share the results of those IRL brainstorms with the team at large and take lots of pictures of any diagrams, roadmaps, and other outcomes, so that everyone can access them afterwards. Find ways to ensure that remote team members aren't just listening in, and look for ways they can participate in realtime. Zoom offers collaborative whiteboarding that you can do from inside a conference call. Even with the best tools, this process will often still be imperfect, and therefore requires mindfulness and some creativity from everyone involved.
No hallway conversations
This doesn't mean that you can't talk to your coworkers face-to-face or around the watercooler. But it does mean that if you have work-relevant conversations that are not digitally recorded, they should somehow get recorded after the fact: put a summary in chat, write up a short document, or find another way to make sure that information can be referred to by remote team members. We also encourage our team members to have impromptu "hallway" conversations over video, whether it's to ask a question or to quickly get the team aligned on a specific topic. Regardless of location, there are some things only a quick 1-on-1 chat can clear up.
Plan together time
Whenever possible, bring your distributed teams together! There's something really nice about being able to spend time with your far-away coworkers in real life. At CircleCI, we plan for teams to meet at a location together at least once a year. Departments do the same as well. It'll require serious logistical planning and a monetary budget, but it will be well worth it as a team-building investment.
What I've shared isn't a definitive guide to operating a distributed company – just some things I've noticed at CircleCI that have made a difference for me and my colleagues while working on a distributed team. It's important to mention: we are always re-evaluating our processes, and looking for places to refine. Things will change. For example, now that we are expanding more globally, it has changed the landscape of what being distributed really means (for example, getting a team together whose members are 1 hour apart vs. 8 hours may mean folks in San Francisco scheduling meetings earlier in the day to accommodate the schedules of team members across North/South America and Europe). These changes have pushed us to change the way we use our tools, and given us opportunities to continue to iterate and improve. Overall, if you're in an organization looking to become more remote-friendly, we encourage you to keep an open mind and experiment to find what will work best for you.
Below is an article originally written by Gillian Jakob Kieser at PowerToFly Partner CircleCI, and published on June 11, 2019. Go to CircleCI's page on PowerToFly to see their open positions and learn more.
A common question we hear in interviews is "What's it like to work remotely at CircleCI?" Well, it's many things, including wonderful, supportive, and, at times, challenging. As we grow our Engineering organization across Europe this year, we expect more folks to be curious about what it's like to work here on one of our distributed teams. We reached out to some of our engineers to find out what their experience is like, so you can hear it directly from some of the folks you might one day be working with.
Perspectives from the team
What do you enjoy about working remotely?
"The flexibility. Flexible hours mean that I can spend time with my family that I would otherwise spend commuting, and that my kids would be in daycare for longer." -Marc O'Morain, Senior Staff Engineer
"I am thankful for the team's ability to continue progressing on work while some of us are asleep. Our team's timezone distribution means I have on-call cover for my evenings and early mornings." -Dan Carley, SRE
"I appreciate that my team (and our company as a whole) make a clear effort to think about what it means to communicate asynchronously. People realize how crucial it is to think about the way we interact, and folks do the work." -Liene Verzemnieks, Support Engineer II
"I enjoy that we are all able to have flexible lives! Our team is passionate about our work and our mission, and I love seeing what everyone is doing outside of work (traveling, working out, cute babies, etc.). I feel extremely supported and cared for by everyone." -Jacque Garcia, Software Engineer
"The ability to make my own schedule. Working mornings/evenings with gym-lunch-power nap in the middle of the day has been a game changer." -Justin Cowperthwaite, Engineering Manager
What makes your team successful as a distributed team?
"We are all very understanding of each other's goals – we communicate regularly on what we are working on and accomplishing throughout the day, and have crushed difficult tasks together. Our team is passionate about our work and our mission." -Jacque
"Distributed communication means writing things down, which helps everyone: people returning from sick leave or holiday, as well as new people joining the company. We use our team Slack channels so that everyone can contribute to answering things we know or learning things we don't know." -Dan
"My team has been open to experiments over time (e.g. two weekly team meetings so everyone gets at least one in-person, real-time conversation with teammates, even if it's not everyone at once). We put a high priority on being kind to one another, and although we don't always talk about it as such, and we put a high priority on psychological safety (e.g. it's okay to ask "silly" questions, or not know the answer, or have feelings). The combination of regular conversations in a variety of formats, plus the CRITICAL glue of Small Hands (periodic in-person team gatherings), really does something magic." -Liene
What advice would you give new remote employees?
"Be open. The people are really nice and supportive." -Dan
"Make sure you plan out breaks and be intentional about creating social interaction with your coworkers (since it might not happen organically)." -Justin
"Get out to the office as much as you can, and for as long as you can when you first start. Try to meet as many folks in person as you can." -Marc
"Overcommunicate: err on the side of asking questions or reaching out (you can't stumble into water cooler conversations, so whatever you can do to create opportunities for communication is extra valuable). Also, define work/not-work, whether that's time-based (e.g. I work 8:00 - 17:00, and then I stop) or computer-based (e.g. this is my work computer, this is my personal computer)." -Liene
"It can be challenging to deal with uncertainty. When in doubt, get people involved." -Jacque
Tips for distributed teams
We've been a distributed organization since the very beginning. As we've grown, we've picked up quite a few lessons along the way (for example, on communicating asynchronously, pairing remotely, and distributed onboarding). For those considering joining our team, a well as those growing their own distributed teams, we'd like to share some of our favorite distributed team tips:
- Use asynchronous communication where possible when working across timezones, and make the best use of any synchronous communication time you have.
- Converse in common team channels rather than Direct Messages.
- Record meetings.
- Say hello and goodbye to your team each day to indicate when you're in/out.
- Make your working hours visible on your calendar, so it's clear when you're available and working.
- Leave summaries in Slack threads after team discussions or huddles.
- Pair often.
The best methods for working on a distributed team, whether at CircleCI or elsewhere, will vary by the team, the individuals on it, and the work you're trying to do. We encourage you to communicate with your teammates, test things out together, and overall be patient. Building a happy and successful team, especially a geographically distributed one, takes time, but having processes that work is worth the investment.