В компании ИВИ, ведущем онлайн-кинотеатре, наша команда разработчиков занимается созданием приложения для платформы Android. Недавно мы успешно выпустили версию для Android TV, используя инновационный инструмент — Jetpack Compose. Несмотря на то, что библиотека Compose для ТВ еще находится в альфа-версии, мы хотим поделиться своим опытом, рассказать о трудностях, с которыми столкнулись, и обратиться к вопросу: стоит ли использовать Jetpack Compose, особенно для ТВ-приложений?
Объяснение рекомендаций
Рекомендательные системы уже давно неотъемлемая часть большинства современных веб-сервисов. Скорее всего, заходя на какой-либо развлекательный (и не только) сайт, вы не раз задавались вопросом, почему именно этот контент или этот товар предлагается вам.
В Иви давно заметили, что недостаточно просто рекомендовать что-то пользователю, важно объяснять свои действия. Если пользователю покажут незнакомый контент, то он будет воспринимать это как нечто неинтересное.
Поэтому хочется, чтобы пользователь понимал:
- Насколько ему могут быть интересны наши рекомендации.
- Зачем мы ему это показываем.
Меня зовут Андрей Макаров, я разработчик рекомендательной системы онлайн-кинотеатра Иви. В этой статье я расскажу, зачем мы объясняем рекомендации на нашем сервисе, что для этого уже сделали и что только планируем.
В следующей серии… Как устроены UX-исследования в Иви
Привет, Хабр! Меня зовут Евгения Савельева, я руковожу отделом UX-исследований в Иви. С коллегами мы шутим: исследования как сериал - всегда есть что-то, что узнаешь только в следующей серии. А еще, по результатам исследований у нас самые интересные встречи! Решили рассказать, как устроены UX-исследования* в Иви: благодаря им растут не просто метрики, а нечто более важное – любовь пользователей.
Во многих компаниях UX-исследователи работают либо как агентства внутри компании, либо исследователь прикреплен к продуктовой команде. У нас получился гибридный подход: с одной стороны, наш UX-отдел универсален и делает исследования для всех. С другой, исследователи довольно сильно интегрированы в процесс разработки продукта.
В этой статье я расскажу о наших процессах, их влиянии на эффективность работы, а также о лайфхаках, как небольшая команда исследователей из двух человек может успевать делать все необходимое.
Плоская сеть для Kubernetes
Приветствую тебя, %username%! Меня зовут Владимир Жуков, и я не хочу впаривать тебе очередную историю успешного успеха про Kubernetes. Я хочу рассказать о наших кластерах Kubernetes с необычной архитектурой. «Что же там необычного?» спросишь ты. Это самая сложная и непонятная часть кластера, это сеть. Я знаю, что идея плоской сети не новая и применяется много у кого, но кажется об этом еще не кто тут не писал.
Как растить людей: диктатура здравого смысла
На днях студент нашей совместной с МАИ магистратуры дал очень интересный комментарий. Это было по мотивам лекции, на которой я рассказывал о целях по SMART, тайм-менеджменте и способах планировать рабочее и личное время.
"Меня удивил лектор. Человек уже давно не подросток, имеется отличный статус в компании, многого добился, но не останавливается на своём развитии.
Раньше мне казалось, что учиться нужно в школе и универе, а потом устроиться на работу и отдыхать, ведь ты всё уже знаешь.
Но оказывается в развитии личности нет предела, можно стараться стать лучше сколько захочешь. Главное найти правильный вектор, "правильно ставить правильные цели" и окружаться себя такими же, желающими развиваться, людьми."
И, несмотря на сохраненную авторскую пунктуацию, на этом можно было бы закончить эту статью.
Но в этом случае наш HR-департамент меня не похвалит :-)
Как персонализация постеров помогла IVI повысить CTR и конверсию в просмотры
Синтетические постеры для кино: как обрезать логотип телеканала, хардсабы и чёрные грани
На IVI пользователи выбирают кино для просмотра, ориентируясь в первую очередь на постер и название фильма. Обычно правообладатель предоставляет один постер для каждого фильма и сериала, но бывают ситуации, когда могут понадобиться дополнительные/альтернативные изображения. Их создание — трудоемкая задача, потому что с помощью этих изображений нужно передать содержимое контента. Чтобы упростить её, мы прибегаем к генерации синтетических постеров. В этой статье я немного приоткрою занавес и расскажу о том, как мы удаляем визуальный мусор в процессе создания постеров.
Дизайн-система IVI. Взгляд изнутри. Часть 2
Это вторая часть статьи про нашу дизайн-систему. Первая часть выходила раньше.
В этот раз речь пойдёт о философии нашей работы, взаимодействии с дизайнерами и клиентскими разработчиками; о трудностях, с которыми сталкиваемся, и как их преодолеваем; о том, как мы развиваем нашу ДС.
Дизайн-система IVI. Взгляд изнутри. Часть 1
Дизайн-система в нашей компании существует с 2018 года. По поводу неё уже была статья от дизайнеров и выступление от техдиректора. Самое время рассказать, как ситуация выглядит изнутри самой дизайн-системы.
По мере написания стало понятно: материала слишком много, чтобы уложить его в одну статью. Поэтому чуть позже мы опубликуем вторую часть.
В первой же части статьи речь пойдёт о том, как и почему у нас появилась дизайн-система; как она устроена и что в ней хранится; как клиентские приложения IVI получают и обрабатывают данные из дизайн-системы; как мы добавляем в ДС новые сущности и как избавляемся от устаревших.
Как лояльные пользователи помогают тестировать любимый сервис. Бета-тест IVI — грани невозможного
Меня зовут Святослав, в онлайн кинотеатре IVI я отвечаю за бета-тестирование. Хочу рассказать вам про то, как пользователи сервиса могут принимать активное участие в его тестировании, получать от этого удовольствие и вносить неоценимый вклад в его качество.
Пользовательский опыт в IVI: как измеряем и как улучшаем
Как можно измерить успех бизнеса? Конечно, бизнес-метрики типа выручки и количества транзакций, продуктовые метрики и доля рынка помогают оценить, насколько востребован сервис, но этого не всегда достаточно. Очень полезно понимать впечатления и эмоции, которые получает клиент от использования продукта — это дает возможность понять, что нужно улучшать. Именно поэтому у нас в IVI действует целая система измерений пользовательского опыта, которая позволяет всей компании узнать альтернативную точку зрения на то, как клиенты оценивают наш сервис.
При этом впечатления и эмоции измерить очень сложно, потому что у нас есть много точек контакта и огромное количество часто противоречивой обратной связи от пользователей. Кроме того, у менеджеров и разработчиков есть личные ощущения от продукта — мы сами внутри очень часто обмениваемся мнениями, что нам в нашем сервисе нравится, а что нет.
Как же преобразовать все это восприятие в цифры и количественные показатели?
Подсказки по написанию тестов в приложениях на Go
В нашей компании в стеке разработки есть язык Go. И иногда, при написании unit-тестов к приложениям написанным на Go, у нас появляются сложности. В этой статье мы расскажем о некоторых моментах, которые мы учитываем при написании тестов. На примерах разберём как их можно использовать.
Путь IVI от монолита к микросервисам
В этой статье мы не откроем ничего нового об устройстве монолита и микросервисной архитектуры. Про это сказано немало слов, написано ещё больше. Мы расскажем о том, как через это прошла наша компания и какие преимущества и недостатки микросервисной архитектуры мы для себя обнаружили.
Как мы в IVI используем массивы в ClickHouse для подсчета продуктовых метрик
IVI – кросс-платформенный сервис, а значит, мы должны анализировать метрики всюду: на вебе, телевизорах и мобильных приложениях. Продукт непрерывно развивается, чтобы стать максимально эффективным, удобным и повысить ценность и привлекательность подписки. Перед тем, как внедрить какую-то новую фичу, мы проводим a/b-тесты и исследуем, на сколько востребованным окажется нововведение и как оно повлияет на конверсию или смотрение. Одновременно у нас может проверяться до 70-ти гипотез, от которых непосредственно зависят планы по развитию продукта.
Для того, чтобы правильно оценить успешность или неуспешность теста, требовалось технологичное решение. Новая схема ETL позволила нам иметь хранилище, толерантное к дубликатам. При ошибке в коде мы всегда можем откатить consumer offset в kafka и обработать часть данных снова, не прилагая лишних усилий для движения данных. Хотим рассказать о том, как мы в IVI используем ClickHouse, чтобы посчитать метрики для решения разных продуктовых задач и понять, что мы действительно делаем продукт лучше, а не придумываем фичи, которыми никто не будет пользоваться.
Автоматическая документация для Flask с использованием OpenAPI
Техническая документация, как известно, крайне важная часть любого проекта. До недавнего времени мы прекрасно жили с таким генератором документаций как Sphinx. Но наступил момент переходить на технологии с бОльшим набором возможностей, поэтому мы приняли решение переписать нашу документацию на более современный стандарт: OpenAPI Specification. Эта статья является скромным гайдом по такому переезду. Она будет интересна Python-разработчикам, особенно тем, которые используют Flask. После ее прочтения вы узнаете, как создать статическую OpenAPI документацию для Flask приложения и развернуть ее в GitLab Pages.
Профессия СТО, часть 2
Недавно наш СТО Евгений Россинский @eross пообщался с ведущими подкаста “Подлодка” про роль СТО. По мотивам этого общения мы подготовили две статьи с основными вопросами о СТО - как им стать и каково им быть, как его найти и сколько это стоит. Сегодня мы публикуем вторую часть этого интервью (первую часть можно прочитать тут).
Профессия СТО
Недавно наш СТО Евгений Россинский пообщался с ведущими подкаста «Подлодка» про роль СТО. По мотивам этого общения мы подготовили две статьи с основными вопросами о СТО — как им стать и каково им быть, как его найти и сколько это стоит.
Переброска данных между идентичными объектами метаданных базы 1С через подмену УИДов в базе SQL
При возникновении необходимости миграции с одной конфигурации поставщика на другую, либо при обновлении доработанной конфигурации, если Поставщик позднее добавил тот объект, что был у нас добавлен самостоятельно, может оказаться, что старый и новый объекты имеют разные внутренние идентификаторы. При сравнении/объединении конфигураций видно, что старый документ не находит соответствие с новым, так как у них различные внутренние идентификаторы метаданных, а при загрузке (обновлении) новой конфигурации поставщика старый документ удаляется вместе со всеми введенными документами.
Внедрение IMA SDK в Android-приложениях
При публикации приложения ivi kids в Google Play мы столкнулись с проблемой, что наше внутреннее рекламное SDK не соответствовало требованиям Google, и приложение могло быть удалено из магазина. Поэтому мы отключили всю рекламу, чему очень обрадовались юные пользователи, но департамент маркетинга был хронически недоволен финансовыми показателями.
Наиболее логичным выходом из ситуации оказалось проигрывать рекламу, которую раздает сам Google с помощью сервиса Google Ad Manager. И делать это с использованием IMA SDK, которое также является продуктом Google.
В этой статье я расскажу о том, как мы внедряли IMA SDK в приложениях ivi и ivi kids и с какими ограничениями столкнулись.
Между дизайн-системой и Server Driven UI
Всем привет! Меня зовут Владимир Касаткин, и я работаю бэкенд-разработчиком в компании ivi.ru, в команде "UX". Цель этой статьи — показать, как мы уменьшили объём клиентской разработки, но при этом увеличили количество проводимых A/B-тестов.
Раньше вся продуктовая разработка была разбита на большие направления ("платформы"): бэкенд, Smart TV, iOS, Android, веб. При этом фичи пилились достаточно долго (по полгода), а побочным эффектом были заметные различия внешнего вида и функционала одной и той же фичи на разных платформах.
Потом нас разбили по маленьким кросс-функциональным командам. Разработка пошла быстрее, костылей и платформенных различий на клиентах становилось всё больше.