Recently I changed jobs and changing jobs always means new things such as learning how the company works, how to work as a team and how to collaborate on things. When I was told in my interview that Bit uses Discord for their virtual office I just presumed that it works the same as how we use Discord in all the servers I am a member of. But that wasn't the case at all. Let me tell you about it.
First let's understand the problem we are having when it comes to working across remote teams. Before in a normal office it was really easy to know who was at work, who was available, who could be brought into a meeting to discuss something. People were visible in the same office space. I live in Spain and Spanish companies don't seem to like the remote idea or didn't before they were forced into trying it. So I am very used to going to an office and being there and seeing others. And it works well. If you have a problem you walk over to the team and start asking a question and before you know it, it has turned into a discussion. So how can we replicate this same way of working?
Discord to the rescue
Bit chose to use discord as their virtual office and I have to say I am amazed at how well it works and how easy it is to set it up. How it works is we have voice channels set up with different names such as Open Space, Big Meeting Room, one on ones, and many more including a dining room.
My first thoughts on this were, that's great but it's just voice channels in Discord. We had that in Nuxt, Cloudinary and other servers I am a part of. And yes we use it for meetings and we shared screen and turned on video and it was great so how are we doing things different at Bit?
What Problem are we trying to Solve
Remember the problem we are trying to solve. How do we recreate the office look and feel? How do we know when people are available? How do we know who is working and when? Remote working has given us the freedom to work whenever we want and right now I certainly don't have a set time that I start work or finish. It varies every day depending on what I want/need to do, what sport I decide to do or if it's raining, cause it's not much fun doing sport in the rain. Then there is timezones, trying to figure out what time it is in America just to wonder if someone is probably working or not, which should be easy but for some reason it is not.
So what is the solutions
It's actually quite simple. When we start work we join a voice channel otherwise known as a virtual room. Actually right now as I write this blog post I am in one of those rooms. It's 7am on a Saturday morning so I am the only one in the office but thats ok.
On a normal working day everyone should join a room. This makes it easy for everyone to see who is working. Now this is not so managers can see who is working and count how many hours people are doing. It's not like that at all. This is so the team can see who is around, who is available, incase needed for pair programming, discussions or any issues that might come up.
So if you can imagine 15 different voice channels set up and you start your day and jump into one. Now you might think, that's going to be very noisy, and it might be depending on the room you join. But you can jump to another room and if that one has too much going on, you can also just deafen the server so you don't hear anything cause maybe you are not at your desk cause you need to hang the washing out or make a coffee or whatever so that means someone knows you are working, you are around but if someone wants to talk to you you're not listening. This is when messages come in.
Slack for Messages
We use slack for messages as slack just has better threads and it just works well for us for writing so if you want someones attention you just send them a slack message and they will get back to you when they are finished making their coffee or whatever.
Sometimes you just don't want to be disturbed and that's ok too. There is a particular room for that where you can't speak and therefore won't hear anything so it's a pretty quiet place and good for when you need to focus. I have to admit that I am yet to enter that room. But by going in there people know you are working and that they will be able to reach you at some point in the near future once you have time to respond to the slack message.
Same goes for the dining room. This is not a room we go to to have lunch and talk. At the end of the day virtual eating in front of each other doesn't work and isn't that great an experience. The lunch room is basically a way of telling your colleagues that you are at lunch so might be available on slack or might not but that you will be gone for a short while and will be back.
We have a daily meeting in one of the Big meeting rooms and admins have the power of actually virtually kidnapping you from whatever room you are in and dropping you into the meeting room so there are no excuses for missing it at all. This is a great feature and of course if you happen to be on an external call you will have the server deafened and therefore won't hear things which is probably what you want. On the daily you can turn on video if you want to or share a screen to showcase something. Having a daily with the team is really beneficial as you get to keep up with what is happening as well as be able to ask someone for help on a specific topic.
When it comes to the recording studio, the mic is not activated so you can't talk. This room is great for letting people know that you are recording something or live streaming therefore you are around but it's going to be impossible for someone to get hold of you until you finish.
External Meeting Room
We also have an external meeting room for when we need to invite people who are not part of our team. This is great for when we don't want to use another platform or setup a zoom call just to get someone involved in a conversation for help and debugging. Recently we had a webpack issue we needed to solve so we invited one of the webpack maintainers who wasn't part of our team to join the call and help us debug our webpack loaders issues, when trying to migrate to webpack 5. The external meeting room allows us to easily invite people in, to collaborate with other people, debug code together and at the same time network and get to meet other people.
It is starting to become one of my favorite rooms and I look forward to seeing who else we will invite in there and what other pair programming sessions and networking we will do.
Day to Day
So how it works from day to day is that we join a room and then when we have an issue such as a bug and we need help from someone we can see who is available and then jump in that room and simply ask a question. And that someone normally will respond. The great thing is that there might be other people in that room who might also respond. They can then learn from the issue you had or if they are not interested in listening they can just deafen the server.
Overall I have found the virtual office to be so beneficial. Before I pretty much worked alone. I felt lonely just the same as many dev advocates out there but in Bit it is different. For the first time I have not felt alone or lost. Instead I am surrounded by a great team of people who at the same time are available to me for anything I need and that is power. That is what makes a company move forward. And although I remain in the same room surrounded by the same 4 walls, for the first time I have felt that I am actually not alone and that just by jumping in a room in discord I ensure that I am not treated like a remote person but in fact someone who really is part of the team.
I for one am a peoples person so just being able to drop in on people and just say hi is mega beneficial especially in the world we live in when visiting others is just not part of the legal agenda. I have to say that during my first month at Bit I have never felt alone and have done so much team work it is just incredible. I really do mean it when I say that I really do love my job and a big part of it is of course because of the virtual office, therefore because of the company culture. For the first time working remote doesn't mean that I am alone. Working remote doesn't mean that I don't know what is going on day to day. Having a virtual office really means I can be a real part of the team and that is something I really just love.