How we built a high-performance fully-remote team

Two years ago, when we were setting up our development team in IOV42, we made a conscious decision to enable remote work as much as possible. Of course, at that time, we were not really considering a fully remote team, but we wanted to have the flexibility to work remotely whenever we needed to.

During the first year we refined our team processes to such a degree that co-location was no longer necessary. This gradually led to all of us working from home more and more frequently.

So, when the COVID-19 global pandemic broke out and we had to transition to a fully-remote team, we were ready! At some point we had people in our team working from Greece, France, Turkey, Austria and of course the UK...and nothing felt any different!

In the rest of this post I will try to present some the things that worked really well for us and hopefully, they will prove useful to more of you out there. Of course, every team is different, so don't expect them to work right out of the box. See what works for you, change it, own it!

Here we go....

Asynchronous communication with Slack

Naturally, when people are not co-located, they tend to create their own work schedule, which in most cases is different than everyone else's. Because of this, the need for asynchronous communication is imperative.

There are many ways and tools to achieve that. We decided to use Slack which worked very well for us. But in order to get the most out of it, we had to improve and refine the ways we were using it.

Here are a few takeaways/tips from our experience:

1. Focused channels

Each channel should have a very specific purpose and defined scope and only the required audience should be included. The last thing you want is people ignoring messages in a channel because a big percentage of these messages do not concern them.

2. Group conversations using threads

By using the thread feature in Slack to reply to a message, allows you to keep all the related replies grouped together. This in turn helps people to follow the discussion much easier, easily find the discussion in the future, and also reduce the noise for everyone else that might not be interested in that particular discussion.

3. Use reactions

Remember, your colleagues cannot see you, so they don't know whether you saw something they posted or not. Reactions is a very handy way to acknowledge that you have seen a message even though you might not have anything to say about it.

4. Avoid long discussions, spamming and flame-wars

When you see that a discussion is derailing and spans over multiple messages, always prefer to jump on a direct call to resolve the issue and come to an agreement. The important thing is, once the issue is resolved with the direct communication, don't forget to notify the rest of the team!

Synchronous communication with GoogleMeet

Of course, there are times when you need to have synchronous communication with one or more of your colleagues. The important thing here is to establish some best practices.

  • Invest in good gear. Get a decent microphone, preferrably a noise-cancelling one, and always wear headphones...it makes a huge differene in audio quality.
  • When you don't speak, please mute. Otherwise someone else might mute you!
  • Don't interrupt others when they talk, wait for your turn.
  • Try to have your camera enabled. This way, the communication feels more personal.
  • Finally, if your internet connection is not good, disable your camera. It's more important for people to hear you than to see you.

If you don't establish some ground rules and practices, you might end up in situations like this:

As for the tool, again, many solutions...

We decided to go with GoogleMeet. We were already using Google Workspace so it made sense to go with that. It's extremely easy to setup an instant meeting, it supports a sufficiently big number of participants, by enabling the grid view you can see all of them, it has great screen sharing features, and it integrates perfectly with the rest of the Google services, e.g. GoogleCalendar.

Easy choice. Next!

Virtual office using SpatialChat

One of the biggest issues we had was the loss of ad-hoc communication with colleagues. Co-location makes random conversations so much easier, which in turn very often leads to interesting ideas and innovations. It also strengthens the feel of togetherness that you have when you are all in the same office.

We've tried many different things to address that. We tried "coffee breaks", which were dedicated time slots every other day at which people could login into a GoogleMeet and socialise. We've tried "virtual town hall" rooms which would run the whole day and people could login whenever they wanted to socialise with the rest of the team. Unfortunately, none of that worked!

And then we discovered SpatialChat!

SpatialChat allows you to mimic to a certain degree the interactions you might have in a physical space. When you login to a SpatialChat space, you can go to any of the rooms in that space you want. You are represented by an avatar and you can move yourself around with your mouse. The really cool thing is that the closer you get to someone, the louder you hear him. And of course you can share your screen with others, you can use the megaphone to talk to everyone in the room without having to go next to them, you can enable/disable video, etc.

From the very first few days of usage in IOV42, you would login and you could see groups of colleagues gathered around at different corners in a room, discussing. You could approach them, listen to what they were talking about, move away if the discussion wasn't relevant, start new conversations easily, etc.

The only thorny bit about it is probably the price. But still, it definitely worths a try!

Collaborative diagrams with Miro

When we were all in the same office, it was very easy to just go to a whiteboard and start sharing ideas by drawing architectural and design diagrams, algorithms, etc.

On our search to find something similar to this experience we ended up with Miro. It's a great collaboration tool that provides whiteboards, diagrams and many more. You can use it to organise event storming sessions, retrospectives (we'll talk more about that in the next section), strategy meetings, share design ideas and many more!

And even though it offers so many capabilities, it's still extremely easy to use.

Retrospectives

Something that really helps with the sustainability and efficiency of a team is retrospectives. But for fully-remote teams, it's a must! It's very easy for pressure to build up when you are not physically next to each other and you need to find ways to release it somehow.

Throughout my career, I've seen many different retrospective formats. Lately, and this is purely a personal opinion, I find that the easiest formats are also the most effective ones.

For example, my personal favourite is:

  1. Create two columns, Liked and To improve
  2. Let people write in both columns for 10 minutes
  3. Read through the Liked column outloud so that, as a team, we can celebrate our successes and boost our morale
  4. Read through the To improve column outloud to have an idea of what is on the board
  5. Group the tickets of the To improve column into more general (but not too broad) categories
  6. Vote on what you want to talk about (each person gets three votes)
  7. Start with the highest voted item and walk your way through them while time-boxing this exercise

Remember! The whole point of this exercise is to capture actions that will improve your processes. Also, what I find extremely useful is to always assign each of these actions to a particular person who will be responsible for carrying it out.

With a simple format like this, you don't get distracted by the framework itself and you can solely focus on the content.

There are many tools out there to perform remote retrospectives. But, in the spirit of KISS, we found that a simple GoogleDoc was all we needed! Again, don't distract the team with fancy tools, allow them to focus on the task in hand.

Trust your team

Tools and processes can only get you half way. The rest of it is constantly developing the proper mentality as a team.

Trust plays a really big role in that. As long as we acknowledge that no one is perfect and everyone is trying their best for the sake of the team, we can keep on improving. Be open about things that are not working out but also be mindful of other people's limitations. When you see issues, try to find solutions. When you see limitations, try to overcome them as a team. When you see positive improvements, try to encourage them.

Don't forget, you're all in this together as a team.

Conclusion

Having a fully-remote environment gives you a lot of benefits! People don't have to waste time commuting, it's much easier to focus in the comfort of your home, as a company you don't have to pay for big offices, employees tend to be more satisfied and you get higher retention, and in general it's a great incentive to attract talented people.

So, how do you start building a successful remote team?

It is all about finding the proper tools and processes to compensate to a certain degree what you will miss from not sharing the same physical location. Of course, it will never be exactly the same, but that's ok.

Once you have that, it's a constant refinement process. You see what works and what doesn't and you keep improving from there. Don't be afraid to experiment, try out new things and get rid of anything that doesn't work.