Как мы создали сервис подбора фильмов

от автора

Всем привет! Меня зовут Алексей, я выпускник курса «Менеджер проектов» и проджект-менеджер в Мастерской программирования — подразделении Практикума, где студенты создают IT-проекты для портфолио. Я расскажу, как мы работали над «Киноточкой» — сервисом, который рекомендует кино на вечер: как придумывали бриф, управляли задачами и планируем развивать продукт в будущем.

В создании материала мне помогли участники команды:

  • Ольга Смехова — системный аналитик,

  • Айсылу Кильсенбаева — дизайнер,

  • Антон Лысцов — фронтенд-разработчик,

  • Анна Король — инженер по тестированию,

  • Евгений Прудовский — специалист по Data Science.

Что такое «Киноточка»

Выпускники Яндекс Практикума могут пойти в Мастерскую программирования — подразделение, в котором студенты получают практику в реальных проектах. В мастерской есть несколько стримов практики. В одном из них, который называется «Акселератор», студенты разных направлений собираются вместе и создают IT-проект.

Тему дают в мастерской, но заказчиком выступает команда — участники сами решают, как будет выглядеть и как будет реализован проект. Специалисты мастерской не вмешиваются в процессы, а, скорее, направляют: отвечают на вопросы, контролируют дедлайны, проводят дополнительные встречи и ревью. Главная цель участников — не получить готовый продукт, а получить опыт взаимодействия в кросс-функциональной команде.

Я участвовал в мастерской, как и другие выпускники. Прошёл онбординг, меня добавили в один из проектов. Тема звучала так: «Платформа по рекомендации фильмов». Изначально в команде был 21 человек:

  • два проджект-менеджера,

  • два дизайнера,

  • два системных аналитика,

  • пять фронтенд-разработчиков,

  • пять бэкенд-разработчиков,

  • пять инженеров по тестированию.

В таком составе мы начали разрабатывать проект «Киноточка» — веб-платформу, которая помогает с выбором кино и всегда «попадает в точку» с ответом на вопрос, что посмотреть вечером (отсюда и название).

Как мы организовали процесс

На первой встрече мы устроили мозговой штурм: накидывали идеи, думали о референсах и предлагали функции. Потом стали знакомиться ближе и начали организовывать процессы. Например, заполнять Google-таблицу, которую нам дали в мастерской, — в ней были вкладки для План работ

План работ

Была табличка с вопросами для менторов — опытных разработчиков, аналитиков и дизайнеров, которые работают в мастерской.

Вопросы бэкенд-разработчиков и ответы менторов

Вопросы бэкенд-разработчиков и ответы менторов

Также нам предоставили организацию в Канбан-доска в GitHub

Канбан-доска в GitHub

Главным результатом первых дней стал фич-лист, который мы утвердили после нескольких итераций. Спойлер: в процессе мы его не раз меняли, например когда понимали, что не успеваем реализовать ту или иную функцию в обозначенный срок.

Каким будет сервис: системная аналитика и дизайн

Дальше было важно включиться системным аналитикам и дизайнерам. Системные аналитики создали User Story Map — документ, в котором показывается, как строится взаимодействие пользователя с продуктом. По задумке, разработчики должны обращаться к этому документу при проектировании сервиса, а тестировщики проверять, соответствует ли карте то, что получилось в итоге.

User Story Map

User Story Map

Дизайнеры в это время создавали «Дизайнер интерфейсов»

Готовый макет. В ленте новинок пока заглушки

Готовый макет. В ленте новинок пока заглушки

Мы действовали по Agile-методологии, а значит, вся команда включалась одновременно. Пока продукт проходил стадии аналитики и первой вёрстки, другие участники тоже занимались делом. Например, разработчики создавали репозитории в GitHub, получали и настраивали сервер, смотрели вебинары по «Инженер по тестированию»

Разработка и презентация

На третьей неделе наступила стадия непосредственной разработки. Фронтенд-разработчики переносили макеты дизайнеров в вёрстку. Бэкенд-разработчики делали API — «подкапотную» часть сервиса, которая отвечала за взаимодействие данных с фронта и бэка. Например, переносила данные в базу после регистрации пользователя. В общем, на этом этапе сервис обретал свою форму и логику.

Системные аналитики создали «Системный аналитик»

Первые две из 60 страниц спецификации API

Первые две из 60 страниц спецификации API

После первого месяца у команд было запланировано большое ревью с техлидом Андреем Прониным и создателем Акселератора и руководителем Мастерской программирования Дианой Наумовой. Что-то вроде презентации «Инженер по тестированию»

Критерии приёмки для тестировщиков в User Story Map

Критерии приёмки для тестировщиков в User Story Map

Выход Data Science: настоящие умные рекомендации

По условиям проекта, можно было пойти простым путём и просто рекомендовать пользователю фильмы в жанрах, которые пользователь отметил как любимые при регистрации. Но мы хотели добавить какую-то интересную логику. Всё-таки основная фишка платформы — точные рекомендации.

Так мы стали первой командой в мастерской, которая подключила к проекту специалиста по Data Science. Евгений реализовал для нас логику выдачи фильма в разделе «Специально для вас». По замыслу, этот блок на странице нужен, чтобы пользователь мог обновлять страницу — и получать новую рекомендацию.

Так могут выглядеть рекомендации

Так могут выглядеть рекомендации

Чтобы в блоке появились точные рекомендации, нужно авторизоваться и начать ставить фильмам оценки.

«Я выбрал гибридную модель, которая опирается как на коллаборативную фильтрацию, так и на контентно-ориентированный подход.

Коллаборативная фильтрация — это метод, основанный на анализе предпочтений, в нашем случае сходств между пользователями и оценёнными ими фильмами. Допустим, если Лёлек оценил „Открытые воды“, „Поворот не туда“ и „Пандорум“, а Болек — „Поворот не туда“, „Пандорум“ и „Сквозь горизонт“, то можно сделать вывод, что их вкусы схожи. Исходя из этого, „Открытые воды“ можно порекомендовать Болеку, а „Сквозь горизонт“ — Лёлеку.

Контентно-ориентированный подход шире и учитывает все явные признаки зрителей и фильмов. Например, возраст и пол пользователей, а также год выхода, продолжительность, актёрский состав и другие данные о кино. На основе этой информации выдвигается прогноз оценки пользователя для каждого непросмотренного фильма из базы и определяется топ-20. А из них уже случайным образом выбираются варианты, которые пользователь увидит на странице.

В ходе тестирования модели ошибка предсказания оценки составила около 1,5. В контексте задачи, где нам нужно не точно предсказать оценку, а лишь выбрать самые подходящие фильмы для пользователя, это немного», — Евгений Прудовский, выпускник курсов «Аналитик данных», «Специалист по Data Science» и курса английского для аналитиков и специалистов по Data Scienсе

К сожалению, плюсы этой функции пока трудно проверить по-настоящему. Всё из-за ограниченной базы фильмов. Мы добавляли их вручную, и всего их около 150. Мы понимаем, что если развивать сервис, то нужно придумать другое решение. Например, сайте уже заработает.

План-максимум — это привлечь ребят из маркетинга и проанализировать рынок, чтобы узнать, готов ли проект идти в коммерцию и что для этого надо сделать. Хотелось бы привлечь больше пользователей и посмотреть, как они пользуются продуктом. Узнать, как поведёт себя сервис с большой базой фильмов, когда люди начнут их лайкать и добавлять в избранное, подумать, как развивать алгоритмы.

Как работать в команде джуниоров

Вот несколько вещей, которые я понял, работая над проектом с 20 начинающими специалистами, сам будучи джуниором.

Общайтесь. Без коммуникации никак — проект общий, и результат вам нужен общий.

«Мы много спорили, пытались найти лучшее решение, общались в своих командах, постепенно узнавали больше друг о друге. Кто-то успевал найти работу и покидал нас, но продолжал интересоваться проектом. У меня было такое чувство, что я проработала в маленькой IT-компании несколько лет, — грустно было, когда работа над проектом закончилась», — Айсылу Кильсенбаева, выпускница курса «Дизайнер интерфейсов»

Не формулируйте слишком сложные задачи. Мы ещё не профессионалы, которые могут выполнить любое ТЗ, поэтому сначала стоит понять, какой ресурс есть у команды и отдельных её участников, а уже потом формировать запросы и ожидания от проекта.

«Это был сложно для нас, тех, кто только закончил обучение. Огромная команда, разные направления, и задача — сделать MVP через месяц и работоспособную версию продукта через два. 20 человек — и вначале никто не знает, с чего начать, как распределить задачи по времени. Но все горели и были готовы тратить много времени — в самые сложные моменты мы проводили четыре созвона в неделю по два-три часа», — Антон Лысцов, выпускник курса «Веб-разработчик» (сейчас — «Фронтенд-разработчик»)

Используйте проект, чтобы узнать больше. Гуглите и ходите за советами — работа над реальным проектом всегда требует новых знаний и обнажает серые зоны в образовании. Я ходил к бэкам, фронтам и другим участникам каждый раз, когда у меня возникали вопросы. Эти знания пригодятся.

Получайте удовольствие! Лично мне даже не хотелось расставаться с ребятами. Мы периодически созваниваемся — иногда чтобы просто поболтать, иногда чтобы что-то запланировать вместе. Участие в таком проекте — классный опыт, который должен радовать.


ссылка на оригинал статьи https://habr.com/ru/articles/781694/