Осенью ’24 года к нам обратилась директор по продукту «Синхронизации» Таня Лунина.
До пандемии «Синхронизация» собирала людей офлайн и проводила увлекательные лекции про искусство, науку и историю. Теперь они делают лучшие онлайн-лекции на русском языке. Основное отличие от конкурентов — качество. Лекторы с профильным образованием и большим опытом, профессиональная съемка и монтаж видео. В общем, лекции, на которые сложно попасть вживую, доступные онлайн.
При этом пользовательский опыт оставлял желать лучшего. Курсы было сложно найти, была даже проблема с тем, чтобы продолжить смотреть с того момента, где остановился. За рекордные 3 месяца мы вместе с Синхронизацией переделали «движок» и запустили «Netflix для культурного контента». Сейчас расскажем, как мы это сделали.
У Синхронизации хороший продающий лендинг, проблемы начинаются после регистрации, в личном кабинете:
Конечно, всё это отражалось в аналитике — 15% купивших подписку пользователей не добавляли себе ни одного курса, а продлевали подписку только 20%.
Обычно перезапуск подобной системы занимает 6–12 месяцев. У «Синхронизации» не было столько времени — команда хотела успеть к сезону в новом году.
Сначала наш архитектор провел детальные интервью с «Синхронизацией»: вместе мы расписали все боли бизнеса и зафиксировали текущую техническую архитектуру.
«Синхронизация» назвала срок 3 месяца, поэтому нужно было понять, что реально успеть за это время. Мы предложили взяться за личный кабинет и контентную админку, а всё остальное отложить на следующие этапы. План ребятам понравился — и после этого мы выделили 3 больших блока работ:
3 месяца — безумно маленький срок для перезапуска такой платформы. Чтобы успеть, мы расписали понедельный план на 3 месяца вперед и в результате выкатили первую версию в прод ровно в назначенный день — 3 февраля. В это трудно поверить и мы этим очень гордимся!
Удобные, быстрые и красивые интерфейсы — важная часть этого проекта. Обычно это не очень сочетается с супер сжатыми сроками.
Для того, чтобы справиться, наши фронтендеры, дизайнеры студии MateÇa (Маца) и бэкендеры работали параллельно.
Дизайнеры и фронтендеры встречались несколько раз в неделю и делились друг-с-другом текущими, промежуточными результатами. Фронтендеры консультировали дизайнеров: вместе решали, можем ли легко внести те или иные изменения, где они отразятся, и о чем еще следует подумать в макетах.
За счет того, что на этих встречах участвовал клиент, у нас получилось совместными усилиями сильно упростить продукт.
Парадоксальным образом, мы пришли к покомпонентной разработке: сначала программировали отдельные элементы в библиотеке компонентов, обсуждали их с дизайнерами, показывали на демо клиенту и только потом собирали готовые страницы. Так у дизайнеров была большая воля творить и менять продукт, а клиент каждую неделю видел прогресс
Покомпонентная разработка — норма в больших, стабильных проектах, а в МВП, которое быстро и много меняется в процессе работы, часто проще сделать «на коленке». В этом случае получилось наоборот.
В результате мы не только запустились в сжатые сроки, но ещё и оставили клиенту большую протестированную, актуальную библиотеку компонент. Это радикально ускорит запуск будущих проектов Синхронизации — например, мобильных приложений.
Фронтенд-стек: TypeScript, Vue, Pinia Colada.
Раньше Синхронизация активно использовала GetCourse — самую популярную площадку для курсов в рунете. «Геткурс» слабо кастомизируется и требует целеустремленности со стороны пользователя. Как уж тут конкурировать с Netflix и Ютубом, в которых от контента отделяет один клик?
Сразу заменить «Геткурс» целиком — слишком большой риск. Мы сделали такую архитектуру, чтобы «Геткурс» и новая система могли работать параллельно. Тут было важно не поломать старые связи с промостраницами продуктов — и аккуратно передавать данные о покупках, подписках, возвратах.
Такая архитектура открыла бизнесу штуку, о которой многие мечтают — поэтапную раскатку. В начале мы дали доступ к новой платформе только самым лояльным пользователям. Благодаря такому «тестированию на проде» мы собрали обратную связь от реальных пользователей, исправили недочеты. Когда что-то не работало — клиент всегда мог открыть старую версию, и бизнес ничего не терял.
В новой системе мы заложили большую гибкость на будущее: например, можно разбить курсы на этапы с отдельной оплатой. На «Главной» сделали модульность: теперь добавить новый блок со своей логикой на бекенде — задача пары часов. Мы думали не только о том, что платформа умеет сегодня, но и о цене её развития в будущем.
Центр «Синхронизации» — видео контент. При этом делать свою собственную систему доставки видео и видеоплеер — дорого и непрактично. Мы интегрировали Kinescope — готовую платформу для видео. При этом важно не оказаться заложником внешнего вендора. Мы сделали такую интерацию, чтобы в будущем можно было безболезненно сменить видеоплатформу.
Старая админка была сложной и запутанной. Разработка новой кастомной админки заняла бы не менее полутора месяцев.
Поэтому на этапе проектирования мы помогли сформировать требования так, чтобы данные можно было представить в основном в табличном виде. Это дало возможность использовать стандартную админку Django.
В результате, контент-менеджеры «Синхронизации» получили инструмент с продвинутыми функциями, такими как версионирование, практически без дополнительных затрат. Благодаря нашей экспертизе в Django и гибкости клиента мы ускорили запуск минимум на месяц.
Если в будущем структура данных или требования усложнятся, команда сможет доработать кастомную админку — как мы уже сделали для «Вебиума».
При этом мы внимательно слушали обратную связь контент-менеджеров и вносили недорогие правки, которые упрощают им работу.
Нашли решение, которое подходило под сжатые 3 месяца, вместо того, чтобы закрыться на год со словами «Всё переделать!»
Когда клиент что-то хотел поменять уже после начала работ — мы по возможности шли навстечу. Это работало и в обратную сторону — если мы видели, что какая-то функция занимает очень много времени и предлагали более простое решение — Синхронизация соглашалась.
Дизайнер «Синхронизации» стал частью дизайн-студии, а наша разработка подхватывала макеты прямо в середине спринта (недели) и была на постоянной связи с продактом «Синхронизации»
Прямо сейчас собираются цифры, которые покажут реальный результат нашей работы. Для этого мы настроили всю продуктовую аналитику: Mindbox, Amplitude и другие. Как только цифры накопятся, обязательно добавим их сюда. А что у «Синхронизации» уже есть, это отзывы пользователей:
А еще мы разрабатываем мобильное приложение «Синхронизации». Чтобы конкурировать с ютубом и нетфликсом, нужно быть на домашних экранах смартфонов и планшетов. Приложения мы разрабатываем на веб-технологиях, так что не приходится заново переделывать то, что уже сделали для сайта.
Об этом расскажем отдельно позже.
Параллельно мы помогли «Синхронизации» собрать свою команду разработки.
Для этого привлекли лучших эйчаров из NEWHR — они поставляют кандидатов, мы проводим технические собеседования, клиент — собеседование на culture fit. Если кандидат всё прошёл, мы включаем его в работу, а своих ребят постепенно убираем.
В результате, у «Синхронизации» есть запущенный продукт, настроенные инструменты CI/CD, процессы и команда, которая отлично разбирается в проекте. И главное — высокие, но реалистичные ожидания бизнеса от разработки и здоровая рабочая культура между разработкой и остальными частями бизнеса.