Знаете, почему проекты в крупных компаниях делаются по полгода? Потому что один из самых медленных процессов — это общение с заказчиком для выявления деталей его потребностей. Простое уточнение ТЗ (на гвозди или на клей надо крепить) может занимать до трёх месяцев. Я сейчас, конечно, несколько утрирую, но реальность в том, что почти никогда нельзя просто взять написать или позвонить и получить прямой ответ. Надо дождаться всех из отпусков и собрать совещание.
Вторая особенность сферы — чтобы началась автоматизация чего-то, нужно, чтобы заказчик знал, что это в принципе можно автоматизировать. И понимал, дёшево или нет. С учётом скорости развития технологий (особенно нейросетевых детекторов) некоторые вещи выходят за рамки представления опытных промышленников, а некоторые резко дешевеют и становятся доступными. Но задача писать их с нуля не ставится.
Это понимали мы и понимало руководство СИБУРа, нашего мощного промышленного партнёра, который помогал с проведением и организацией хакатона. Надо было устранять зазор между тем, что уже сделано и тем, что можно и нужно сделать по автоматизации. Для этого мы решили собрать на одной площадке сразу четыре стороны:
- Крупнейшие промышленные компании страны.
- Вендоров технологий с меняющихся рынков.
- Молодых разработчиков.
- ИТ-инженеров с опытом работ в сфере или в конкретных нужных технологиях.
Смысл в том, что крупные компании приходят со своими задачами, а разработчики на подобных хакатонах пытаются показать концепт их решения. Если всё хорошо — получают контракт, на базе которого можно основывать компанию. Заказчики же тратят два-три дня своего времени на ответы на вопросы, зато получают очень хорошую картину технологий и сразу множество прототипов решений.
Вот отчёт по задачам и их решению. Но сам пост будет про то, как мы организовывали мероприятие — возможно, это пригодится вам для своих хакатонов.
Авторами задач были:
- «Газпром нефть».
- «ФосАгро».
- «Сибур Холдинг».
- «Норникель».
- «Уралмеханобр» (входит в состав УГМК).
- «Русагро».
- МАРС.
- ЧТПЗ.
- FM logistic.
Действия
Крупными штрихами:
- Поговорить с текущими заказчиками и собрать первые задачи.
- Найти технических партнёров среди вендоров.
- Сделать сайт и начать информировать одновременно авторов задач, возможных партнёров и разработчиков.
- Обеспечить воронку сбора команд и отбор к хакатону.
- Подготовить материально-техническую базу к хакатону (помещение, приборы и материалы, еда, команда поддержки).
- Провести всё это!
Подзадачи:
Общие оргвопросы
- Сбор проектной команды и определение менторов для помощи разработчикам на хакатоне.
- Доклады про хакатон на профильные конференции для привлечения авторов задач и участников.
- Юридический набор, в т. ч. соглашение о персданных, положение о конкурсе для вручения призов, уточнение данных по интеллектуальной собственности (должна остаться у команд после применения всех лицензий вендоров), NDA для части данных заказчиков, форма по технике безопасности для участников.
- Поиск информационных партнёров.
- Поиск партнёров среди вендоров.
- Разработка и обновление сайта хакатона.
- Составление и доработка расписания.
- Разработка и согласование рекламных материалов.
- Пиар-кампания.
- Публикации в соцсетях.
- Продумывание оформления площадки.
- Список всех вещей и оборудования на мероприятие к закупке, сбору и доставке, продумывание логистики.
- Составление общих критериев оценки для жюри.
- Подготовка сувенирки (выбор), изготовление мерча.
- Подготовка репозитория для удобства работы команд.
- Подготовка облака.
- Финансовые вопросы, в т. ч. взаиморасчёты между партнёрами.
- Пригласить врача на площадку.
- Организация дежурства хелпдеска и ивент-менеджеров на непредвиденные моменты.
Сбор и коммуникация с участниками
- Рекламная кампания на сбор участников.
- Съёмки видеоприглашений на хакатон.
- Коммуникация с кандидатами на участие.
- Общение с потенциальными участниками по техническим вопросам.
- Модерация мероприятия в ВК и ТГ.
- Отбор команд-финалистов по итогам отсмотра вариантов решений задач, отобранных на первом этапе.
Работа над задачами
- Описание примеров кейсов.
- Подготовка и верификация шаблона/опросника на описание задачи.
- Рекламная кампания и рассылки на привлечение авторов задач.
- Помощь промышленных отраслевых команд и директоров клиентов КРОК в поиске авторов задач среди текущих заказчиков компании.
- Работа с авторами задач для уточнения ТЗ.
- Организация технологического стека и пилотных зон для решений задач на хакатоне.
- Консалтинговая поддержка по задачам, стеку и оргмоментам (верификация ближе к финалу).
- Подготовка памятки для партнеров и авторов задач — что есть что и к кому обращаться на площадке.
Очень много времени ушло на сбор задач. Заполнялся бриф-шаблон (ниже будут детали), наши эксперты задавали дополнительные вопросы, затем задача публиковалась. Участники при регистрации выбирали одну или несколько задач и присылали подходы к решению. Мы на входе понимали, сколько команд и какие задачи планировали решать. Одобряли участие по схеме: одна команда решает одну задачу. Мы заранее сделали отбор на основе тех описаний вариантов решений, которые присылались командами, — чтобы на ивенте были те, что кто имеют шансы на пилотирование у заказчика.
Очень важна команда менторов. Поначалу к менторам и заказчику обращались с вопросами по задаче, потом — с вопросами применения конкретных вещей из технологического стека, а дальше собирали с них обратную связь по решению. Как показала практика, показать wireframe посреди хакатона и получить обратную связь (а то и сделать так пару раз) гораздо важнее, чем добиться безупречного технологического решения. Потому что заказчик определённо лучше разбирается в своей сфере и может сказать что-то, что резко сдвинет процесс разработки решения. В случае определения брака шоколадок на конвейере выяснилось, что вместо выявления идеальной модели батончика целесообразней использовать дообучение модели на бракованных вариантах и постепенно уменьшать процент ложноположительных срабатываний.
Предоставляемые материалы
Для некоторых задач были нужны материалы и инструменты. У нас была паяльная зона, зона для работы с видеопотоком, мощности в облаке. Для паяльной зоны использовалась система вытяжки столовой на случай образования дыма.
Для каждой задачи был свой набор предметов материального мира и софта. Для контроля брака шоколадок было два ящика обучающей выборки этих самых шоколадок.
Предоставляли большие мониторы — часть участников просила заранее, часть попросила на месте. Мы завели целый квест на поиск оборудования, и получилось, что на выходные несколько десятков отдали разработчики с рабочих мест (с условием, что утром понедельника к их приходу всё снова будет на месте), а часть использовалась из фонда выездных мероприятий. Мониторы были нужны не только для подключения ноутбуков, но и для удобной работы с Raspberry Pi.
Естественно, надо было обеспечить людей едой. Нужно горячее (его готовила наша столовая, там всё прошло правильно), снеки и напитки и ужин с пиццей и пивом для финала. Наша ошибка была в том, что для перекусов мы использовали неверные данные с других хакатонов, где было много сладостей и выпечки, но почти не было овощей и фруктов.
Меню перекуса: печенье творожное, овсяное и ореховое, меренги, лимонады, морсы, свежие яблоки. Завтраки: сырники, блинчики с соусами (сметана, фруктовый, молоко сгущённое), сэндвич с курицей, сэндвич с ветчиной и сыром, йогурт. Обед: фрикадельки с картошкой по-деревенски, лапша с курицей, рыбные крокеты с картошкой фри, курица гриль с картошкой, лапша с овощами, палочки из горбуши с картошкой. На ужин были бургеры из говядины и картошка фри, кесадилья из курицы. Ещё в закупках числится много одноразовой посуды для удобства кейтеринга.
В снеках у нас чипсы 11 видов, соки, шоколадки и шоколадные батончики, кукурузные палочки, чокопаи, Кола Зеро, Кола, Спрайт, соки, сухарики пяти видов.
Помещение — часть нашей столовой офиса, мебель, соответственно, оттуда, из хранилища мебели для выездных мероприятий и из конференц-залов. Для отдыха участников наши выездные инженеры (это те люди, которые иногда ночуют в серверных или рядом) порекомендовали 30 надувных матрасов — закупили, пригодилось.
Ещё делали мерч (футболки и шапки) и кучу разных мелких вещей вроде беджей, пропусков, стикерпаков (в том числе для Telegram) и так далее.
Вот такие были футболки
И стикерпаки:
Очень хорошей идеей оказалось сделать заранее документацию — памятки для авторов задач, членов жюри, техпартнёров: что можно и нужно делать, где расписание, все ресурсы и телефоны.
Было много сеансов видеосвязи и конф-коллов с заказчиками перед самим хакатоном, на самом мероприятии к ним добавились чаты в телеге — двое авторов задач не смогли приехать и отвечали на вопросы, а потом давали фидбэк удалённо (всё же промышленность у нас сосредоточена, в основном, не там, откуда можно быстро добраться).
Технологический стек вендоров
Вендоры приносили своё железо или давали свои лицензии для тех, кто решал соответствующие задачи. То есть можно было пользоваться или не пользоваться решениями вендора, но если вдруг вы не взяли из дома датчик углекислоты для задачи про шахты — он будет на месте.
ПЕРГАМ предоставил набор: датчики утечки газа, Raspberry Pi (2 шт.), кулер на 5 вольт (Fonsoning FSY50S05H 5V 0.25A 50 X 50 mm), транзистор биполярный отечественный КТ863А, резистор постоянный 1 кОм 0,25 Вт — 3 шт., провода монтажные МГТФ 0,25 кв. мм — приблизительно 3 м, набор инструментов для резки и зачистки проводов — 3 комплекта, флюс, припой, трубки термоусадочные, паяльные станции: Ersa Digital 2000A — 2 шт., CT Brand CT-936 — 1 шт., Power Bank — 3 шт., баллон CO.
Если участникам были нужны мощности в облаке, участники могли заказать себе виртуальные машины с необходимыми характеристиками. Давался доступ в консоль управления виртуальными ресурсами так же, как обычным коммерческим пользователям. Были шаблоны с софтом вендоров. Машины — Intel Xeon Gold 6244 Processor, наибольшей популярностью пользовались, естественно, конфигурации c 32 ядрами и 256 Гб оперативной памяти и с флеш-накопителями на 10 тысяч IOPS. В общей сложности было заведено шесть аккаунтов и задействовано 20 виртуальных машин. Для участников, работающих с видео, мы закупили GPU-машины на Амазоне. Там Tesla V100 c 16 Гб памяти графического процессора, восемь виртуальных ЦПУ и 61 Гб оперативной памяти. Было использовано шесть таких машин.
Ещё мы предоставили точки доступа, камеры, Raspberry Pi с софтом для видеораспознавания.
Bitfury дали доступ блокчейн-фреймворку Exonum — это способ быстро организовать всё нужное на блокчейне. По сути, можно обращаться с блокчейн-системой как с обычной базой данных через библиотеки Bitfury.
BellSoft предоставил решение для сбора, анализа и управления данными на базе NVIDIA Jetson Nano и Raspberry Pi 4, на которых была предустановлена среда разработки и запуска Java-приложений, — Liberica JDK.
Cisco дали Cisco VSM. Решение позволяет всем желающим получать видеопоток без проблем. VSM собирает видеопотоки на свои серверные мощности, сохраняет, обрабатывает, если это надо, и выдаёт всем желающим с небольшой задержкой. При этом можно наращивать производительность, в отличие от производительности видеонаблюдения, если потребности в видеопотоке возрастают. Поток может быть сохранён на серверах и просмотрен позже. Можно подключить внешние датчики или контроллёр СКУД для более детального анализа происходящего возле камеры и создания всевозможных алертов. В общем, очень хорошая платформа для работы с видео — как раз она планировалась к установке в свинарник.
Информирование
Мы связывались с профильными журналистами и рассылали пресс-релизы, плюс анонсировали хакатон в разных изданиях и на площадках (включая Хабр). Про задачи писали CNEWS, RISKNEWS, TБ ФОРУМ, RUБЕЖ, «Коммерсантъ» (!), «Металлоснабжение и сбыт», «Журнал главного инженера», «Автоматизация в промышленности», «Автоматизация и IТ в энергетике», «Автоматизация и IТ в нефтегазовой области», журнал «Охрана труда», Neftegaz.RU. Участников приглашали на CNEWS, vc.ru, Хабре, tproger.ru, ict2go.ru и у партнёров. Результаты хакатона опубликовала «Российская газета», вот отчёт на Хабре, и упоминали почти все упомянутые СМИ выше.
Очень важно было то, что анонсами хакатона делились наши сотрудники в Facebook, и то, что мы задействовали собственные соцсети: так или иначе новость дошла до многих, кто либо был заинтересован напрямую, либо знал тех, кто заинтересован.
Отдельно проинформировали письмами профильные вузы, но это почти не дало результата.
Анонсировались у партнёров — на встречах сообщества разработчиков jug.msk.ru, на партнёрских хакатонах, например, Hack.Moscow и Хакатон Вконтакте.
Анонсы были в тематических телеграм-каналах по разработке и во многих телеграм-чатах мероприятий, где мы так или иначе участвуем, или которые спонсировали либо мы, либо кто-то из ключевых участников.
Авторов задач искали через три основных канала: через непосредственный контакт через директоров клиентов (это существующие заказчики КРОК), публиковались в отраслевых СМИ и запускали таргетированную рекламу в Facebook/Instagram. Наиболее важно для них было быстро проверить какую-то гипотезу и получить план по цене и срокам внедрения.
Пример заполненного бриф-шаблона по задаче
1. Какую задачу/задачи вы готовы предложить для решения участникам?*
Создание программного комплекса для определения аналогов запорно-регулирующей арматуры.
Задачи системы: текстовый парсинг данных, выделение из неструктурированных данных нужных составляющих (численных и текстовых характеристик материала).
2. Какова цель и проблематика решения этой задачи?*
Определение подробных параметров запорно-регулирующей арматуры по текстовым описаниям с использованием внешних ресурсов (web). Определение аналогов (совпадение по всем параметрам).
3. Кто выгодоприобретатель от решения задачи внутри компании? (Отдел, группа людей, должность).
4. Какие требования к инструментам/технологиям в решении? (Если есть).
Используемые технологии: Парсер (например, Yargy), NLP-библиотеки, deep learning, seq2seq, архитектура Transformer.
5. Какие материалы вы готовы предоставить участникам для работы над задачей? (Например, видеоматериалы). Есть ли API?*
Входные данные:
А. Excel-таблица, которая содержит следующие данные о записях материалов:
• Наименование ru.
• Полное наименование ru.
• Нормативный документ.
• Вид изделия (код класса и наименование кода класса).
• Единица измерения.
Б. Перечни параметров для каждого класса с примерами.
Выходные данные:
Excel-таблицы, которые содержат входные данные и столбцы, каждый из которых соответствует одному параметру.
Данные в полученной матрице заполняются на основании входных данных и любой дополнительной информации, которую может привлечь исполнитель (справочники, веб-сайты производителей и т. п.).
6. Описание пилотируемой зоны (если важно для проработки задачи).
7. Чего не хотите видеть в решениях? Что точно не должно быть использовано в решениях?
8. Какие критерии оценки для вас наиболее важные? (Интерфейс, точность детекции, безопасность данных и т. д.)*.
А. Метрика полнота — доля текстовых записей за исключением «мусора», которые алгоритм распознал и разбил на параметры, даже если не все параметры были распознаны верно или полностью. «Мусор» — текст, не содержащий необходимой технической информации о МТР.
Б. Метрика точность — это доля тех строк, которые были точно распознаны, т. е. все параметры находятся в правильных столбцах, устранены опечатки, значения унифицированы.
По всем строкам для обеих метрик считаются средние значения на основании оценочной выборки (каждая 100-я позиция, выбранная случайно).
Целевые значения полнота — не менее 70 %, точность — не менее 90 %.
С. Возможность масштабирования продукта на другую номенклатуру.
9. Как поймёте, что предложенное решение соответствует требованиям?
10. В каком формате вы готовы предоставить поддержку командам с вопросами по вашей задаче? (Присутствие на площадке, онлайн-общение — видеосвязь/чаты/телефон)*.
Присутствие на площадке.
11. Пришлите, пожалуйста, актуальный логотип и текст о вашей компании для
размещения в сообществе (порядка 300-500 знаков)*.
* Обязательный вопрос.
Создание программного комплекса для определения аналогов запорно-регулирующей арматуры.
Задачи системы: текстовый парсинг данных, выделение из неструктурированных данных нужных составляющих (численных и текстовых характеристик материала).
2. Какова цель и проблематика решения этой задачи?*
Определение подробных параметров запорно-регулирующей арматуры по текстовым описаниям с использованием внешних ресурсов (web). Определение аналогов (совпадение по всем параметрам).
3. Кто выгодоприобретатель от решения задачи внутри компании? (Отдел, группа людей, должность).
4. Какие требования к инструментам/технологиям в решении? (Если есть).
Используемые технологии: Парсер (например, Yargy), NLP-библиотеки, deep learning, seq2seq, архитектура Transformer.
5. Какие материалы вы готовы предоставить участникам для работы над задачей? (Например, видеоматериалы). Есть ли API?*
Входные данные:
А. Excel-таблица, которая содержит следующие данные о записях материалов:
• Наименование ru.
• Полное наименование ru.
• Нормативный документ.
• Вид изделия (код класса и наименование кода класса).
• Единица измерения.
Б. Перечни параметров для каждого класса с примерами.
Выходные данные:
Excel-таблицы, которые содержат входные данные и столбцы, каждый из которых соответствует одному параметру.
Данные в полученной матрице заполняются на основании входных данных и любой дополнительной информации, которую может привлечь исполнитель (справочники, веб-сайты производителей и т. п.).
6. Описание пилотируемой зоны (если важно для проработки задачи).
7. Чего не хотите видеть в решениях? Что точно не должно быть использовано в решениях?
8. Какие критерии оценки для вас наиболее важные? (Интерфейс, точность детекции, безопасность данных и т. д.)*.
А. Метрика полнота — доля текстовых записей за исключением «мусора», которые алгоритм распознал и разбил на параметры, даже если не все параметры были распознаны верно или полностью. «Мусор» — текст, не содержащий необходимой технической информации о МТР.
Б. Метрика точность — это доля тех строк, которые были точно распознаны, т. е. все параметры находятся в правильных столбцах, устранены опечатки, значения унифицированы.
По всем строкам для обеих метрик считаются средние значения на основании оценочной выборки (каждая 100-я позиция, выбранная случайно).
Целевые значения полнота — не менее 70 %, точность — не менее 90 %.
С. Возможность масштабирования продукта на другую номенклатуру.
9. Как поймёте, что предложенное решение соответствует требованиям?
10. В каком формате вы готовы предоставить поддержку командам с вопросами по вашей задаче? (Присутствие на площадке, онлайн-общение — видеосвязь/чаты/телефон)*.
Присутствие на площадке.
11. Пришлите, пожалуйста, актуальный логотип и текст о вашей компании для
размещения в сообществе (порядка 300-500 знаков)*.
* Обязательный вопрос.
Команда
- Менеджер проекта (это я).
- Куратор хакатона и председатель жюри (технический эксперт) — у нас был Сергей Стрелков, директор по разработке ПО КРОК.
- Тимлид менторов для координации команды поддержки участников, Андрей Когунь.
- Менторы (ведущие разработчики, тимлиды и инженеры, они же были в жюри) — семь человек.
- Три ивент-менеджера для организации всего и логистики (люди с любовью к адреналину).
- Отдельная роль — для работы с партнёрами и спонсорами.
- Пиар-менеджер для информирования.
- Интернет-маркетолог и контент-маркетолог для анонсов и продвижения в соцсетях (Вконтакте, Facebook, Инстаграм — были даже видеообращения от оргкоманды), создания сайта.
- Ведущий открытия и ведущий награждения.
- Сотрудник техподдержки.
Подрядчики обеспечивали застройку зоны (стенды заказчиков, вендоров и т. п.), обустраивали зону развлечений (у нас были игровые автоматы, гигантская дженга, кёрлинг и т. д.), освещение, кейтеринг.
Результаты
350 заявок. 200 участников. 150 из них в 38 командах дошли до финала хакатона. Это участники из Москвы, Новосибирска, Санкт-Петербурга, Казани, Ижевска и других городов. Команда EmptySet из СПбГУ победила в номинации «Лучшая студенческая команда», решив задачу компании «Газпром нефть» по созданию программы определения аналогов запорно-регулирующей арматуры. Для большинства авторов задач это был первый опыт участия в хакатонах, например, для Челябинского трубопрокатного завода (ЧТПЗ).
Управление такими проектами — это всегда работа большой команды. Здесь важны сразу несколько составляющих: планирование задач, гибкий подход к их выполнению (принцип Аgile — наше всё), назначение ответственных, сроки и контрольные точки в проекте. Для ведения проектов мы использовали Jira.
Думаю, мы продолжим участвовать в организации таких хакатонов — это оказалось очень полезно и для авторов задач, и для участников. Что, в целом, важно для российского рынка ИТ.
Ссылки
- Сайт хакатона.
- Отчет по задачам и их решению.
- Видео с мероприятия.
- Остались вопросы, нужен совет или хотите пригласить нас к соорганизации вашего отраслевого хакатона? Моя почта для связи — SChuvaeva@croc.ru.