Привет! Это Роберт из МТС Линк Чатов. Оргструктура компании и сами коммуникации обычно существуют параллельно друг другу: отделы и должности — в онлайн-доске или базе знаний, а общение — в мессенджере. Мы подумали: а что, если связать оргструктуру с коммуникациями и сделать так, чтобы сотрудники сразу начинали в ней работать при входе в мессенджер? Так мы пришли к идее Команд — раздела, где участники распределены по отделам и связаны с рабочими чатами. В статье расскажу, сколько макетов и гипотез отбросили, как шла разработка в целом и что дали Команды первым пользователям.
Когда идея витает в воздухе
Для общения в корпоративном мессенджере есть чаты и звонки, но что насчет выстраивания процессов между отделами? Чтобы узнать, с кем сотрудник работает и кто его руководитель, обычно нужно либо спрашивать лично, либо посмотреть профиль.
Сама оргструктура — это часто схема в онлайн-доске или вообще отдельный файл в базе знаний. К ней обращаются в основном руководители, а новички бегло знакомятся в первый день в компании, а дальше все переходят в рабочие чаты.
Но в рабочих чатах могут быть и другие сценарии, кроме общения с коллегами:
коммуникация в проектных группах, когда в одном месте собираются фронтендеры, дизайнеры, UX-специалисты, бэкендеры, тестировщики;
взаимодействие по бизнес-юнитам: «Студия дизайна» общается в одних чатах, а «Магазин на диване» — в других;
групповое обучение и обмен опытом: сотрудники из разных отделов и подразделений собираются, чтобы делиться знаниями, проходить курсы или участвовать в семинарах.
Все эти сценарии преимущественно возникают в рамках оргструктуры, и уже потом создаются чаты. Выявление потребности в них стало одним из первых этапов моей работы. Я начал общаться с руководителями компаний и IT-команд, чтобы понять их боли и узнать, насколько им важно общение в рамках оргструктуры. Оказалось, что кому-то удобно работать в разрозненных групповых чатах, а другие считают, что без коммуникации по отделам все корпоративные мессенджеры нелогичны.
Я, конечно, упахался, собирая все эти данные, но в результате гипотеза подтвердилась: 73% опрошенных сталкивались с проблемой переноса оргструктуры в корпоративный мессенджер. Оказалось, что каждый второй руководитель хотел бы создавать группы со своими рабочими чатами.
Осталось понять, как реализовать эту возможность. Было два варианта:
сделать отдельную админку для групп, но тогда фича была бы спрятана в глубинах мессенджера;
добавить группы в интерфейс мессенджера, чтобы они были доступны всем.
Оба варианта рабочие, но мы решили пойти по второму пути.
Ищем место в интерфейсе для нового раздела
В Линк Чатах на тот момент было четыре раздела: чаты, каналы, участники, обсуждения. Мы могли добавить к ним оргструктуру, но проблема управления общением все равно бы сохранилась.
Мы поняли, что новый раздел — это не только про схему организации, но и про объединение, коммуникации, администрирование и совместную работу. Поэтому лучшее название для него — это Команды.
В первую итерацию нам важно было добавить необходимый минимум функций, вокруг которых мы и будем строить раздел дальше. Это две базовые вещи: возможность объединяться в группы по оргструктуре и общаться внутри них.
На концептах мы примерно представляли, как все будет выглядеть: Команды — это карточки в одноименном разделе, в которых находится список участников и рабочих каналов. Сценарий простой: вы заходите в мессенджер, открываете Команду «Разработчики» и переходите в канал «Новый релиз».
Мы внедряли новую сущность в уже рабочий продукт, поэтому задумались, как менять его интерфейс. Сначала решили сократить разделы внутри Линк Чатов: взять и объединить новые Команды с каналами и участниками.
Наш продуктовый дизайнер Даша Шипилова начала создавать первые макеты. Основная трудность оказалась в корректном отображении вложенности каналов и организации общения внутри Команд:
Отказываемся от первоначальной задумки и меняем приоритеты
Продолжая тестировать макеты с пользователями, мы быстро обнаружили, что создание каналов внутри Команд мешает работе:
каналы дублируются, и участнику рано или поздно приходится отслеживать несколько одинаковых чатов;
пользователи, привыкшие к вкладке «Каналы» в Slack, теряются в новой навигации.
Если в начале мы думали, что Команды важнее каналов, то в итоге решили действовать от обратного. По такой логике каналы — это отдельная сущность в мессенджере. Мы поняли, что работать станет проще, если мы дадим возможность включать их в Команды свободно:
Администратор просто добавляет уже действующие каналы в команду или создает новые прямо здесь.
Участники Команды открывают список и переходят к нужным каналам, как по ссылке.
В итоге в первой итерации фича стала организационной: вы открываете Команды, чтобы быстрее находить рабочие чаты своего отдела.
Мы еще собираем обратную связь по использованию этой функции, но из всех проведенных исследований следует, что это было самое верное решение: дать больше гибкости и свободы в формировании каналов внутри Команд.
Оптимизируем огромную сторю
Разработка Команд затронула практически весь мессенджер: менялись основные части экрана, а еще возник риск высокой нагрузки. Команды будут создаваться не только для маленьких групп разработки по 10–15 человек, но и для объединения всей компании или отдельных бизнес-юнитов. В организации с несколькими тысячами сотрудников будет отображаться огромное количество сущностей.
Наш фронтендер Кирилл Горячкин вместе с командой провел нагрузочное тестирование: при 20 000 пользователей в командах не выявили никаких проблем. Это удалось сделать благодаря:
Постраничной загрузке (пагинации). Наш список участников формируется скроллом, поэтому мы догружаем список до нижнего края блока, а затем загружаем следующую пачку. В логике мы учитываем, все ли ты загрузил и были ли добавлены новые участники команды в процессе.
Виртуальному списку. При пагинации есть опасность, что пользователь будет скроллить очень долго, пролистает полторы тысячи элементов, и все они окажутся в памяти компьютера. Наш список хранит не сами элементы, а только их общее количество. Значения самих элементов запрашиваются у приложения непосредственно перед их отрисовкой на экране, что позволяет не хранить всю запрошенную ранее информацию в памяти DOM, а только ту, что видит пользователь в данный момент.
Собираем мозаику из фич внутри Команд
Команды позволили нам закрыть еще одну потребность у пользователей — групповые теги для упоминаний. Фича была одним из самых частых запросов, и мы решили пойти в этом направлении через новый раздел. Мы связали теги с Командами и дали возможность упоминать группы в чатах и каналах. Как мы работаем с запросами, рассказывали в статье «Ввод текста движением глаз и коробка для Linux? Как мы собираем запросы пользователей и используем их в разработке».
Без оптимизации групповых тегов тоже не обошлось. Когда мы пишем @ в окне ввода, приложение еще не знает, какой тег — групповой или личный — мы хотим ввести. Оно должно выдать все сразу: если у вас 1 000 пользователей и 300 Команд, то без пагинации они попадут в громадный общий список. Сейчас мы загружаем 20–30 элементов — только те, что пользователь видит на своем экране.
Еще мы сразу хотели сделать так, чтобы в Команды было приятно заходить. Поэтому добавили возможность выбора обложек. Сначала мы нарисовали абстракции и фигуры, но это было слишком скучно. Затем придумали сюжеты: драконы, граффити, гуси. Чаты у нас достаточно серьезные и строгие, а вот обложки теперь добавляют чуть больше фана.
Групповые теги и обложки — хорошие фичи, но есть продуктовые идеи, которые тебе очень нравятся, а ты не можешь их завалидировать и найти явное подтверждение на рынке. Это, например, треки в Командах — возможность создавать каналы с дедлайном, которые будут отражать проектную работу. Очень хочу вернуться к ним позже — уверен, они пригодятся дизайн-студиям, контент-отделам и образовательным учреждениям.
Концепт треков внутри командыПри клике на трек откроется обычный чат. Вот только у него прописан срок завершения, который виден всем пользователям.
Еще мне очень хотелось сделать дашборды с аналитикой Команд, где видно, как участники активно общаются друг с другом. Идея пока осталась только на макетах, надеюсь, что и к ней вернусь уже скоро.
Наша глобальная задумка
Команды в первой итерации — это раздел с участниками, групповым тегом, обложками и связанными каналами. Есть планы развивать его дальше: добавить инструменты для командной работы, отображать общие файлы и многое другое.
В перспективе есть идея сделать Команды единой сущностью для всех продуктов внутри экосистемы МТС Линк. Мы выстраиваем UCaaS-сервис, поэтому Команды могут хорошо лечь в эту концепцию. Внутри МТС Линк Чатов есть Встречи, Курсы и Доски — хочется сделать так, чтобы все взаимодействие с ними происходило именно через Команды.
Мои выводы о разработке
Команды позволили создать внутри мессенджера новый раздел, который помогает общаться в группах. Руководители теперь видят, кто и над чем работает, а участники — своих коллег и важные чаты. Так это выглядит для новичка, который впервые оказался в рабочем мессенджере:
Сначала ему хочется понять, кто его коллеги и в какие чаты ему идти. Если онбординг не провели, то перед ним будет пустой мессенджер — придется разбираться самостоятельно. Если же лидер добавил его в Команду, то все становится нагляднее: вот твоя Команда Dream Team, «Кодеры» или «Наташа, где деньги?», а вот они, слева направо, — сейчас коллеги и рабочие чаты, а скоро — общее файловое хранилище, база знаний и другие инструменты.
Раздел «Команды» уже появился у всех пользователей. Будем собирать обратную связь, анализировать ее, а потом улучшать наш новый раздел. Если у вас есть идеи или мысли, то пишите в комментариях — обсудим.
muntu
прикольно) мы когда-то при разработке сразу от команд отталкивались. сначала команда (по факту воркспейс), потом уже внутри деление на группы (административно или функционально) и чаты. и навесили на чаты группировку как в телеге. тоже было ок.
столкнулись с проблемой — межкомандные групповые созвоны, да даже один на один, тут была засада по архитектуре.
у вас есть такая проблема и если да, то как вы её решаете?