Discord как корпоративный мессенджер и не только
статья с HABR
Хочу рассказать про использование мессенджера Discord как основного средства коммуникации в команде. Опыт может быть полезен другим командам, использующим бесплатные мессенджеры, а также всем, кто ищет пути повышения эффективности использования мессенджеров.
Discord – программа странная и выдающаяся одновременно. Почему? Хотя бы потому, что про способы работы в Discord получилась целая статья.
Что-то пошло не так
Давайте сначала разберемся, что не так с «обычными мессенджерами»: Skype, Viber и им подобными.
В данной статье я рассматриваю исключительно мессенджеры, у которых основной функционал доступен бесплатно. Да, существуют прекрасные платные программы, но они за рамками данной статьи, даже если имеют бесплатный урезанный режим.
Обычные мессенджеры устроены так, чтобы работать «из коробки» и без всякого администрирования. Это вполне здравый подход, обеспечивающий низкий порог вхождения: просто создали групповой чат и общаемся в нём. По-другому эти мессенджеры не могут, так как сложные процедуры настройки отпугнут основную аудиторию. Но, как обычно, низкие начальные вложения оборачиваются высокими эксплуатационными издержками. Какие проблемы имеем в итоге.
Разделение по темам. Чем больше пользователей в группе, тем больше количество обсуждаемых тем. Большинство тем интересны ограниченному числу пользователей группы. Подход здорового человека заключается в том, чтобы создавать тематические группы и включать в них только тех, кому тема интересна – такая изоляция уменьшает «информационный шум» от ненужного контента. Но на практике это приводит к полному хаосу. Например, имеем 10 чатов по работе, 4 чата детского сада, 3 чата многоквартирного дома и так далее. И всё это в одном пространстве имён, поэтому мы начинаем путаться в чатах. Они уползают вниз списка, забываются, потом создаются дубликаты забытых чатов, но туда забывают добавить всех пользователей. Если же количество участников примерно от полсотни и выше, то никакие параллельные чаты уже не создаются – слишком сложно поддерживать актуальный список участников. Ведется один супер-чат, содержащий все вопросы жизни, вселенной и всего такого. Результат: большие группы в мессенджерах становятся «токсичными»: контент неинтересен из-за большого количества мусора, мы присутствуем в группах только из-за необходимости.
Избыточные нотификации. Каждому знакома ситуация, когда нам приходит слишком большое количество нотификаций различных мессенджеров. Рассмотрим пример. Пусть, у нас команда из 50 человек и каждый пишет в общий чат 5 сообщений в день. Тогда каждый получит по 50*5=250 нотификаций. Если считать, что для просмотра сообщения мы отвлекаемся на 30 секунд, то 250 нотификаций съедают 250*30=7500 секунд, что составляет 2 часа! А всю команду нотификации отвлекают на время 7500*50=375000 секунд или 104 часа! Вдумайтесь: 104 человеко-часа в день или 13 человеко-дней каждый день! Это 26% ресурсов команды. Такие большие числа получаем потому, что количество людей (50 человек) в чате входит в итоговую формулу квадратично (каждый нотифицирует каждого):
<code class="plaintext hljs">50 [чел] * 5 [сообщений/чел] * 30 [сек/(сообщение*чел)] * 50 [чел] = 375000 сек</code>
В реальности все несколько лучше, так как сообщения обычно появляются и читаются пачками. Но суть проблемы понятна: квадратичный рост потерь времени команды на нотификации. Кэп подсказывает два способа решения, но оба плохие:
- Меньше
естьписать сообщений (теряется сам смысл мессенджера) - Заглушить нотификации, читать все сообщения сразу все, когда будет время (теряется скорость реагирования на сообщения)
Discord: начало
Теперь переходим к Discord. Прежде всего заметим, что в Discord есть два режима или, скорее, «вида»: назовем их «обычный» и «сервер». Они существуют параллельно и имеют разные цели. В «обычном» виде Discord – это такой же обычный мессенджер, как и все остальные. Даже с более ограниченными возможностями, чем тот же Skype:
- в групповом чате не более 10 участников
- отправка файла не более 8 МБ (больше – с платной подпиской Nitro)
- показ видео и экрана с разрешением 720p (больше – с платной подпиской Nitro)
- одно сообщение не более 2000 символов
Обычный вид используется для коммуникации 1-на-1 и для мелких кратковременных групповых чатов. В общем, тот же «обычный мессенджер». В контексте данной статьи этот режим не особо интересен, сразу переходим к серверному виду.
Сервер
Чтобы работать с сервером, надо этот самый сервер иметь. Для определенности будем считать, что мы сотрудники стартапа «Рога и Копыта», поэтому наш сервер будет называться «РК». Создаем сервер путем нажатия на кнопку с большим знаком «+». Сервер – это уютное место, где будет проходить всё наше корпоративное общение (кроме 1-на-1, которое в «обычном» виде, вне сервера). Пользователи должны присоединиться к серверу по приглашению.
В левой панели сразу видим две новые сущности:
- Текстовые каналы. Это аналог чата, но с некоторыми особенностями и дополнительными функциями. Набор каналов сервера относительно стабилен: каналы всегда остаются на месте, не уползают вниз в истории, как в мессенджерах. Каналы удобны благодаря ролям и упоминаниям, о них далее.
- Голосовые каналы. В этих каналах мы общаемся голосом. Примерно как радиоприемник: нажимаем на канал (выбираем радиостанцию) и сразу же слышим поток вещания и ещё говорить сами можем. Голосовой канал – это поток, он не имеет начала и конца, нет инициатора звонка и нет самого звонка, который позовёт участников. Подключение к каналу мгновенное. Забудьте про «Я звоню, все ли готовы?» «Добавьте меня в звонок!» «Где ссылка на митинг?». Просто тык в канал — и через пол-секунды вы слышите голоса. Никакого текста в голосовых каналах нет — пишем мы в текстовые каналы. Голосовых каналов нужно столько, сколько голосовых митингов вам нужно вести параллельно. Весьма вероятно, что одного хватит.
Роли
Теперь переходим к инструментам Discord, которые делают его эффективным для командной работы. Прежде всего это роли. Смысл в том, что мы настраиваем права доступа не для конкретных пользователей, а для ролей и даём эти роли людям. Список разных прав, которые может иметь роль, внушает: целых 32 пункта. Кроме того, у каналов мы настраиваем, какие права имеет роль в канале: чтение, написание, удаление сообщений и т.п.
Какие роли создавать – решаем сами. Роль соответствует некоему типичному набору действий пользователя. Например, на нашем сервере сделаем такие роли:
- everyone – техническая роль, означает «все, кто на сервере»; она уже есть и удалить её нельзя.
- сотрудник – назначаем роль всем сотрудникам, она дает способность видеть
в темнотевсе основные каналы. - админ – имеет права администрировать всё остальное. Главнее админов только владелец сервера, который и дает роли админам.
- кандидат – это не сотрудник, а тот, кого будем собеседовать. Данная роль позволяет придти на наш сервер (по приглашению) и участвовать в удаленном собеседовании: видит он только два канала «собеседование» – текстовый и голосовой.
- собеседующий – сотрудник, который проводит собеседование. Это не какой-то специальный человек, а просто любой сотрудник с дополнительной ролью. Собеседующий кроме всех своих каналов видит ещё текстовый и голосовой каналы «собеседование». Остальным сотрудникам (тем, кто не хочет участвовать в собеседовании) роль не даем и они не видят эти два лишних (для них) канала.
Остальные роли понятны без пояснений.
Каналы
Текстовые каналы на нашем сервере могут быть, например, такие:
- #welcome – новые пользователи попадают по приглашению в этот канал и ждут, пока им дадут роли для доступа к остальным каналам. Можно настроить какое-нибудь прикольное приветствие.
- #объявления – объявления для всех; без обсуждения
- #общий – любые темы, не вошедшие в более специализированные каналы
- #разработка – понятно
- #тестирование – понятно, можно сделать видимость только для роли @тестер
- #собеседование – понятно, можно сделать видимость только для ролей @собеседующий и @кандидат
- #сервер – обсуждение настроек этого сервера, только для @админ
- #корпоратив – обсуждение встреч, тимбилдингов, корпоративов
Структура каналов, как и структура ролей, делается под наши нужды. Создаем отдельный канал для любой долгоживущей темы и населяем канал нужными людьми при помощи ролей. Чем больше каналов, тем лучше пользователи защищены от ненужной им информации: либо они совсем не видят лишние каналы (нет ролей), либо сами избавляются от канала, заглушая его. Связка роли+каналы позволяет решить описанную в начале статьи проблему разделение по темам:
- Каналы «работы» и «детского сада» не перемешаются, так как они будут в пределах разных серверов.
- Каналы не уползают вниз и не меняют порядка, они на фиксированном месте.
- Добавление даже большого количества пользователей в созданный канал делается быстро, через права ролей в канале.
Вот как работает система прав Discord в конкретных кейсах.
- Нанят новый сотрудник: даем ему нужные роли. Он автоматически попадает в правильные каналы.
- Увольнение сотрудника: выгоняем с сервера.
- Создание нового канала: обычно клонируем существующий, если нужны те же права. Настраиваем права ролей – и пользователи автоматически попадают в канал.
Для сравнения эффективности этой системы с другими мессенджерами рассмотрите такую задачку:
Убрать уволившегося сотрудника из всех рабочих чатов в <любом мессенджере>. При этом полного списка чатов нет, а создатель чатов в отпуске.
Упоминания
Упоминания – ещё одна вещь, которая делает работу в Discord эффективной. Это когда мы пишем сообщение в текстовый канал, упоминая аккаунт с помощью специального синтаксиса:
<code class="plaintext hljs">@Vasya.Pupkin Твоя ревизия сломала билд!</code>
Можно упомянуть роль:
<code class="plaintext hljs">@тестер Помогите воспроизвести баг #12345</code>
А вот так можно упомянуть всех, кто есть в канале (любой из этих вариантов работает):
<code class="plaintext hljs">@here Присылайте отчеты!</code>
<code class="plaintext hljs">@everyone Присылайте отчеты!</code>
Тут вы можете сказать: «Ха! В Skype тоже можно упомянуть через @имя. И зачем упоминать всех, какой в этом смысл? Ведь сообщение и без того обращено ко всем».
Действительно, в Skype можно написать Vasya.Pupkin. Но в Skype вся польза от упоминания в том, что во всплывающем уведомлении будет добавлено, что «вас упомянули». Наверное, в этом есть смысл, но в Discord сделали лучше. Прежде всего заметим, что в Discord есть два вида нотификаций о новых сообщениях:
- Если вы вы не были упомянуты, то нотификация слабая: красный круг в таскбаре и маленькая чёрная пипка в названии канала.
- Если же вас кто-то упомянул, то нотификация более заметная: красный круг с числом в таскбаре, на иконке сервера и в названии канала; кроме того иконка Discord в таскбаре мигает оранжевым (пока приложение не получит фокус).
Дискорда мудрость:
Поток сообщений в текстовых каналах не требует внимания, пока пользователь не упомянут.
Легко видеть, что такой подход решает описанную выше проблему избыточных нотификаций, если немного обучить пользователей правильному стилю работы. Например, такому:
- Пока вас не упомянули, нет ничего срочного/важного для вас. Можно отложить чтение каналов до лучших времён.
- Если упомянули, значит есть что-то срочное/важное, нужно сразу же прочитать.
- Каждый срочный/важный пост должен содержать упоминание целевой аудитории.
- Весь остальной поток сообщений в каналах тоже надо читать, но в удобное для себя время.
Как это работает на практике. Пусть, пользователи пишут в каналы сервера те же 250 сообщений в день, как в примере выше. Из них сообщений, отвлекающих от работы (с упоминанием) очень мало: упоминание одного аккаунта вообще не считаем, т.к. оно не отвлекает всю команду. Отвлекают команду только широковещательные упоминания, например:
<code class="plaintext hljs">@here Кто может проконсультировать по вопросу … ? @here Техобслуживание сервера в 23:00, простой 5 минут. @тестер Кто может проверить несложный баг?</code>
И таких упоминаний в реальности очень мало, не более 2% сообщений. Обычно упоминают here когда задают вопрос не зная, кто конкретно может на него ответить. Все отвлекаются от работы и читают вопрос. Дальше люди, которым есть что сказать, остаются вести дискуссию, остальные возвращаются к своим делам. И не бойтесь, что here будет слишком много: лишний раз писать here в сообщении просто лень!
Также упоминаний не будет слишком мало. Хотя бы потому, что человек сам заинтересован позвать правильных людей упоминанием в своем посте, чтобы достичь нужного ему результата. Короче, всё это самобалансируется и получается норм. Что с остальными 98% сообщений? Их тоже надо читать, но не срочно. В удобное время с чашкой кофе прочитываем весь поток сообщений. Такое отложенное прочитывание не приводит к огромным потерям времени, как описано в начале статьи. Ведь читаем подряд, не переключая свой мозг между сообщениям и другими делами. И, что самое главное, сообщения не отрывают нас от работы.
Итого: проблема избыточных нотификаций полностью решена, и при этом обеспечено быстрое реагирование на важные сообщения.
А минусы какие?
Технические ограничения в Discord.
- Пожалуй, самое главное ограничение: видео и показ экрана только 720p (больше – с платной подпиской Nitro). Для показа кода и текста этого мало. Решение? Показывать экран через Skype или другую программу, которая хорошо это делает.
- Отправка файла в канал – не более 8 МБ (больше – с платной подпиской Nitro). Обычно хватает для всего. Если не хватает, то облачные хранилища уже изобрели.
- В не-серверном режиме в групповом чате не более 10 участников. Этого может быть мало. Но надо помнить, что не-серверный режим порождает избыточные нотификации (там любое сообщение считается упоминанием). Решение: использовать сервер.
- В одном сообщении не более 2000 символов; если больше, то предлагает отправить сообщение как файл.
- Поиск среди сообщений имеет много возможностей, но вот найти по заданной подстроке не может. Например, если искать «мили», то слово «фамилия» не находит.
Организационные.
- Регистрация пользователя чуть сложнее, чем в обычных смартфонных мессенджерах.
- Нужны админы (фактически, просто активные пользователи), которые изначально настроят роли и права.
- Нужно некоторое обучение пользователей, чтобы они правильно использовали упоминания и роли.
- Митинг в голосовом канале не имеет явного «звонка» в начале, который всех призывает. Будут забывать, но проблема решается напоминаниями
и ипатьевским методом.
Стандартные возможности
В этой статье рассмотрены принципиальные отличия Discord от других мессенджеров, позволяющие значительно увеличить эффективность работы. А вот список мелких фич, которые типичны для мессенджеров и не являются чем-то выдающимся:
- Цитирование. Упоминание сразу включено в цитирование.
- Форматирование: стандартный набор. Полужирный, курсив, подчеркнутый, зачеркнутый, моноширинный.
- Подсветка синтаксиса: есть для некоторых языков.
- Вставка картинок, GIFок, ссылок.
- Смайлики
- Добавка смайликов-реакций под сообщения. Видно количество реакций и кто какую реакцию поставил (удобно в том числе для быстрых голосований).
- Функция преобразования текста-в-речь.
- Глушение нотификаций с ненужных каналов (@упоминание проходит сквозь глушение).
- Вполне функциональные мобильные клиенты
А еще есть...
Боты и возможность написания своих ботов. Но это уже совсем другая тема.
Итого
Discord – это в некотором роде мессенджер 2.0, имеющий средства для эффективного общения больших групп пользователей, в том числе и в корпоративном применении. Создатели программы не побоялись выйти за рамки парадигмы обычных мессенджеров – и получилось неплохо. И в то же время Discord не конкурент обычным мессенджерам, у него своя экологическая ниша. Ведь у простых пользователей, не айтишников и не геймеров, наступает шок и трепет от необходимости администрирования и непохожести на привычные программы.
Спасибо! Теперь попонятнее станет.