Distributed Design: How Stack Overflow builds strong remote teams
Hello everyone, I’m Ted and I’m a Sr. Product Designer at Stack Overflow. I’m here to talk about how our design team works remotely.
Show of hands… how many people have had a job where everyone worked in an office? And during this time, how many have worked from home at some point? Keep your hand up if you’ve ever felt more productive working from home compared to the office.
When you’re in an office and want to get something important done and need to focus, what do you do? Grab a conference room. Find a remote part of the building. Come in early or leave late. Basically you want to get away from people, because when people are around interruptions inevitably happen:
While teams should communicate and collaborate often, people tend to work better with long intervals of uninterrupted, focused time. Sometimes this can be hard to find in an office, but not with remote working.
Remote working doesn’t just benefit employees. It allows companies to hire from a larger and more diverse talent pool instead of only those residing within an hour of the office. How many times have you heard a company say they hire “only the best?” All the best people do not live in one city or want to relocate.
Sorry, San Francisco.
Remote work also helps with employee retention. If an employee needs to be home more often for children or move for a spouse’s job or a sick relative, they don’t need to quit.
So remote working is great, right? Everyone wins! But I’m not here to talk about why remote working is great. I’m here to talk about how it actually happens at scale.
Companies are increasingly embracing the idea of “remote” teams, but what does that mean? How is being remote different from a normal office environment? And how can design teams work well together remotely?
If your team is thinking of going remote, or is interested in improving its existing remote policies, I’d like to offer some tips from my experience working remotely at Stack Overflow and how our design team operates day to day.
Remote-First vs. Remote Friendly
My former employer was ‘remote-friendly’ only in that it allowed us to work from home sometimes. Often referred to as “flexible working”... it’s like work-from-home-Fridays or if you have to wait for the cable guy. Here’s what it looked like for me:
- I worked from my dining room table with a spare laptop.
- The company used chat but it wasn’t fully adopted. Email and in-person conversations ruled the day. I missed a lot of decisions when not in the office.
- I’d phone into meetings using whatever earbuds and dongles I could find. We’d spend the first 5 minutes of every meeting troubleshooting the conference call software. I’d spend half the meeting trying to figure out a good time to interject that doesn’t interrupt someone.
Simply put, the company had a strong office culture and wasn’t dedicated to remote working. When there aren’t many remote employees and no policies or tools in place to accommodate them, these employees become lesser contributors, no matter how senior their job title. So how do you make sure companies don’t ignore remotes?
How remote-first is different
There’s a difference between being remote-friendly — hiring some workers in a different city or allowing employees to occasionally work from home — and remote-first, meaning you build your whole team around a workflow that embraces the concepts of remote work, whether or not everyone’s remote.
Despite having offices in NYC, London, and Munich… Stack Overflow is remote-first.
If one person’s remote, everyone’s remote. If you only take away one thing, make it be this! Everything else I’m gonna talk about stems from this principle.
Here’s what working remote-first looks like at Stack Overflow:
- Instead of working from a makeshift space in my house, I’m provided the same adjustable desk, aeron chair, good headset, and fast computer that folks in the office have.
- Everyone uses chat, Google Docs, and other web apps to make decisions. Everyone’s tuned into what’s happening, regardless of where they are.
- Everyone’s set up for video calls and dials into meetings, even if some of the attendees are in the same office.
Remote-first extends to every facet of the company culture. Whenever someone has an idea or wants to plan something, someone always asks “What about the remotes?”
- We’re having a summer party at the office? What about the remotes? If they can’t make it, give them a half day to enjoy wherever they are in the world.
- Swag at the office? What about the remotes? Make sure to factor in shipping costs so they all get swag too.
At Stack Overflow, remote workers are not treated as second class citizens. Everyone’s the same, regardless of geography. Someone always goes up to bat for the remotes. If the company can’t find a practical way to include everyone, we don’t do it.
Have a dedicated remote ops person
To help us follow through with all this, we have a person whose stated job is to make sure that remote employees have a specific person for questions and problems. Here’s ours:
Jess is a primary point of contact for remotes. She helps everyone outfit their home office with the same furniture and equipment in the Stack offices. And anything else within reason.
Jess also handles all the odd legalities that often come up when hiring internationally.
- Did you know that in Romania if someone is going to have a home office, they have to have it inspected by a fire marshal?
- Uruguay has very strict restrictions on voltage of household items, so getting a crank-lever standing desk to Montevideo was fun (read: not fun).
The same goes for things like payroll, taxation, benefits, etc. Having someone dedicated to tackling these unknown issues that come up across different states and countries is huge. This can be quite a burden for someone else to do on top of their regular job, so having a dedicated remote ops person is important.
Challenge: Remote Communication
Remote teams have to rely on asynchronous communication, the type of communication that occurs when participants aren’t necessarily online at the same time. Think: sending an email and waiting for a response. When done asynchronously, conversations that might take 2 minutes in real-time can take days. Projects run over, deadlines are missed.
Everything happens faster with synchronous communication that’s more common in an office. This includes brainstorming around a whiteboard, popping into someone’s office to ask a quick question, or hashing out a tricky design problem over lunch.
How can remotes work efficiently with their coworkers? What happens when everyone’s not working at the same time?
Not ALL communication at Stack Overflow is asynchronous. We thrive on a combination of synchronous and asynchronous communication.
Our workforce is spread from eastern Europe to Hawaii. Between 10am and 2pm EST, most of the company is working. This is when synchronous communication really kicks. It’s a popular time to schedule meetings, chat replies are faster, and it’s easier to pull someone into a video chat. This provides us with enough time overlap for those quick and timely discussions.
This time is optimal for more complex tasks like design critiques and shipping big features, like when we shipped a complete redesign of email preferences with team in six timezones.
As someone who works in the EST time zone, the biggest trouble I experience is protecting my lunchtime!
We use asynchronous communication throughout the day. Folks chime in on various work threads and coworkers can read and respond whenever. Here’s a snapshot of some of the tools we currently use:
As you may imagine, this creates a lot of notifications and transactional emails (yes we use email too), so we have to be good at managing our preferences. You know that tiny “manage email preferences” link at the bottom of every email? We use it.
The mix of synchronous and asynchronous communication gives us enough time to focus on deep work while ensuring we enough overlap to keep everyone on the same page and moving forward.
Challenge: Meetings / Critiques / Sprints / Code Reviews
In a typical office, you have face-to-face meetings. When a group of people is sitting around a table in the same room, they can provide each other with facial cues as to how they’re feeling and easily see when someone else is about to speak. These sort of micro-interactions are crucial during a meeting. The folks who are piped in as giant chat heads on a big screen have more trouble with this, which can lead to a few pain points:
- If remote meeting members want to raise a point or ask a question, it’s more difficult to get a word in.
- If something funny happens at the office, remote workers feel left out of the joke.
- If someone is talking quietly, it’s difficult for remote people to hear.
- If there’s a delay in the video, then people sitting in a conference room are having a different experience than those on the video call.
Design critiques, sprints, and code reviews run into similar issues since they often involve folks huddling around a screen or grabbing a room, having rapid discussions, and generating ideas from the chemistry.
How can we recreate these collaborative moments in a remote capacity?
If one person’s remote, everyone’s remote, remember? Here’s a typical team meeting. Everyone circled is in the New York office. The ones with arrows are sitting at the same desk. But here we all are, taking the same call in video chat. This is the amount of dedication we have. It’s pretty common to walk around the office and see two people on a Hangout even though their desks are next to each other! (It’s also possible they’re just lazy…).
If everyone takes meetings using video chat, the playing field is equal.
This extends to design critiques. Typically everyone hops on a video call, the presenter shares their screen, and we take notes in a Google doc. Sometimes we’ll use a tool like Invision to socialize designs and prototypes.
We use Netlify for our design system, and it has a handy feature that allows us to preview unmerged pull requests in a browser without having to set up everything locally. Handy for when socializing potentially risky code since you can just call someone over to your desk and have them look over your shoulder.
Sometimes a few of us will jam on a design together using Figma, a UI design tool like Sketch or Adobe that allows multiple people to edit the same file simultaneously.
Design sprints often have a step where everyone sketches out ideas, hangs them on a wall, and votes by placing a sticker on sketches they like. During remote design sprints, we take photos of our sketches and add them to a Google Slide deck or a Figma doc.
Trello can also be used here by creating a board, adding ideas as cards, and voting on cards.
For code reviews, tools like GitHub or Gitlab already have tools built in to do this remotely. We assign and @ping folks in pull requests for async review. Using inline comments is handy for getting granular. If a code change is large or urgent, folks might hop on a Hangout and go through it over a screen share, leaving comments as they chat. Every file, every commit, and even every line within a file all have their own URL that can be copied/pasted into chat, Google Docs, or wherever.
We’ve found there’s almost nothing that can’t be replicated online by either sharing a link or hopping on a video call and sharing a screen.
And sure, when you rely on things like video conferencing and chat this much, remote working has its quirks. Hiccups are unavoidable, but nothing you can’t work around.
On average, I go through 200-300 GB’s a month in video chat. For almost 2 years, my Polish coworker’s neighborhood hadn’t been wired for Internet and he had to buy 100G SIM cards. He’d have enough bandwidth to work but not enough to watch Netflix.
There are workarounds for everything.
Fun fact: Earlier this year his neighborhood finally got wired for Internet, but around the same time he became a father, so....... he still can’t watch Netflix.
Challenge: User Research
Running in-person research sessions is fairly straight-forward. Usually a test subject shows up to a physical location (like an office), meets the research team, and has everything provided and set up for them. There’s a lot of extra stuff you have to worry about when doing research remotely.
You might need to spend a few minutes troubleshooting their connection or tech before things even get started. If you’re testing a prototype, you’ll need to provide something they can test on their end. And if you’re concerned about leaking info, you’ll need a way to disable it so they can’t pass it around or access it after the session. Testing mobile apps is also more difficult remotely.
Compared to in person interviews, it’s hard to read body language or tell if someone’s paying attention during a remote research session. Compensation is also harder if you have participants in other countries (Amazon or Starbucks gift cards don’t work everywhere).
How do we overcome these hurdles when doing user research remotely?
We’ll do a lot to help reduce anxiety for folks who aren’t comfortable with remote. We like Google Hangouts/Meet because it runs in a browser and doesn’t require folks to download software. We’ll include a lot of detail in the invites, including explicit instructions on how to login and what tech to have ready. Time permitting, we’ll do pre-calls with folks to go over how things will work and what to expect. Before we started doing this, we’d schedule sessions for folks to test a clickable desktop prototype and had folks show up to the session using their phone. D’oh!
We usually record each session using Screenflow (tested beforehand) and take notes in a Google Doc. Depending on what we’re testing, a research session can be run any number of ways.
- For Interviews, we simply read questions from our script and take notes as subjects speak.
- For static designs, we share our screen and ask subjects to comment on what they see. We share designs in Sketch, Balsamiq, Google Slides, anything really.
- For interactive prototypes, we use Invision which allows us to supply a link so the subject can open a clickable prototype on their computer and share their screen as they talk through their experience. Sometimes we’ll use Zoom and grant remote access.
- For mobile designs, we use a technique called “Hug the Laptop,” meaning the subject points their computer camera at their phone so you can see what they’re doing.
Scheduling is often easier remotely since people can fit us in between tasks or meetings, something that’s not possible if they’re required to travel to an office. Overall this checks most of our boxes.
Spontaneous conversations at work are really important. Idle water cooler discussions or having lunch at the place down the block are great ways to bond with coworkers. But on a remote team, we can’t just meet at the coffee machine and discuss the latest episode of Stranger Things.
It feels common to create Slack channels for non-work interests, and we’re no different. We have channels for Game of Thrones, rock climbing, World Cup, and spanish language learners. They’re good for a quick distraction, but are not enough on their own. So how else do we strengthen personal connections remotely and avoid loneliness?
I don’t want to speak too much to this one because it varies from person to person and I’m not sure what to say about it other than “leaving your house is generally a good idea.”
That said, Stack Overflow tries to recreate fun office stuff in a remote capacity to encourage folks to interact with each other outside of meetings and project work.
We have “Remote Beverage Bashes” every Friday. Each week someone schedules a Zoom call and sets a theme that we never really follow. Employees grab a beverage of their choice and just chat. Folks can pop in to say hi or stay for the entire thing.
We have Stack Roulette, where folks are paired with two other employees from different parts of the company. The rules are similar to the bev bash; the idea is to meet folks outside your immediate team and just chat. Things like Donut productize this.
Each office has a Holiday party in December, so any remotes that are near the offices are invited. Every remote that’s too far away is offered a stipend to create their own festivities, whether it’s a really nice night out with their partners or just a big dinner for family.
About once a year, we bring all of our employees together for a week of face time. While we do talk about the company and projects, the focus is on camaraderie, not profits. “Once a year, we meet together for one week so we work well together the other 51” or something like that. We also have smaller team mini-meetups as company finances allow.
We have an education budget that we can use on conferences. Many times a few of us will pick the same conference and make a mini-meetup out of it.
We generally prioritize non-work-related communication. Example: We end our weekly design meeting with a fun activity, anything from question of the week to stretching to non-dominant-hand self-portrait.
There are so many ways to stretch video chat so it feels almost like being together. Of course, actually being together once in a while is crucial too.
Challenge: Work / Life Separation
When you work in a office, you leave the building in the evening and that’s it; new ideas typically wait until the next morning. You check email at night, but the work-life divide is clear. But with remote work, your wires can easily get crossed. Your personal space might also be your workplace, and there’s no physical difference between the two. It’s easier to lose track of time or go back to work after-hours.
Additionally working from home doesn't leave much time to wind down after work. I used to commute from my office for about 30 minutes, enough time to reflect on my work day and gradually change my thoughts from work-life to home-life. Now some evenings I go from a video meeting to a family dinner in 60 seconds, and my attention definitely suffers. I'll sometimes walk out of my office and start having a conversation with wife, only to ask her to repeat everything because I was still thinking about design systems or something.
How can remote teams protect employees from working off hours?
To help draw a line between personal and professional time, Remote Stackers are encouraged to have a dedicated space for work. I mentioned how Stack helps set up a home office for remotes and showed a photo of my office, but I didn’t show my favorite feature: the door. The door helps my family know when I’m at work and when I’m home.
Stack Overflow offers a small stipend to help cover things like working in coffee shops or co-working spaces.
Since different things work for different people, the company supports us when we experiment. One thing they don’t support or celebrate is working long hours or weekends. In fact, Stack Overflow advises us to set working hours in our calendar (to avoid off-hour meetings) and chat (to avoid someone pushing notifications through).
Whatever shape it takes, Stacks helps make sure its remote employees take steps to keep their work life separated from their personal life.
A few tips if you’re thinking about going remote
Maybe you’re thinking remote won’t work for your team. Or maybe you tried letting employees work from home and it didn’t go so well, so the idea is scrapped. I hope you took away a few tips on how Stack Overflow overcame the challenges that come with going remote, and if you decide to try (or try again), that you really try in earnest by adopting some remote-first policies.
- Have a proper infrastructure for remote work. Include apps for chat, video conferencing, a good headset, and fast internet.
- Encourage folks to dedicate a space that’s just for work.
- Work as if everyone’s remote (even when they’re not).
- Unless everyone’s in the same room, all meetings are held over videoconference.
- Make sure everyone feels equally part of the team and in the loop. It sucks to be a “second class citizen” just because you’re not in the office.
- Ask for feedback. Be proactive in learning how the team feels about working remotely.
- If you’ve hired people you trust (and if you haven’t, why not?), trust that they’re working.
Remember, remote-friendly is not remote-first. There is an enormous, Grand Canyon-sized difference between letting an employee work from home once in a while and calling yourself a “remote team.”
If you’re thinking of trying it, I hope I’ve given you a few ideas on how to do it right.