This article reveals five nonobvious techniques that make remote work successful at Stack Overflow.
Remote work has been part of the engineering culture at Stack Overflow from the outset. Some 80% of the engineering department works remotely. This enables the company to hire top engineers from around the world, not just from the New York City area (40% of the company worked remotely prior to the COVID-19 lockdown; 100% during the lockdown). Even employees who do not work remotely must work in ways that are remote-friendly.
For some companies, working remotely was a new thing when the COVID-19 pandemic lockdowns began. At first the problems were technical: IT departments had to ramp up VPN (virtual private network) capacity, human resources and infosec departments had to adjust policies, and everyone struggled with microphones, cameras, and videoconferencing software.
Once those technical issues are resolved, the social issues become more apparent. How do you strike up a conversation as you used to do in the office? How do you know when it is appropriate to reach out to someone? How do you prevent loneliness and isolation?
Here are my top five favorite techniques Stack Overflow uses to make remote work successful on a social level.
Tip #1: If Anyone is Remote, We're All Remote
Meetings should be either 100% in-person, or 100% remote; no mixed meetings.
Ever been in a conference room with a bunch of people plus one person participating by phone or videoconference? It never works. The one remote participant can't hear the conversation, can't see what everyone else is seeing, and so on. He or she can't authentically participate.
At Stack Overflow we recognized this years ago and adopted a rule: If one person is remote, we're all remote. This means everyone who is physically present leaves the conference room, goes back to their desks, and we conduct the meeting using desktop videoconferencing.
During the COVID-19 lockdown your entire company may be remote, but this is a good policy to adopt when you return to the office.
This may not be an option for companies with open floor plans, however, where participants videoconferencing from their desks may disturb their neighbors. How can you make mixed meetings work? Where I've observed them working well required two ingredients: First, the conference-room design was meticulously refined and adjusted over time (this is rarer—and more expensive—than you would think); second, and the biggest determinant, was the degree to which all those in the meeting were aware of the remote participants. It requires a learned skill of being vigilant for clues that someone is having difficulty in participating and then taking corrective action. Everyone, not just the facilitator, needs to be mindful of this.
Tip #2: Accurate Chat Status
Set your chat status to away when you are away. Set it to available when you are available.
A chat system isn't just about text chatting. It fulfills the subtler purpose of indicating if a participant is present.
In meatspace you don't walk up to someone's desk and start talking. First you notice if the person is there. Talking to an empty chair is ineffective and may worry your coworkers who witness it.
Instead, you look for social clues. A shut door indicates someone needs privacy. A worker in a cubicle wearing headphones may be indicating a need for extreme focus. Someone standing up to stretch is signaling a break. Two people talking about last night's game indicates that others may join in, or may interrupt for work-related matters.
The status presented in your chat system conveys similar information. I prefer to have my status set automatically. For example, I use a feature that automatically changes my status to "In a meeting" if my Google Calendar indicates that. People get automated warnings if they try to chat to me outside of normal working hours. A "Do not disturb" feature helps control when my phone beeps for new messages or when I can simply sleep.
Since many schools and child-care facilities are closed now, parents are balancing child care and work in unexpected ways, often with highly dynamic schedules. One way we can support them is to respect status messages such as "Child care… be back in an hour" or simply "Child care," more likely to be used when there is no time to set a more detailed explanation because the kid is painting the cat with chocolate milk.
Set your status to indicate if you are away, present, present but too busy to be disturbed, and so on. Encourage your team to do the same.
Speaking of chat rooms, don't make finding the right room a guessing game. Yes, it's cute and funny to have #kittens as the chat room of the team run by a manager known for loving cats. A month later, however, nobody is laughing and it's just annoying to remember the name.
At Stack Overflow we're not super strict about names, but most rooms have prefixes such as #team-, #project-, #account-, #fun-, and so on. Need to find the SRE team? You can bet we're in #team-sre. Very little guessing. By using prefixes, not suffixes, the long list of room names sorts related names together.
Tip #3: The Quick Chat Protocol
Establish a low-overhead way to start a quick conversation.
In meatspace you can ask a quick question by just blurting it out. You are sitting near a coworker, so you can just say, "Got a second? Let's talk about the Tomato Incident." If the person is available, you just start talking about it.
Chat rooms are good for quick questions that can be explained in a few sentences. Some questions, however, are more easily explained conversationally. In such situations people often do a complicated dance in an attempt to be polite.
Me: Got a sec?
Me: I have a question about the Tomato Incident.
Me: Can we chat by video?
You: Sure. Want me to make the room or should you?
Me: I'll do it.
By the time we've negotiated when, how, and where we're going to talk, we've lost momentum.
Take all that overhead, multiply it by the number of casual conversations you have with coworkers, and it totals to a big waste of time. Such etiquette is useful when talking to someone you don't know well. For a direct coworker, however, you need a protocol with low overhead—as low as peeking over a cubicle wall.
At Stack Overflow, we follow some easy rules to avoid the extended conversations. We say in chat, for example, "Quick hangout? Tomato Incident." If available, your contact replies with a link to a chatroom. No formalities, no small talk, no confusion over who creates the session. Otherwise, the contact responds, "Not now," and it is up to the requester to make an appointment.
It looks like this:
Me: Quick chat? Tomato Incident.
Me: Quick chat? Tomato Incident.
You: Busy right now, put something on my gcal please.
When teams have prearranged to compress conversations that way, everyone benefits.
In general, we want the overhead of starting a conversation to match the type of meeting. Important meetings with many people require planning, careful scheduling, and perhaps even a rehearsal. That's an appropriate amount of overhead. Impromptu meetings should have minimal startup overhead. If a brief conversation requires custom-printed invitations with embossed lettering, a save-this-date card, and a return envelope, you're doing it wrong.
The quick chat protocol has become the virtual equivalent of social customs such as visiting someone's office, striking up a quick conversation when you pass by someone in the hallway, or spotting someone at the water cooler and approaching with a question.
One feature that enables low-overhead conversations is a video-chat system that supports permanent meeting-room URLs. This eliminates the need to pause and "create a room." Zoom has PMIs (personal meeting IDs). As of this writing, Google Meet doesn't have an equivalent, but you can schedule a meeting in Google Calendar in the future and use the embedded Meet URL as your PMI. (There are services that will automate this for you, as well as one open source project; https://github.com/g3rv4/GMeet.)
Tip #4: Idling in a Videoconference Room
Work silently together in a videoconference room.
Working remotely can be lonely. Chat rooms and video conferences go only so far.
At Stack Overflow many teams hang out together in a videoconference even when not having a meeting. This is in addition to their regular text chat room. People just stay connected to the video chat, often with audio muted, and silently work independently. They unmute for quick questions or to consult on an idea. People drop out if they have another meeting, need to be alone, or need to focus.
Think of this as emulating the physical world where many people work in the same room or work in an open floor plan. A manager who consistently hangs out in the videoconference is simulating an open-door policy, signaling permission to go in and talk. A friend who works in child care calls this "nerd parallel play." I'm going to assume she means it as a compliment.
It may seem like a waste of bandwidth to be in a videoconference when nobody is talking, but it helps fight loneliness and builds team cohesion.
Some teams do this more than others. Some do it during specific hours of the day. The phrase "I'm idling in perma" translates to "I'm working. I'll be in the permanent video chat room. Feel free to join and not talk."
Tip #5: Schedule Video-Chat Social Events
Create social events specifically for remote workers.
Stack hosts regular social events via videoconference. During the lockdown your family might be doing this for holidays, birthdays, anniversaries, and so on. Why not do it at work too?
A coworker set up daily video chats during lunch. Volunteers have been doing weekly cooking lessons. A film club has popped up; they agree to all watch the same film during the week and then discuss it during lunch on Friday. Diversity employee resource groups and affinity groups host regular video meetups with no agenda other than to be social.
Like many startups, we normally have a "beer bash" at the end of the week. Our virtual version of this is called "the remote bev bash." Before the lockdown this was a smaller event; now it is companywide. It is interesting to see what new concoctions people bring each week.
Let's Stop Apologizing for Normality
While this is not an official Stack Overflow policy, I advocate that we should stop apologizing for normality.
I've noticed that some people spend an inordinate amount of time apologizing in videoconferences for technical problems, difficulty finding the mute button, or children running into the room unexpectedly. In the new world of remote work these events are normal. Until videoconference software works perfectly, makes the mute button easier to find, and schools reopen, these situations will just be part of everyday life. If they are normal, we shouldn't have to apologize for them. It is a waste of time, multiplied by the number of people in the meeting.
Instead, we should simply acknowledge what happened and move on by saying something like "Thank you for waiting while I fixed my camera" or "Ah, there's the unmute button," or "That's my kid who just ran by singing the Lego song, no need to applaud."
The physical world has social conventions around conversations and communication that we use without even thinking. As we move to a remote-work world, we have to be more intentional to create such conventions. Developing these social norms is an ongoing commitment that outlasts initial technical details of VPN and desktop videoconference software configuration.
Companies that previously forbade remote work can no longer deny its benefits. Once the pandemic-related lockdowns are over, many people will continue working remotely. Those who return to the office will need to work in ways that are compatible with their remotely working associates.
Every company is different. The techniques discussed in this article work for Stack Overflow but might not work everywhere. Give them a try and see what works for you.
Acknowledgment. Thanks to my co-workers at Stack Overflow Inc. for their feedback.
Copyright held by author/owner. Publication rights licensed to ACM.
Request permission to publish from [email protected]
The Digital Library is published by the Association for Computing Machinery. Copyright © 2020 ACM, Inc.