Rebuilding the team spirit with Discord
By: Jakob Löhnertz
Tags: Coronavirus, Remote Working, Working From Home, Discord, Picnic

At Picnic, all of the teams working on technological components of our product can freely choose how they handle their internal communication. By this, I mean that some use Scrum-by-the-book, others just a Kanban board, or whatever other variety of agile methodologies that suits them. There is no top-down control on organizing a team apart from the fact that we are using Slack as our shared internal communications tool — how a team structures its communication, recurring meetings, etc., is up to them.

Picnic uses Slack for its internal communication.

So did my team, the FCA team, which works on building the software that will power Picnic’s upcoming automated warehouses. You may have experienced an increased amount of working from home (WFH) starting from around March or April of last year when the first wave of COVID-19 hit most of the world. Initially, we kept using Slack and immediately made more heavy use of its call-functionality. However, as explained in my most recent article, we were additionally growing rapidly in team size precisely at the same time. Thus, we promptly ran into the upper limit of concurrent participants in a single Slack call, which is only 15 people, by the way — we needed a new tool.

Many tools exist for the job nowadays.

Nowadays, there are certainly many tools for the job, specifically after the crisis gave new life to some of them. We arrived at a classic choose-your-weapon situation. In the past, we sometimes used Google Meet already as it comes bundled with our GSuite accounts that every employee at Picnic uses. So, on the same day, we jumped to Google’s solution to the problem and gave that a larger field test. What can I say? It’s not awesome in terms of features, but it just works.

After we could hold our stand-ups online again and every other call that needed to be made, we were happy for the moment. However, a new problem, which is likely remarkably familiar to many, arose. The team does not feel too connected to each other anymore after everyone sits at home at their desk instead of being physically close in the same room. Interestingly, our productivity or velocity was not going down. Instead, the bigger problem was the kind of chats one usually would have outside of the raw time spent on developing software (in all senses of the word) — the infamous water-cooler-talk (i.e., chatting somewhere in the office outside of official meetings at a common meeting place over a cup of one’s favorite beverage of the moment). Apart from everyone needing a break once in a while, there’s plenty of evidence that this type of informal communication is essential to sharing ideas, specifically within software-developing teams:

What appear to be casual conversations around the water cooler serve to informally exchange (critical) information and experience […] Informal communication fills in the details of work, handles exceptions, corrects mistakes, and manages ripple effects of previous decisions. (Herbsleb and Grinter, Splitting the Organization and Integrating the Code: Conway’s Law Revisited, 1999)

Everyone in the team shared this feeling in our retrospectives, the developers, the QAs, the designers, as well as the team leads. There was only work anymore and almost no social component left of it. For a few weeks already, we kept a Google Meet room open 24/7 for people to have a coffee-chat. Only to quickly find out that in the end, no one or only a handful of people really join it. I figured that the reason is that it’s not visible enough and that there are no natural breaks in the workday anymore that team members used to share, like going to lunch or having hot coffee or cooled water together.

Soon, our team leads announced that starting in 2021, we would split up our team (due to the growing size) into smaller squads of people, each working on one milestone of the project at a time. This was a welcomed change, but it still did not solve the communication barriers that WFH had erected over time. I wasn’t happy with the situation either, so I sat down and started looking for a solution. Luckily at Picnic, we have an open culture, so my team leads welcomed me to solve the problem. I first created a questionnaire that I asked everyone in the team to fill in to figure out what everyone’s needs for a new communication strategy were.

The questionnaire that I created to figure out the team’s needs

All 17 people in the team at the time participated, and I later analyzed all the answers to come to the following results. The most important aspects for those polled were:

The most important aspects

While the least important aspects were:

The least important aspects

The results showed that people were missing agile options to talk to each other, setting up a call via Slack or Google Meet is just ever so slightly too tedious, especially if it’s more than a dialog; getting multiple people on board for a quick discussion ASAP is just bothersome when WFH. People also deeply missed having an option to reach a team lead quickly for a question or confirmation. They are busy people, so this proved to be difficult oftentimes in the past. Finally, the above-mentioned water-cooler-talk was important to most as well.

Since people felt adventurous and were not really attached to the current platforms we were using, I continued with the next phase of my research and looked into tools for the job.

The comparison matrix that I created for the available tools

After having compiled a comparison matrix for the most popular ones, I chatted a bit with one of the team leads to sift out which features they deemed the most important as well as the least desirable. Mind that there are, of course, dozens of other platforms on the market, but since this was first and foremost an experiment, I shied away a bit from large-scale enterprise solutions since I would have had to convince someone to pay thousands of euros for it. Later, I organized some desirable traits:

If possible, the tool should be free of charge.

We need at least 20 concurrent users for some of our meetings.

Multiple channels are desired to accommodate the new squads.

Video and screen sharing are necessary.

Self-hosting is not preferred as it comes with its own hassle.

Ultimately, four candidates remained:

Google Meet: The channels could be faked via multiple persistent links. The visibility is not good, though.

Discord: Fulfils all of the above considerations.

Apache OpenMeetings: The client is a bit ancient. Self-hosted.

BigBlueButton: Hefty loading times and a bit sluggish. Self-hosted.

In the end, we settled for Discord as our tool of choice.

I was given a choice and tried out all of them, keeping our earlier conceived goals in mind. In the end, I settled with Discord and came up with the following communication strategy for our team.

First and foremost, I focused on the fact that Discord is very similar to Slack in many aspects and that, in Slack, we already have a company-wide tool. Consequently, I decided to completely disable any text chat on Discord such that all textual communication has to stay on Slack. Firstly, to have a single source-of-truth and, secondly, to keep archivable text in the tool the company already trusts. Each squad received a text channel on Slack to post provisional meeting notes, questions, and whatever else was not highly urgent. For more urgent matters, Discord appeared in the spotlight.

A screenshot out of an enlivened day on our Discord server

Just as comparable offerings, Discord supports text and video chatting as well as screen sharing. It works in the browser as well as in a “native” client. It has its roots in the gaming scene but is long over that initial phase and is nowadays used by many communities. Although I also initially came in contact with it through gaming with friends.

After having created a Discord server, which is completely free, I created one voice channel per squad that is, by definition, transient compared to a text channel. My idea was to mimic the situation one would find in the office: each squad member could stay connected to their room for any duration of the day, joining in and out of their room, which in Discord just works with a single click on the room. Importantly, we decided not to produce a surveillance tool that the team leads could utilize to keep an eye on who is online in Discord or not. There was no interest in that anyhow as the mutual trust is already there. And it turns out that for many, WFH has big upsides in terms of quietness and the resulting increased concentration compared to a typical office atmosphere. We found that some people stay connected all day and “sit” muted in their room waiting for potential questions or asking some themselves to the other members doing the same, while others only stay connected for an hour a day. We do not deem it useful to force anything here apart from a potential, agreed-upon check-in window each day. Furthermore, I created a general room for shared meetings (such as the stand-ups), a coffee-chat room, and some extra rooms as cross-cutting “meeting rooms”. Finally, I created a room for the team leads to join whenever they are available for quick discussions and help. Others can quickly see if someone is there and drag them into their own room. Yes, you heard right, one can just drag-and-drop people around the rooms of the server, which can, of course, be restricted or disabled. Another huge factor about Discord is the amount of customization. It supports roles with an intricate permissions system, changing the channel’s transmission bitrate, as well as bots to add custom functionality. Compared to a one-size-fits-all solution like Google Meet, where the customization already ends after one changed the meeting title, Discord allows to tailor it to its users’ needs.

This new setup tackled all of the initially set goals, and thus I gave a presentation in front of the team regarding my proposal. After the team leads, as well as the rest of the team, agreed to give it a try, I rolled it out in the first week of 2021. Now, after more than a month of using it, I have received very positive feedback from other team members so far. The few requests people had to improve something; I could swiftly solve by changing some Discord server settings.

The one negative point to take care of that we noticed and started to dislike is that it is very easy not to schedule any meetings anymore because everyone seems to be approachable at all times throughout the workday. We had a couple of situations where people did not consider enough beforehand how long their discussion might take, only to join the room of other people, start the discussion, and derail their regular workday by it taking way longer than a few minutes. In essence, care should be taken that the easy availability of everyone is not used to their disadvantage and that discussions that have a high likelihood of taking more than a couple of minutes are still scheduled as regular meetings; then everyone can prepare for them mentally and does not feel interrupted as well.

So what does a typical day in our new setup look like? In the morning, people join into their squad rooms to align what they want to achieve today. At 10, for the stand-up, everyone moves to the General room. After some minutes, it’s back to the squad room to possibly discuss some ticket with a team lead or an interfacing squad. Throughout the day, many questions are asked and subsequently answered just when they pop up, meetings are held, and solutions are designed. If a question requires help from a team lead, a quick glance to their “cave”, as we lovingly started calling their room, tells us that one is available at the moment, so they are dragged into the room, which they notice by a specific sound that Discord plays on their side and can thus unmute and/or undeafen themselves. And finally, coming back to the acclaimed water-cooler, the coffee-chat room (maybe I should rename it) is truly improved since it’s always directly visible who’s in there, which immensely lowers the burden to join as well and chat away for some minutes.

Another helpful feature is that everyone can directly see who is online and available at the moment (i.e., them “sitting” in a room) but even more important if I need to talk to a specific colleague that I currently see with someone else in one of the “meeting rooms”, I know that they are busy at the moment. Once they moved out of there again, I can try to reach them — just like an actual meeting room.

If one needs some quiet to just code away for some time, one either leaves the room or deafens themselves in Discord — the icon that appears next to the person unequivocally conveys that they do not wish to be interrupted at the moment and that they also will simply not hear you yelling in any case; for urgent matters, everyone is still reachable via Slack or a good old phone call for extraordinarily urgent matters.

You may have noticed how I purposefully used the term rooms instead of channels or whatever else since I started feeling that they are just that.

Joining a room in the morning feels like stepping foot into the office, greeting everyone, and getting accustomed to starting one’s workday. Throughout it, one moves from room to room just like in an actual office building (only that many of us sit in an open space office when not WFH) — the effect is truly amazing and improved our internal communication remarkably on an empirical account. Meeting sizes are reduced, but the burden for other people to quickly join is not larger than literally stepping through the virtual door frame. Finally, compared to many other platforms, Discord supports push-to-talk, which can greatly help with your coworkers’ very loud households.

We so far deem this approach a great success and will continue using it. If you have questions about this approach or need help to set it up, you can reach out to me!