A lot of energy has been expended over the last few years debating the merits of remote work. Unfortunately, not much information is shared about how to setup remote work so that you and your team can be successful.
For over three years, Zapier has ran as a remote team. We've grown from three founders to over twenty people. We've gotten a lot of questions about how we make it work. This chapter will explain how we make it work.
Now, if you want to debate what's best—remote work or co-located work—this chapter isn't for you. But, if you want some ideas on how one team has setup their team to be successful at remote work, then stick around. This chapter is for you.
From day one, (October 2011) Zapier has always been a distributed team. Even though Bryan, Mike and I lived in the same city, we had different schedules and were bootstrapping Zapier on the side of our day jobs and school. We worked on Zapier in every spare moment we each had, but those moments didn't magically line up at the same time where we could work in the same room, so by necessity we became a remote team.
In June of 2012, we were accepted into Y Combinator and moved into a shared apartment in Mountain View, California. The next three months were the only period in our company's history where everyone has been in the same city at the same time.
In August of 2012, Mike moved back to Missouri while his girlfriend was graduating law school, and in October of 2012 we started hiring. And since we were already a distributed team it made sense to keep moving that way since we could hire people we knew were awesome, but just didn't live in the places we lived.
Over the course of 41 months, we've learned a few things about building and managing a remote team. There are others with more experience at this than us. I'm not sure how large it will scale, though companies like GitHub, Automattic, Citrix and others have proven that it can be done. But if you're a small team and want to dip your toes into remote work, consider this your crash course.
It's highly unlikely you could pluck any random set of people, at any random moment in history, dispersed around the globe, put them together and expect them to build something amazing.
We've found there are three important ingredients to making remote work, well, work: Team, Tools, and Process.
By far the most important of the ingredients is the team. Not everyone can work in a remote environment. Not everyone can manage a remote environment (though I suspect with a bit of time and learning that a lot of managers could figure out how to make it work). Therefore, it's important to assemble a team who is capable of executing in a remote environment. Here's what has made the best remote workers for us:
1. Hire Doers
Doers will get stuff done even if they are in Timbuktu. You don't have to give doers tasks to know that something will get done. You'll still have to provide direction and guidance around the most important things to be executed, but in the absence of that, a doer will make something happen.
2. Hire people you can trust
Remote work stops working when you can't trust the person on the other end of the line. If you continually find yourself worrying what someone is doing, then you are spending brain cycles focusing on something other than the product. Trust is key.
3. Trust the people you hire
The flip side of this is you also need to exhibit trust with the people you hire. As a manager, you need to learn to manage by expectations rather than by "butts in seat," so make sure you can show trust in those you hire.
4. Hire people who can write
In a co-located office, a lot of information is shared in-person. In a remote situation, everything is shared via written communication. Communication is one of the most important parts of remote team. Therefore, good writers are valuable.
5. Hire people who are ok without a social workplace
It'll be important to try to create some social aspects with a remote team. But the truth of the matter is that remote workplaces are usually less social than co-located ones. People on remote teams need to be ok with that. And the best remote workers will thrive in this type of environment.
Tools are important in a remote workplace because they enable you to better organize the team and keep everyone on the same page.
In a co-located facility you can always round up the team for an all-hands meeting to steer everyone on track. In a remote team, you'll need the right tools to make sure everyone stays on the same page and can continue to execute without a physical person standing next to them.
Here are some tools we've found handy as a team of 20. These tools have changed quite a bit over the years. Check out previous versions of this post to see what's changed.
Slack is our virtual office. If you're in Slack then you're at work. A group chat room like Slack is also great at creating camaraderie.
Depending on your team size, you'll want to make use of channels in Slack as well. At a certain size it can start to get noisy, so it makes sense to section off rooms into things like "water cooler", "engineering", "marketing", etc. I would hold off on this as long as possible though.
At around 10 people we started creating multiple channels. We now have 23 channels (some which need to be archived). Active ones include functional channels like #marketing, #support and #hacking along with project specific channels like #min and #pricing.
Async is an internal tool we built. It's sort of like a blog meets reddit. Previously we used P2 theme from WordPress, but found ourselves wanting more.
Async is a place where we can surface important conversations that get lost in the fast paced Slack. It's replaces internal email and acts as a great archive for anyone on the team to reference old discussions.
Trello acts as our default roadmap. Anytime we have something we'd like to do, we add it to a to-do list in Trello. In most situations, you'll find yourself creating way too many cards trying to do too many things. The trick we use to avoid getting card overload in Trello is that in order to create a card you also have to write a detailed description of what the feature is, why it's important, and what the results of a successful implementation of this feature should look like.
We also use Trello boards for keeping track of our editorial calendar, support documentation and really any project that needs to get done.
This works great for remote teams, because if anyone in the company is looking for something to do, they can just go pick a card off the Trello board and know that it's going to be a positive feature for the product/company.
We love Trello, but there's also other great project management apps that you might use too.
Issues and pull requests are used for specific purposes at Zapier. Much like how GitHub uses GitHub to build GitHub, we use GitHub to build Zapier. GitHub houses all code related project management. Pull Requests are how now features get shipped. Issues are reserved for bugs only. Features happen in Trello and/or a planning doc.
Since we have logins to hundreds of services it's helpful for anyone who walks into the company to be able to access any of them without having to fire off an instant message or wait for an email reply. With LastPass, any teammate can login to any of the services we use or integrate with without having to know the login credentials.
For almost any other documentation Google Docs is great. We share spreadsheets for ad hoc analysis of key metrics. We share spreadsheets with team info and other vital info that might be used later. We share documents for contracts and records. Anything that might get used multiple times should be documented and Google Docs is an easy, shared environment to make that happen.
Google Docs fails for organization and collaboration, though. We've found Hackpad to be great for internal documentation. Any documentation that needs to teach someone how to do something internal gets added to a pad and collection inside Hackpad so that others can quickly access the collective brain of Zapier.
There are tons of hip and cool video conferencing tools. GoToMeeting is not one of those. It's clunky and there are more GoToMeeting versions than Land Before Time movies, but GoToMeeting does audio and video quality better than any other provider we've tried. We've tried a lot too. Sometimes we'll do Google Hangouts or Skype for one off calls, but when you need to host a team chat with more than 10 people, GoToMeeting is your friend.
Every now and then, you and your employees might need to sign something. Spare yourself the hassle of printing out the document, signing it, scanning it back onto your machine, and sharing the document with the next person that signs and instead just use HelloSign. It'll make your head hurt a lot less.
The third ingredient in a powerful remote team is process. I know most people don't like to think about process, and process feels boring and rigid. But if you think of process as "how we work" it starts to feel more powerful.
Good processes let you get work done in the absence of all else. It provides structure and direction for getting things done.
That doesn't mean processes should be rigid, unchanging or pointless though. Process, at a small company, is more about providing a feedback loop so that you can measure progress for both the company and the people in the company.
Here's a few of the processes we use to make Zapier run. Or is I like to call them: How We Work.
1. Everyone does support
The customer is our lifeblood. We strive everyday to solve our customers' problems and help make their job just a little bit easier. When everyone on the team does support, everyone gets to hear the voice of the customer.
Also, the people who build the product also end up supporting the product. If a customer is angry about a bug, then the person who introduced said bug is going to hear about it and fix it right away.
2. A culture of shipping
Since everyone does support, we've built the dev schedule so that each developer spends one week on support out of how many engineers are currently on the Zapier team. The other weeks engineers are 100% dedicated to features so that they don't have to worry about support. The 100% focus on certain projects when not on support gives a developer enough time to ship something sizable. This keeps a good cadence of new features coming.
3. Weekly Hangouts
Every Thursday morning at 9am PDT we get together for lightning talks, demos and/or interviews. Since we're over 20 people now, it's hard to see everyone on a weekly basis. These hangouts are a chance to say "hi!" to folks you may not normally see.
These hangouts are also a good chance to learn something new. Each week someone inside the team does a lightning talk or demo on something interesting or if someone is in the running to join the team, we have them present a lightning talk.
The meetings happen at Thursday at 9am because that's roughly the best time for a geographically dispersed team so that no ones weekend gets disturbed too much.
4. Pair Buddies
As we've grown, it can be harder to know all your teammates. One easy way to mitigate that is to have folks on the team get paired up with one other teammate at random each week for a short 10-15 minute pair call. We use this to chat about life, work or whatever random thing seems interesting. Sometimes cool new product features come out of these, other times it's just good fun. Regardless it helps everyone better know their teammates.
5. Monthly One-on-Ones
In every job I ever had (even co-located ones), there wasn't enough feedback between me and my supervisor. So at Zapier, I setup a recurring monthly event with each team member where we both jump on Skype or Google Hangout to chat about four things: what's one thing you're excited about, what's one thing you're worried about, what's one thing I can do better to help him with your job, and what's one thing you can do better to improve at your job.
These questions are consistent so it's easy to prepare and so that it's easy to measure changes over time. We specifically limit it to one item per question. One item is easily achievable for a person each month. But over time, being able to fix one issue a month adds up.
The answers to each monthly session are logged in a Google Document so that the next session we can reference the previous month's information and check on how we did.
In the past I did one-on-ones with everyone. However around 15 people this got to be too hard to keep up with everyone on a meaningful level. Now I focus on the support and marketing team while Bryan and Mike (my co-founders) focus on the engineering and product teams respectively.
These review sessions are especially great at revealing how we are doing as a remote team, since it lets me get feedback on both small and big things we can do to make the company more enjoyable. For instance, I found out that Cooksey and James occasionally co-work downtown in Columbia and ended up paying for parking on their own dime. So as a result we setup a simple reimbursement program to make sure you can get your money back for company expenses.
6. A culture of accountability
One question often presented is "how do you know if people are doing work?" Any easy way we know is with Friday updates. Each Friday, every person on the team posts an update to Async about what they shipped that week and what they are working on for the next week.
This makes it easy to keep in the loop on projects and also keeps everyone at Zapier accountable to everyone else to do their part.
7. Building culture in person
In person interaction is valuable for any team. There is definitely something unique that happens when teammates can work on something in person. As a result we strive to bring the team together two times a year somewhere cool.
We've visited Washington, Colorado, Alabama and Utah on company retreats.
In addition to the all-company get togethers, small groups of us might get together on an ad hoc basis throughout the year to coordinate the start of a major project or feature. Usually this is just one person jumping on a flight to visit another person.
If this seems expensive, that's because it is. But the great part is that you'll likely have the money to cover this plus more since you don't have to pay for a central office that everyone is working in.
8. Automate anything that can be automated
The core of Zapier is automation. There are a couple reasons why we automate things. One, it allows us to keep the team size small since we don't need people on staff to perform repetitious, mundane and boring tasks. Two, it lets teammates focus on high impact work nearly all of the time rather than figuring out less impactful things, like the proper deploy commands.
A lot of this has been knowledge built up from others. Unfortunately, not many people write about the topic of remote working and how to manage it. Most articles dive only a inch deep with light weight suggestions like "use Google Hangouts" which isn't super helpful.
The best way to learn about remote working is to ask other people who do remote working. I've learned a ton from people like Lance Walley at Chargify, Joel Gascoigne at Buffer, the entire Basecamp (formerly 37Signals) team, Zach Holman at GitHub and a slew of other founders and remote workers.
If you are looking for other great resources here are some that are worth checking out:
Hopefully this chapter can give you some deep insights into how one team manages a remote team. Don't take this as universal truth though. One of the beauties of a remote team is that because remote work feels more like an experiment everything else feels like it can be more experimental too. So go ahead and experiment! The biggest wins aren't usually found in a post on the internet, but in what you discover on your own.
Next, you'll learn how to build culture in a remote team in Chapter 2
Written by Wade Foster