Автоматизация или как я избегала общения с коллегами. Часть 1

Хабр, привет!

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

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

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

Кейс №1 — Мой очень старый пример из 2021 года

Я пыталась автоматизировать процесс выгрузки и передачи отчетности.

Не поймите меня не правильно, я люблю людей, и своих коллег тоже (да, они тоже люди). Но когда им резко что-то надо именно сейчас (ad-hoc), и таких нуждающихся 30 человек- то я люблю их чуть меньше.

Проблема: ограниченность времени и рабочего ресурса

На одной из прошлых работ, где в моем отделе нас аналитиков было всего 2 (AdTech), а потребность в отчетах росла с кол-вом запущенных рекламных (маркетинговых) компаний и привлеченных клиентов. Каждый месяц (и/или неделю) вынь да положь всем картинки, отчетность, метрики и предсказания на 100 лет вперед и назад (или хотя бы месяц) и не только. Компаний, для которых мы это делали было много, очень много, разных размеров и категорий. И как по часам в ПН N-го числа, все с утра приходили к нам и, как чайки, «дай-дай» отчет (да, это тоже часть их работы). 

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

Для начала поймем, что за процесс и какие в нем этапы:

  1. Что, когда, для кого была проведена маркетинговая компания — именно эти данные падают в отчет. По ним считаются метрики и строятся графики. Особенно это важно, если компания как организация (клиент) одна, а вот реклам она запускала несколько разных, в разный период или на разную длительность (по типу рекламы тоже отличаются: есть для узнаваемости бренда, есть для конверсии и тд).

  2. Сбор данных и хранение всего в БД. 

  3. Отчет должен появляться на столе у каждого аккаунт-менеджера в ПН и желательно утром для каждой проведенной (запущенной) рекламе отдельно. (далее компания будет означать рекламную компанию, а клиент — компанию как организацию)

  4. Аккаунт менеджер «окает» на отчет и рассылает этот отчет своим клиентам

Весь этот процесс занимал в лучшем случае 2–3 часа, в худшем сутки.

Я начала с конца, так как я не хотела, что бы мне начинали писать в 8 утра, а в 11 уже ругались, что отчеты еще не готовы, надо как-то их готовить заранее, либо ограничить само общение без ущерба продуктивности.

Попытка №1

Например, я пробовала готовить отчеты в ВС вечером накануне.

Но тут сразу 2 минуса: работа в ВС, и то что клиент хочет видеть полный период отчетности (вдруг кто-то купит телевизор за миллион рублей в 23–30 ВС, а мы не отобразим это в отчете),   и даже дельта в 1 день не приемлема.

Попытка №2

Тогда, надо настроить коммуникацию внутри команды, так что бы все работало без пинков. Ну, для начала я решила организовать нам совместное хранилище на (кажется) SharePoint (в целом механика работы  с облачными хранилищами везде +/- одинаковая).

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

Сейчас бы…

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

Раздала я доступы сотрудникам (можно конкретному аккаунт-менеджеру к папке компании, можно просто всем), доступ к папке с отчетом внешним клиентам выдавался строго регламентированно.

Сейчас бы…

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


Даже после этого шага, стало сильно проще, когда коллеги привыкли, что теперь все хранится и появляется в одном месте. Но скорость появления отчетов это не увеличило. И если коллеги не писали мне в 8 утра, то писали в 12 с вопросом «когда уже будет, скоро?»

А тут, в чем собственно была проблема: БД создавала и поддерживала не я, да и скрипты, которые собирали данные писала не я, это наш легаси код, я пыталась сделать ему искусственное дыхание и оживить. К тому же, формат отчета — был зарегламентирован, так что сильно не разгуляешься. 

Актуальные проблемы:

  1. То как собирался отчет требовало личного контроля (вставлять название компании, проверь, что она еще с нами сотрудничает, указывать период и многое другое).

  2. Скорость обращения к БД и получения данных.

    И это были отчеты, где данные только собирались и агрегировались — никаких ML моделей, или посидеть-подумать как посчитать бенчмарки. Только рукопашка.

Трогать саму БД я не рискнула, да и мне никто бы не позволил, так что оставалось работать только с нашим внутренним скриптом.

Попытка №3

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

То есть, я хотела свести наше вмешательство в работу, уже запущенной программы, к минимуму. Что смогли — сделали. Стало еще лучше, но не достаточно хорошо, к сожалению, для правильной отчетности  нужно было работать с большим кол-вом переменных, которые. Не совсем или совсем не поддавались формализации. Так что случались исключения из наших правил, а соответственно и ошибки. А скрипт был один (шаблонный), и при 1-ой же ошибке все упадало, а отчеты переставали формироваться.

Пока мы в режиме мультизадачности ее (ошибку) заметим — пройдет какое-то время, а значит, мы опять получим десяток », а когда отчет?».

Попытка №4

«Давай игнорировать ошибки» — бодро предложила я, и моя коллега меня поддержала.

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

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

Сейчас бы…

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

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

Да, и хотя нельзя назвать это полной автоматизацией, КПД по сохраненному времени и нервам был приличным (с нашей стороны, и со стороны аккаунт-менеджеров, и со стороны клиентов). 

Мои общие выводы и личные лайфхаки:

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

  2. Если что-то заняло больше 2-ух часов и не является сугубо интеллектуально-созидательной работой — тоже можно подумать. Из практики, если что-то случилось единожды скорее всего произойдет и второй раз.

  3. Я люблю информирование, многих, конечно, бесят потоки автоматически отправляемых писем — мне они помогают отслеживать процесс и собирать обратную связь.


 Как часть само-иронии прикреплю эту картинку.

Ожидание VS Реальность

Ожидание VS Реальность

В следующем посте расскажу, уже с примерами кода (надеюсь):

  1. Как мы делали автопроверку домашек.

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

  3. Может быть еще что-то вспомню

© Habrahabr.ru