Мы разработали корпоративную звонилку, но не выпустили её на рынок Статьи редакции
Привет, это небольшая история о том, как продуктовая команда vc.ru в свободное время занялась сторонним проектом, но переоценила свою экспертизу в разработке кросс-платформенных приложений и неправильно определила MVP. Наша очередь делиться неудачными кейсами.
Как родилась гипотеза
То, что стало повсеместным с появлением коронавируса — дистанционная коммуникация — для нас, как и для многих других ИТ-компаний, уже давно является обыденностью. 80% коллектива распределены по России и СНГ, то есть вся работа строится виртуально: Slack, Jira, корпоративный портал (на платформе, на которой мы запускаем медиа) и звонилки. Нас устраивали все инструменты, кроме тех, в которых мы проводили голосовые совещания.
Два года назад, когда о пандемии ещё даже не шло речи и рынок не был завален большим количеством разнообразных звонилок, мы стали искать для себя удобный инструмент нетекстовой коммуникации. Zoom никому в команде не нравился по самым разным причинам, а встроенные звонки в Slack, который мы используем как мессенджер, сильно тормозили. Чаще всего мы созванивались через лаконичную веб-версию Whereby.
Наших разработчиков раздражало, что для каждого звонка нужно создавать ссылку или отдельно собирать людей по мессенджерам сообщением «Пошли поговорим», потому что встречи в распределенной команде длятся целый день.
В большинстве случаев мы общаемся с одними и теми же людьми на одни и те же темы.
Таким образом, например, бэкенд-разработчики будут находиться на связи, как по рации. Именно они собрали себе прототип на NodeJS, назвали его Heyka («приветик» по-польски):
Прототип всем понравился
Применение модели Discord в корпоративном общении с открытыми и закрытыми каналами пришлось по душе сразу всем отделам компании — мы начали использовать его на ежедневной основе уже в форме прототипа. Он заметно сократил время на организацию коммуникации в компании. Отдельно понравилось то, что разработчики могли подключаться к совещаниям дизайнеров или менеджеров, чтобы следить за эволюцией продукта (и наоборот), потому что недостаток горизонтальной коммуникации — главная проблема распределенных команд.
Всё это навело на мысль попробовать обличить его в нормальный интерфейс и раздать на тестирование нескольким командам. Мы наняли и выделили в отдельную команду троих разработчиков.
Как устроена Heyka
Взаимодействие с Heyka начинается с экрана логина. Мы задумывали его как расширение для корпоративных систем вроде Slack, MS Teams и прочих. Авторизация через них позволяет быстро пригласить коллег и даже продублировать каналы или чаты:
В уже рабочем виде компактное (это было для нас важно) приложение по своей структуре напоминает привычные, но уменьшенные в размере, инструменты коммуникации: Slack, Telegram, Discord. Слева находятся публичные и приватные каналы, список коллег для индивидуальной коммуникации:
Пользователь выбирает канал, видит список участников и заходит в него через кнопку Connect. Для приглашения внешних гостей есть возможность сгенерировать временную ссылку для входа через веб-версию:
После входа в канал, если активируется другое окно в системе, Heyka сворачивается до маленькой плашки с основными элементами управления:
Конечно, звонок можно быстро развернуть:
Например, чтобы посмотреть чей-то шеринг экрана.
Хотя смотреть можно и фоном, в компактном режиме. Видео переключается на того, кто говорит:
Одним из принципиальных моментов для нас было то, что входящий звонок в 2021 году не должен перекрывать никакие окна, вешать систему и насаждать длительным звуковым сигналом — это просто обычное уведомление из мессенджера. Сама Heyka быстро активируется из системной панели в правом верхнем углу на MacOS, как часы или переключение языка, и правом нижнем на Windows.
Мы предполагали, что некоторые пользователи, особенно разработчики, могут не согласиться сидеть в каких-то каналах «фоном», хотя это и необязательно — каждый использует по-своему. Все равно для них предусмотрели вкладку, которая показывает все действия и данные, которые приложение отправляет на сервер.
Конечно, никакая коммуникация невозможна без мобильных приложений.
Где начались ошибки
Начались они на стандартной и распространённой для неопытных команд развилке: выпустить продукт с минимальной функциональностью — каналы и голосовое общение — или допилить «ещё немного фишек, так ведь будет круче». Мы не успели заметить, как стали больше думать, что мы делаем, а не зачем. А видео? А шеринг экрана? А рисование? А приватные каналы? А текстовый чат?
Менеджерские ошибки повлекли за собой в том числе проблемы в коде. Мы традиционно являлись веб-разработчиками — это наша специализация. Поэтому не очень ясно, о чем мы думали, когда говорили друг другу «Heyka будет работать на всех платформах: Mac, Windows, iOS, Android, Web, Linux». Нам достаточно было сделать веб и мобильные приложения.
В итоге эксперимент превратился в сложный долгострой, каждый шаг только усложнял его, и наступила пандемия, которая в буквальном смысле взорвала рынок. Голосовой коммуникацией занялись все, в итоге их сделал и сам Slack и, наконец-то, Telegram.
В конце концов, было наивно полагать, что без опыта в архитектуре, просто на готовой технологии WebRTC, мы сможем построить глобальный продукт. Хотя представленная функциональность уже работает.
Что будет дальше
О самом эксперименте, конечно, не жалеем — было интересно, многому по ходу дела научились. Эксперименты проводить полезно, но ещё полезнее — вовремя их останавливать. Мы в этом году привлекли небольшие инвестиции, поэтому хотим сейчас сфокусироваться на развитии нашей основной платформы, а уже потом, с учётом ошибок, вернуться к теме корпоративной коммуникации, которая нам очень интересна. Пока что продолжаем пользоваться Heyka внутри компании — наши нужды она покрывает.
Для продукта сейчас видим несколько сценариев
- Продажа тем, кто умеет и хочет делать такие продукты.
- Поиск технических партнёров, с которыми мы сможем продолжить в качестве продуктовых менторов.
- Если ни то, ни другое не случится до нового года, то мы просто опубликуем на ProductHunt её исходный код — вдруг кому-то пригодятся наши наработки.
Какие технологии использовали
- Фронтенд: Electron, Vue, Vuex, Stylus
- Бэкенд: NodeJS, Hapi, Postgres, Redis
- WebRTC: Janus (в этой части мы, похоже, с выбором ошиблись)
У невыпущенного продукта есть сайт, который мы не доделали — heyka.app. Писать письма и вопросы можно на [email protected].
Так а чем первоначально Discord-то не угодил? Что он звонит, а не один раз пиликает? Эт наверное решаемо
Дискорд - тяжелый java-монстр, еле ворочается на простых машинках, постоянно глючит и тормозит. На геймерских компиках он конечно более-менее сносно работает.
Да зашибись он работает, если тормозит, то просто наверное пора уже ноутбук 15-летней давности на Core 2 Duo и 2 ГБ оперативки обновить.
А чем плох core2duo 15 летней давности для голосовых конференций?
Ну мне на самом деле что ли надо объяснять очевидные вещи?
Ну хорошо.
Массовый софт делается для массового железа.
15-летний ноут (причем который изначально был уже low-end) - это не массовый сегмент, на сегодняшний момент в 2021 году. Это разве что железо каких-то унылых гос контор - но им и не нужны никакие конференции, очевидно
Впрочем, для маргиналов с 15-летними ноутами есть голосовые конференции на С++, ради бога.
Есть понятие соотношение цена/качество/продуктовые фичи/время выхода на рынок.
Есть всякие технологии/фреймворки/языки, убыстряющие и удешевляющие производство (которые кстати упомянуты в этой статье).
Почему-то в статье не стали писать такую прогу на С++, без посторонних фреймворков на голых сокетах, чтобы уж точно было максимально производительно.
А знаете почему?
Потому что у них было 3 человека, а так было бы нужно 15.
И время минимум год, скорее даже полтора.
Плюс 15 хороших плюсовиков быстро не так-то легко найти, даже в Москве, даже на хорошую зарплату.
А плюсовики нужны либо хорошие, либо никакие.
Потому что это такой язык, что там плохой член команды слишком легко может накосячить, причём так, что потом будешь месяцами плавающий SIGSEGV ловить в его коде.
А 3 Java прогеров средней паршивости во-первых и найти вообще без проблем, во вторых они и накосячить уж совсем жестко не смогут, при всём желании.
Ну и так далее.
Евгений, у вас устаревшие сведения. Вилка С++ зарплат сейчас ниже чем java, а уровень специалистов выше.
Да я даже пожалуй соглашусь.
Но я не о зарплатах говорил, а о том, что штук 10 хороших плюсовиков реально трудно будет найти быстро, даже в Москве, и даже если выше рынка зарплату предложить.
Вот только Дискорд на Электроне.
Ах ну да. Это все меняет!
На самом деле, почти всё.
Простые машинки, это старые буки на атоме с 2 гб ОЗУ?
Комментарий недоступен
какая java, клиентское приложение на электроне написано и летает на почти любом железе последних 5-7 лет.
Это точно, согласен. Даже новые маки на М1 знатно с него присаживаются, UI не успевает вообще