Our (fully remote) startup was acquired by a (fully non-remote) company about 18 months ago. My team was fortunate enough to be allowed to remain completely remote, although we have recently onboarded a couple of in-office team-mates. Most of us live/work a few hundred miles apart from each other.
Here are a few things that I miss in our remote team:
Face to face one-on-ones: I have weekly 1-1s with each team-mate. In previous on-site teams I found that fortnightly or even monthly was more than enough, but with the remote team I find that a weekly 30-60 minute catch-up is needed, because one loses a lot of nuance via even good remote tools. Is Bob feeling cranky today? On-site it was trivial to discern but remote is much harder. Then the 1-1s are less effective because one loses a bunch of the subtle organic cues that guide you in a normal 1-1 conversation.
Whiteboards: Sometimes we have long, complex conversations to resolve issues that a simple whiteboard diagram would resolve in 2 minutes. I know there are a bunch of tech tools that could alleviate this, but we don't have the budget for the really slick solutions and the less slick solutions are seriously lacking. We're considering buying a few ipad pros as an experiment - would be great to hear if anyone has had good results with these. I've not found a replacement for the humble whiteboard when it comes to hashing out a workflow or a layout.
Over-the-shoulder pair programming: I've not found a good solution to this. Screen sharing is abou half of the problem. Being able to point, grab the keyboard, etc. is the harder part to solve. VSCode live sharing is about the best option I've found, everything else has been close to useless.
Planning and retrospective meetings seem to take way longer and seem to be less effective than they are IRL. I think engagement is part of it (I'm a stickler for closing laptops/phones during meetings and that is obviously impossible during videoconference meetings). Another part of it is probably just the small size of faces on video calls. When you have 6 other people in a meeting, they each have less than a postcard of screen estate, so expressions are super hard to read, humour becomes harder, etc. Consequently it's super hard to keep meetings energised and on track.
Small acts of kindness: In our previous team, we would often make each other coffee or bring each other lunch. I found these little gestures go a long way towards easing the friction inherent in a team working hard together.
I'm not sure how many of these are caused/exacerbated by living in a country with crappy, unreliable internet. Maybe huge bandwidth would help?
Here are a few things that we found useful to help alleviate the above:
1. Regular in-person get-togethers: At least once per quarter, we have a 1-2 day session together, with lots of food, some beers. We spend a lot of time on high-level planning and introspection during these sessions, but also get together for detailed work sessions and pairing on hard problems.
2. Document the shit out of everything. Readmes, meeting notes, TIL slack channels, howtos and guides and playbooks for every possible activity. We have a rule that if someone teaches you something you have to document the lesson somewhere for the next person. Its baked into our team culture now and it helps us a lot, because you can't just grab someone to help you when you need it.
3. Zero tolerance for bad behaviour: Its a million times harder to fix conflicts remotely, so we have to be extra kind and respectful to each other
4. Shorter iterations: We run week sprints with documented goals and documented review/kaizen every week. It's a high overhead, but it helps keep everyone in sync, as well as highlighting problems quickly
> Over-the-shoulder pair programming: I've not found a good solution to this. Screen sharing is abou half of the problem. Being able to point, grab the keyboard, etc. is the harder part to solve. VSCode live sharing is about the best option I've found, everything else has been close to useless.
tmate is great for this so long as you're okay being 100% in-terminal. One person runs tmate which basically opens tmate and gives you an ssh url. Then everyone else just sshes in and is in the same tmate session - identical to if you both sshed into a shared host and entered a mutual tmate session. It has a hosted version but can also be self-hosted.
Here are a few things that I miss in our remote team:
Face to face one-on-ones: I have weekly 1-1s with each team-mate. In previous on-site teams I found that fortnightly or even monthly was more than enough, but with the remote team I find that a weekly 30-60 minute catch-up is needed, because one loses a lot of nuance via even good remote tools. Is Bob feeling cranky today? On-site it was trivial to discern but remote is much harder. Then the 1-1s are less effective because one loses a bunch of the subtle organic cues that guide you in a normal 1-1 conversation.
Whiteboards: Sometimes we have long, complex conversations to resolve issues that a simple whiteboard diagram would resolve in 2 minutes. I know there are a bunch of tech tools that could alleviate this, but we don't have the budget for the really slick solutions and the less slick solutions are seriously lacking. We're considering buying a few ipad pros as an experiment - would be great to hear if anyone has had good results with these. I've not found a replacement for the humble whiteboard when it comes to hashing out a workflow or a layout.
Over-the-shoulder pair programming: I've not found a good solution to this. Screen sharing is abou half of the problem. Being able to point, grab the keyboard, etc. is the harder part to solve. VSCode live sharing is about the best option I've found, everything else has been close to useless.
Planning and retrospective meetings seem to take way longer and seem to be less effective than they are IRL. I think engagement is part of it (I'm a stickler for closing laptops/phones during meetings and that is obviously impossible during videoconference meetings). Another part of it is probably just the small size of faces on video calls. When you have 6 other people in a meeting, they each have less than a postcard of screen estate, so expressions are super hard to read, humour becomes harder, etc. Consequently it's super hard to keep meetings energised and on track.
Small acts of kindness: In our previous team, we would often make each other coffee or bring each other lunch. I found these little gestures go a long way towards easing the friction inherent in a team working hard together.
I'm not sure how many of these are caused/exacerbated by living in a country with crappy, unreliable internet. Maybe huge bandwidth would help?
Here are a few things that we found useful to help alleviate the above:
1. Regular in-person get-togethers: At least once per quarter, we have a 1-2 day session together, with lots of food, some beers. We spend a lot of time on high-level planning and introspection during these sessions, but also get together for detailed work sessions and pairing on hard problems.
2. Document the shit out of everything. Readmes, meeting notes, TIL slack channels, howtos and guides and playbooks for every possible activity. We have a rule that if someone teaches you something you have to document the lesson somewhere for the next person. Its baked into our team culture now and it helps us a lot, because you can't just grab someone to help you when you need it.
3. Zero tolerance for bad behaviour: Its a million times harder to fix conflicts remotely, so we have to be extra kind and respectful to each other
4. Shorter iterations: We run week sprints with documented goals and documented review/kaizen every week. It's a high overhead, but it helps keep everyone in sync, as well as highlighting problems quickly