Skip to content

YaBackSchool2021/homework1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

Задание

Задание состоит из 2-х частей.

  1. Требуется продумать архитектуру одной фичи в приложении Яндекс Go и описать своими словами проработку. Ниже описан примерный план, что должна включать в себя проработка.

  2. Выполнить ревью минимум двух проработок, написанных вашими коллегами. Попытаться понять, что он предлагает, и если получится, найти какие-то проблемы.

Предлагается оформить проработку в Markdown формате и залить на GitHub в виде pull-request'а, чтобы проще было ревьюить и комментировать вашу работу.

После выполнения ревью вашей проработки, следует либо внести доработки в архитектуру (поправить замечания), либо аргументированно объяснить, что ваше решение ок).

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

Если вы хотите, вы можете просмотреть более, чем 2 работы. Но 2 – это обязательный минимум.

Дедлайн: 14:00 9 июня

Технический чат для вопросов и обсуждения: https://t.me/joinchat/K_TVYjiSwyAwNzFi

Решение вашей домашней работы №1 нужно разместить пулл-реквестом в свою папку в репозитории Школы: https://github.com/YaBackSchool2021/homework1 Название вашей папки нужно сделать в формате «имя-фамилия» транслитом. Например, «veronika-starkova».

Ревьюерами укажите тех, кто указан в табличке на Вики (и дополнительно их проинформируйте по готовности)

Вам должно было прийти приглашение на тот аккаунт в GitHub, который вы указывали при регистрации в Школу. Напишите Нике в личку, если этого не произошло

Рекомендации

Не стоит делать проработку слишком большой. Делайте основной упор на качество проработки, а не на количество текста.

Примерный план, над чем стоит подумать и что описать:

  • небольшое описание задачи, постановка гипотез, понять, что улучшаем и зачем делаем фичу

  • MVP. Подумать, как можно сделать фичу минимальными усилиями, где можно срезать углы. Подумать над этапами реализации (описать MVP-вариант и полноценный)

  • схематично изобразить архитектуру/основные сценарии (какие есть компоненты, как связаны между собой, какие ендпоинты вызываются и откуда). Например, для этого можно использовать sequence diagram (plantuml)

  • описать протокол и API взаимосвязей между компонентами, например используя swagger (можно описать только 1-2 наиболее сложных ендпоинта)

  • описать несколько тестов разного типа (юнит, интеграционные, нагрузочные), на свое усмотрение. Подумать над граничными ситуациями

  • подумать над форматом эксперимента для включения фичи, на кого стоит включать в первую очередь, какие кварги использовать, за какими бизнесовыми и техническими метриками следить

Данный список пунктов является рекомендательным, а не обязательным. Если вы считаете, что что-то можно исключить или добавить что-то ещё (например, из материалов лекции), то можете делать, как считаете нужным.

//Дисклеймер: данное домашнее задание является экспериментальным форматом и не будет строго оцениваться по всем перечисленным пунктам. К заданию стоит подходить творчески//

Варианты

На выбор предлагается несколько вариантов фичей, которые уже существуют в приложении Яндекс Go, вы можете выбрать любую из предложенных или придумать свой вариант. Для своего варианта можно взять как уже существующую фичу, так и придумать что-то новое.

Для всех вариантов не нужно придумывать базовую логику работы такси. Считаем, что уже есть готовая система, включающая в себя:

  • клиентские приложения для водителей и пассажиров
  • авторизация и хранение данных пользователей, водителей
  • функциональность для выполнения полного цикла заказа (выбор нужного тарифа, поиск водителя, выполнение заказа, процессинг оплаты)
  • админка для работы со всеми данными в системе (поиск и просмотр заказов, просмотр информации о пользователях и водителях, редактирование тарифов, работа с конфигами и экспериментами)

Фича 1 - Рейтинг пассажира

https://taxi.yandex.ru/action/rating_ru

Нужно продумать логику выставления оценки водителем после завершения поездки, описать, где и в каком формате должен хранится рейтинг. Подумать над честной формулой вычисления общей оценки. Понять, какие нужны ендпоинты (ручки) для клиентского приложения и водительского. И другие особенности, все, что посчитаете важным.

Фича 2 - Семейный аккаунт

https://taxi.yandex.ru/blog/family-account/

Нужно подумать над форматом хранения аккаунтов, описать операции CRUD. Продумать логику выбора семейного аккаунта в качестве способа оплаты.

Фича 3 - Отправка отчета о поездке на почту

https://yandex.ru/support/taxi/how-to-order/receipt.html

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

Полезные ссылки:

https://blog.pragmaticengineer.com/scaling-engineering-teams-via-writing-things-down-rfcs/ https://www.industrialempathy.com/posts/design-docs-at-google/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published