Как стать автором
Обновить

Прытко бегают, так часто падают

Анализ и проектирование систем *
image

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

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

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

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

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

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

Изучение карты


image

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

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

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

image

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

image

Детализация маршрута


image

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

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

image

Изучение правил при участии в марафоне


image

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

Следующим этапом мне следовало изучить правила использования telegram-API, его возможные ограничения, интерфейс взаимодействия и т.д.

Анализ необходимого снаряжения


image

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

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

Чтобы определиться с готовым решением я ознакомился с возможными проблемными местами библиотек: предлагаемые возможности, community, issues. На этом этапе было принято решение в пользу наиболее подходящей библиотеке.

Изучение спецификации по эксплуатации снаряжения


image

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

Формирование плана подготовки к забегу


image

Когда понимание реализации стало максимально прозрачным, нужно было понять как провести этап тестирования. Поскольку в моем случае взаимодействие с системой должно было производиться через хуки, telegram требовал публичный стенд с протоколом https. Здесь я подготовил описание по настройки тестового стенда и деплоя прототипа для тестирования

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

Тренировка


image

Сама реализация и поставка прототипа в тестовую среду заняла чуть больше 9-ти часов работы. Затем после тестирования бизнес сценария нужно было внести еще несколько промежуточных этапов в программу и исправить некоторые замечания.

День старта


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

Финиш


image

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

Подведение итогов


image

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

Послесловие


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

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

В итоге под простой на первый взгляд задачей “требуется telegram-бот” скрывается огромная работа и мне сложно представить как много могло потребоваться времени на выполнение задачи если бы я сразу открыл IDE не имея перед собой четкий план действий. Наверное я бы и не получил медаль финишера, так как прибежал слишком поздно или вовсе бы сошел с дистанции.
Теги:
Хабы:
Всего голосов 4: ↑2 и ↓2 0
Просмотры 2.4K
Комментарии Комментарии 1