Whether you're expanding your team, or working with a co-founder, it's pretty much a given that indie hackers will be working with people remotely. What isn't a given is that you'll do so effectively.
I've grown Uploadcare to several million in ARR and a team of 35 remote workers. Here's how I've ensured that remote work is working optimally for my company.
How to build an effective remote team
People are people and Maslow's hierarchy of needs gives a good overview of how to help them to be motivated and productive.
The basic needs at the bottom are the easiest to solve but can be overlooked. If there’s a heat wave – does your teammate have AC in their apartment? If they have a child, are they able to have at least some rest? Do they have a nosy neighbour who makes their lives a living hell? Or a mortgage that squeezes their budget so they need to save on food or freelance while working full-time hours?
As founders, we should have a good understanding of these needs in our co-founders and team, as they affect work much more with remote setup than it was when people were able to escape to offices.
Here are some easy wins to cover basic needs:
Comfortable work and life environment
- Make sure they have a safe place at home where they can work without any intrusions from their family members. It should be a separate room. If this doesn’t work (and you can afford it), rent a co-working space at the company's expense. This is always cost-effective for the company in the long run.
- Provide them with a laptop with 2 extra displays if needed. Nice keyboard, mouse, and noise-canceling headphones. An ergonomic chair. This is a bare minimum that will enable your teammates to keep the focus at work and avoid neck pain and tunnel syndrome.
- Check if their take-home pay is enough for them considering where they are located, including renting a decent apartment to have their own safe harbour. There are different strategies: to pay the same amount of money for the same position or to pay differently considering a tax rate and a cost of living, we won’t dive deeper into this.
Keep up with psychological needs
- The feeling of accomplishment is truly achieved only when people are able to deliver their set goals and this is acknowledged by their peers. OKRs, North Star metrics, or any other frameworks – apply the one that fits your current stage and follow it.
- Make the ground rules easy to understand, the company and product vision should make sense, the tools should be easy to use. We solved this by writing a Handbook, it has an overview of how we work, how we communicate, and plenty of other sections. A crazy thorough Handbook by GitLab.
- Do 1on1s with your peers and make sure that every team member has 1on1s with their managers. A cheat sheet on 1on1s by Ben Horowitz.
- Schedule virtual meetups where team members can just chat about random topics. We have an “Intercontinental breakfasts” – a group chat for everyone that is scheduled for once per week. And random coffees that are scheduled each week in our Slack by Donut.
- Play games! There is a study that confirmed that playing together improves empathy. We set up a Discord server for gamers and play co-op games like Valheim and Factorio.
- Meet in real-life! An all-hands meeting once per year helps to build rapport that lasts for many months.
When you solve the bottom part of the triangle, your teammates will have all the prerequisites to work on self-fulfillment needs. If your company’s vision and strategy are aligned with a person's life goals – there is a good chance that they will be the most productive and both of you will achieve your goals.
The quick way to ensure that your vision and strategy is aligned, at least it has worked for us at least three times – is to run a 3 hour brand sprint. In just a few hours you’ll brainstorm: a roadmap, ‘What, How,’ Why’ circles, competitive landscape and how you plan to win your audience, and your company values. To run this sprint we used a ready-made recipe from Google Ventures.
Sync comms vs async comms
People are used to synchronous ways of communication. Meaning, if you’ve been asked a question – someone expects you to answer asap, the same as if they came to you in person in the office. If you don't answer or take too much time to think – this could be considered rude.
You answer, you lose your focus, this is unproductive
and everyone loses.
With remote work, the async approach is more fruitful.
Async communication allows for:
- Uninterrupted focus time
- Work with different time zones
- Chance to digest and think before responding
- Detailed records
- Every opinion matters
- Healthy work/life balance
The tools and how we use them
At Uploadcare, we use Slack in async mode and we don’t expect for everyone to answer the same moment we asked a question. We also use Google Calendar and everyone’s calendar is public so people can not just schedule events for multiple team members without going back and forth to find an open timeslot but also they post their availability and lock focus time to avoid interruptions. To make things even nicer we use Cron as a better UX for Google Calendar.
We try to avoid excessive meetings by writing down agendas for every event and follow-ups with action items after each of them. I wouldn’t say we perfected this, but we clearly understand it helps.
The rules that we apply to calendars
- Calendars are public for everyone
- Not in calendar = didn’t happen
- Agenda’s and follow-ups with action items after calls
- Strict timing, moderation
- Keep track of working hours and personal time
When we need to explain how something works we rely on Loom to record a screencast. This allows everyone to watch the explainer at their own pace, hit pause and try things: this is usually not possible during a call. And if someone else needs to take a look – it’s much easier to share a link than to schedule another call to boringly repeat stuff over and over.
I also drafted a document about communication for the company Handbook if you'd like to take a look.
Don’t let people to feel alone
No matter what tools and workflows you set up, we are social creatures and people tend to get lonely if no one is around. They also tend to get lost if there’s no one nearby to ask for directions. Extraverted people would start asking questions and share feedback, but that doesn’t apply for everyone.
Most of the potential downs can be avoided: just help people to navigate and meet virtually and in-person.
To ease the navigation, I suggest having a Handbook that is basically a WIKI-like directory of everything work-related. The GitLab Handbook that is mentioned above is a good example. It should navigate your team members from the day one where they install all the tools and set up services to how you do plannings, who to contact in case of questions, how to schedule personal time-off, and everything you can think about.
Meet virtually and in-person:
- Intercontinental breakfasts. Once per week we meet each other in Google Meet and chat about… nothing particular!
- Demo Days. Once per 2-3 weeks we present interesting stuff we’ve been working on: new launches, customer highlights, our open source projects, etc. This helps our team to see and feel what others are doing.
- Team retreats. We meet in person at least once per year. The idea is to work together and then spend time resting, cooking, playing games and chilling in a sauna (they usually take place in Finland where saunas are a big thing). But every time it becomes a 7 day hackathon that requires 2-3 days to rest afterward. And it's worth it every time!
The path to a perfect remote team doesn’t end after building the perfect pyramid of needs and setting up async communication. But these are the first steps that help to avoid the most brutal mistakes.
Some key takeaways are:
- Only results are meaningful. You can’t and either shouldn’t look at people's schedules and workplaces if they deliver.
- Change habits if you’ve just started working remotely.
- Lead by example. If you get used to working in async mode, people will follow.
- Use the right tools right. Online calendars and chats are neat add-ons but they aren’t solutions themselves.
- Don’t let people get lost. Help them to navigate and be nearby, make them feel a part of a real team.