Это был мой первый хакатон. 🙂 До него мне думалось, что мероприятие подобного рода — это когда программистские гении собираются в одном месте и соревнуются в программинге, не особо обращая внимание на бизнесовый аспект, т.е. нужны ли кому-то результаты труда. Соревнования умов.
Но Артем Черневский поколебал мою уверенность, что это мероприятие только для избранных девелоперов. В качестве аргумента привел довод, что по его опыту выигрывают не столько те команды, у кого крутые разработчики, сколько те, у кого сбалансированный состав.
В идеале в команде должны быть люди, способные не только быстро и качественно писать код в команде, но и управлять командой/разработкой, сделать красивый дизайн приложения, продумать юзабилити, подготовить зрелищную презентацию и презентовать продукт судьям.
Случайно на глаза в Facebook попал анонс Global City Hackathon. Тематика взаимодействия с госорганами и построение комфортной городской среды для меня актуальная. С представителями госорганов приходится общаться и, пока что, общение не всегда приятное. Масса потерянного времени. Как IT директору коммерческой компании с приличным стажем работы, такие плохо отлаженные клиентские бизнес-процессы вызывают острую аллергию. Хотя, несомненно, за последние годы улучшения есть.
В общем, решил попробовать в привычной роли менеджера и заодно IoT разработчика. Тем более, что в анонсе был заявлен IoT, хотя учитывая сложность разработки на стыке железа и софта в сравнении с чисто софтовой, не очень представлял как это может быть реализовано. Забегая вперед скажу, что ни одного IoT проекта на хакатоне представлено и не было.
Организация (до мероприятия)
Процесс для меня был неизведанный. Поэтому ждал некоторой вводной от организаторов. Хотя-бы тем в рамках треков. Сами треки, в рамках которых должна была происходить разработка ПО были озвучены давно: «Доступный город», «Открытый город» и «Безотходный город».
По студенческой привычке, а может, по задумке организаторов темы стали появляться в последнюю неделю. Собственно, до последней недели был занят, поэтому оставил исследования того, что придется делать на хакатоне напоследок. На месте соориентируюсь.
В работе организаторы использовали доступный инструментарий. Таблицы Google для формирования команд. Мессенджер Телеграм для общения участников.
Порадовал выбор удобного мессенджера Телеграмм, наперекор активностям Роскомнадзора. 🙂 При том, что хакатон в общем-то был организован по инициативе администарции города. Здравый смысл восторжествовал.
В общем-то по удобству написания чатботов достойных альтернатив Telegram пока что не создано. Хорошо, что закрыть к нему доступ не удалось и он активно используется, в т.ч. в подобных мероприятиях. 🙂 В Иннополисе на этом мессенджере было написано масса чатботов и большое количество активных групп позволяли координировать работу города. Пока жил там, привык к удобству решения вопросов через этот мессенджер.
То, что все участники были с учеткой в «телеге» упрощало координацию. Особенно при сборе команды, поскольку обозначив тему можно было общаться с участниками, выискивая свободных и заинтересованных в проекте.
Из недостатков организации процесса формирования команд отметил следующие моменты:
- Группы формируются непонятным образом. Был клич со стороны организаторов зарегистрировать команды. Но что делать тем, у кого нет команды? Вопрос сбора людей решался перепиской в телеграмме и отдельной секцией внизу таблицы со списком незадействованных участников. В идеале для ИТ мероприятия хотелось бы более системной организации. Например, добавить в мобильное приложение хакатона раздел со списком свободных участников, а также запрос команд на поиск нужных ролей. Некоторую биржу вакансий.
- Тема проекта большинством участников была не озвучена перед мероприятием. По крайней мере в таблице не было никакой информации. Соотвественно, не очень понятно, под какую задачу собирались участники команды? Чтобы заполнить клеточки по ролям в рамках выбранного трека, а затем уже на самом хакатоне решить чем заниматься?
- В таблице участники не указывали контактную информацию, поэтому отыскать в никах «телеги» нужного человека — тот ещё квест. По идее в данном случае косяк организаторов, что они не обозначили этот момент при формировании команд.
В остальном, каких-то особых нареканий к предварительной организации у меня не возникло. Все просто, но достаточно четко.
Быстрые ответы Андрея (Andy) на вопросы. В общем, смело можно поставить ему 5-ку за комфорт в общении и заинтересованность в решении вопросов.
Тема проекта
Примерно дня за 3 до мероприятия, стоя на автобусной остановке и разглядывая песочные часы на давно не работающем табло, котрое по мыслям создателя должно было бы показывать приход транспорта, вспомнил поездки в Европу. Насколько там удобная комфортная среда для туристов и горожан. Когда даже не имея Интернет-доступа можно быстро соориентироваться в транспортных потоках. Ну а вкупе с Google сервисом показывающим стыковки транспорта — вообще сказка.
К сожалению, этого комфорта пока что нет в Нижнем Новгороде. Хотя приложения вроде bustime.ru, Яндекс.Транспорт, Smart.Transport (Нижний не поддерживается) облегчают жизнь продвинутым пользователям.
К ЧМ по футболу 2018, несомненно, ситуация стала лучше. По крайней мере теперь в общественном транспорте можно расплатиться пластиковой картой. Хотя даже в продвинутой Европе и UK такой сервис доступен далеко не везде.
В общем, пришла мысль, о создании табло, аналогичных виденным в Европе/UK, но максимально самоокупаемых и с отсутствием привычного vendor lock-in. Последнее добавляет рисков муниципалитету, поскольку в случае банкротсва производителя за сервисом уже не к кому обратится.
За пол-часа набросал основной концепт, который был в дальнейшем расширен уже в паре с продакт-менеджером. Опыт в разработке IoT и корпортивных приложений приличный, поэтому с т.з. дизайна в целом все понятно. По крайней мере концепта уже достаточно для того, чтобы подбирать членов команды.
Формирование команды
Пожалуй, один из самых сложных этапов — подбор команды в экстремально короткие сроки и в непривычном стиле.
Обычно разработчиков ищет отдел HR, которому отдаешь запрос на разработчика нужной квалификации и затем уже сортируешь резюме, которые поставляет HR для собеседований.
В случае с хакатоном ситуация обратная. Привлекаешь тех, кто есть и адаптируешь задачу под скилы. У меня немало знакомых разработчиков и дизайнеров, но так вышло, что свободных и/или желающих поучаствовать не оказалось. Поэтому нужно было что-то экстремально с этим делать.
Благо дня за три до мероприятия мне посчастливилось найти динамичного co-менеджера/продакта Анатолия с которым мы уже начали подбор коллектива параллельно. У него с его прошлого хакатона оказался в контактах свободен один из толковых разаботчиков. Так что задел был положен. 🙂
Далее мы уже параллельно связывались и общались с свободными разработчиками из списка, «склоняя» присоединиться к проекту. Когда есть хотя-бы концепт идеи, даже если он будет кардинально пересмотрен в дальнейшем, уже есть на что опираться при «вербовке». 🙂
Поскольку нам нужен был промышленный дизайнер, а «делают» их только в одном ВУЗе-города — Строительном Университете, списался с коллегой — IT менеджером оттуда. Он очень оперативно озадачил завкафедры промышленного дизайна, чтобы сделать анонс в ВУЗ-е. Утром, в день начала хакатона, к нам присоединилось с этой кафедры два студента. Команду «укомплектовали» с запасом. 🙂
Кстати, в некотором роде косяк организаторов, что свободных дизайнеров в списках участников было немного. Видимо, не все ВУЗ-ы были охвачены информированием. Было бы неплохо, если бы участие в хакатоне добавляло бонусов студентам, причем не только программистам. Впрочем с поиском девелоперов тоже все непросто. 🙂
Понятно, что до момента встречи на хакатоне вообще не известно с кем будешь работать. Собственно, в этом и есть основная фишка. До последнего момента не знаешь какие скилы, насколько человек отвественный и замотивированный, каков опыт разработки и пр. Т.е. ничего не знаешь, но веришь, что звезды сойдутся. 🙂 Впрочем, мне всегда везло на классных сотрудников, так что был уверен, что все, кто нужен, притянутся вовремя. 🙂 Так и случилось.
Итого мы нашли двух фронтенд разработчиков и Java бэкендера. Я довольно много раньше писал на C#, а Java очень похожа, так что это внушало некоторый оптимизм. 🙂 Все ребята — студенты. Впрочем, общаясь в телеграмме — этого не понять. 🙂
Анатолий утром в день начала хакатона нашел ещё одного диазйнера, так что с ними у нас был порядок.
Место проведения
Мероприятие должно было проходить на площадке бывшей швейной фабрики «Маяк». По моей информации оно было в убитом состоянии, поэтому было любопытно, как там что-то можно проводить. Интересно было посмотреть что изменилось. Вот фото, что было ранее.
Хотя вход и подъем по лестнице на 3-й этаж не сильно отличались от фото, но внутри все стало достаточно прилично.
Площадка чем-то напомнила здание в Манчестере, которое было бесплатно отдано админстрацией города для проведения подобных мероприятий. Пока учился там, довелось посетить. Собирались через приложение MeetUp, очень популярное в Европе.
Внутри здания все было сделано просто (недорого), но добротно и удобно. Месторасположение в центре, так что удобно добираться и туристам и горожанам. Я тогда по-хорошему позавидовал манчестерцам.
Выбор здания оказался очень удачным:
- Красивейшее здание города.
- Хорошая транспортная развязка.
- На такси минут 15 минут до Московского вокзала и около 45 минут — часа до аэропорта.
- Красивейшая улица Рождественская. Неподалеку Нижегородский Кремль, Набережная, вид на храм Александра Невского, новый стадион, Стрелку.
- Неподалеку много кафе и ресторанов.
- Большая площадь помещений в варианте open space и их много. Так что можно уединиться, чтобы сосредоточиться на работе.
- Лофтовый дизайн стен. 🙂 Их можно даже не трогать. Модно и можно сэкономить на ремонте.
- Достаточно большая площадка основного зала для проведения мероприятия.
Недавно был на мероприятии в Москве на площадке фабрики «Красный Октябрь». У нас лучше. 🙂 Можно проводить добротные мероприятия.
Рабочие места были подготовлены просто, но с любовью. 🙂 Зона отдыха, где можно вздремнуть. Столовая в которой был завтрак, обед, ужин и кофе (к сожалению, не ночью). 🙂
Из минусов — в здании временами достаточно холодно. Неплохо было бы в уголок отдыха добавить пледов. Парни жаловались, что спать было невозможно, задубеть можно.
В целом, твердая пятерка за выбор. 🙂
Начало…
Начинался хакатон с официальных мероприятий с участием первых лиц город. Это, несомненно, придало вес событию и, повысило значимость решаемых участниками задач.
По презентациям узнали как потенциально может преобразоваться город: аквапарк, горнолыжная трасса, зона отдыха у канатки и т.п. Интересные проекты, посмотрим, реализуются ли они.
Параллельно с прослушиванием презентаций пообщался с коллегой из Москвы. Он привез своих ребят из московского колледжа.
После презентаций развиртуализировались с командой. 🙂 Далее достаточно короткий мозговой штурм. Изначально выбранную тему решили не реализовывать.
С одной стороны есть проект «Умные остановки» от Ростелекома в рамках котрого планируется открытие порядка 300 остановок по городу. Понятно, то там затраты на каждую остановку, вероятно, где-то в районе млн. руб. Но, «Ростелеком» — компания крупная, конкурировать с ней сложно.
У меня же в проекте был лайтовый вариант информационных табло на остановки общественного транспорта. Основной акцент на массовость, дешевизну и самоокупаемость. Поэтому по стоимости ниже где-то раз в десять.
Удивительно быстро обсудив возможные варианты, остановились на предложении Анатолия (ранее чиновник с 7-ми летним стажем), что будем реализовывать мобильное приложение + бэкенд для сбора и обработки проблем горожан и маршрутизации в городские службы максимально адресно. С отслеживанием сроков выполнения по регламенту. Типичная такая ServiceDesk система с которыми поработал немало будучи IT директором.
Главная фишка была — идентифицировать в чьем ведении находится участок по которому поступила жалоба от горожанина. Это позволило бы при отправке обращения сразу снабдить представителей администрации мксимально полной информацией, чтобы сократить время реакции, а в идеале направлять заявки сразу ответственным. Собственно, цель предложения была как можно эффективнее сделать взаимодействие горожан с администрацией, а не просто забрасывать чиновников негативом.
Ещё одна «фишка» — поиск «соседей» у которых сходная проблема, чтобы сформировать групповое обращение. В этом случае вес проблемы в глазах чиновника повышается.
По бэкенду вопрос был открытый. Функционал взаимодействия с горожанами не столь сложный, но если стыковаться с неизвестными нам платформами, которые используют чиновники администрации (наверное какие-то используют), то проект получался достаточно сложный.
У меня была мысль использовать стандартные ServiceDesk системы. Например, хорошо известный мне бесплатный OTRS Community Edition с открытым исходным кодом. Его функционала хватило бы с избытком на выстраивание грамотных сервисных процессов в администрации.
Но, продукт достаточно сложный. Сделать интеграцию с ним за день силами команды из 3 человек — нереально. Однако, несомненно, при развертывании подобных систем в администрации города имеет смысл взглянуть на такие реализации. Они позволят сэкономить деньги и время на разработку бэкенда.
В итоге решили написать бэкенд с нуля на Java c простым функционалом:
- Прием данных с фронта и хранение в БД. Разработчики решили использовать облачный Google FireBase.
- Определение по координатам переданным с фронта к какому району Нижнего Новгорода относится проблема.
- Поданные от нескольких «соседей» заявки группировались и на основании них формировался pdf для отправки по e-mail в администрацию города. Технология крайне рудиментарная, но мы не в курсе, есть ли в администрации какие-то информационные системы, в части обработки заявок, с которыми можно интегрироваться.
- Отсчет времени с момента поступления заявки для отправки push уведомлений на front.
На front-е планировалось реализовать:
- Android приложение с функционалом необходимым для сбора проблем о горожан. Два разработчика из трех имели некоторый опыт разработки на Google Flutter. Поэтому для скорости решено было использовать его.
- Эстетичный дизайн с хорошим юзабилии. Благо в команде было 3 дизайнера. Для разработки дизайна планировали использовать Material Design. Ранее они его не использовали, так что пришлось быстро осваивать.
- Регистрацию пользователя. Планировали сделать авторизацию через Госуслуги, но там есть некоторая формальная процедура согласования для присоединения, поэтому быстро сделать нельзя. Это не легкая привязка, как, например, в случае с Facebook авторизацией.
- Отображение карты для сбора информации по проблемам. Визуализация на ней проблемных мест.
- Прием push сообщений с бэкенда для уведомления горожанина, что срок решения заявки истек. Если не решена — эскалация на вышестоящее руководство.
Функционал незамысловатый, но и времени всего два дня на реализацию. Да ещё и презентацию надо подготовить, в идеале, с демонстрацией работающего продукта. Естественно, работу с приложением записать на видео, чтобы исключить любые «косяки» при демонстрации вживую «сырого» прототипа.
Разработка
Наиболее экстремальная часть. Но, что очень приятно, ребята в составе команды хоть и студенты, но уже попробовавшие использовать озвученные выше инструменты разработки. Радует, что ребята хорошо взаимодействуют друг с другом, помогают. В общем, реально командная работа.
Опытный дизайнер в команде поучал двух студентов Строительного Университета как работать с дизайнерским инструментарием, чтобы сделать интерфейс мобильного приложения. Думаю, для них за эти пару дней был просто колоссальный опыт в кратчайшие сроки.
Анатолий отрисовывал в Miro бизнес-логику c разбивкой по экранам мобильного приложения. Мы совместно обсуждали функционал и дизайнеры с разработчиками практически параллельно набрасывали формы в дизайне и разработчики перекладывали формы в софте.
Пока ребята разрабатывали продукт. Мы с Анатолием встречались с массой людей для презентации ещё не созданного продукта, чтобы максимально продемонстрировать достоинства и получить отзывы и баллы. 🙂 Параллельно набрасывали презентацию в PowerPoint по шаблону организаторов.
Общение в группе в «Телеграмм»-е. Переброс каких-то промежуточных материалов. Координация работы и пр. Поскольку немалая часть общения в текстовых сообщениях — не шумно.
Со встречами и workshop-ами процесс был немного скомканный. Времени на посещение было немного, поскольку надо было обсуждать с командой какие-то ключевые моменты, разбираться с проблемами. Так что workshop-ы мы по большей части игнорировали, хотя некоторые из них были интересны. За посещение workshop-ов давали баллы. Но процедура их фиксации была не формализованной. Не ИТ-шная совсем. 🙂
Парни кодили с пятницы по субботу примерно часов до двух ночи. И с сб. на вск. всю ночь. Дизайнеры параллельно правили формы. Рисовали иконки и пр. В общем, работа кипела. Несомненно, работать в таком режиме продолжительное время — нереально. Но пару дней можно.
В субботу эксперт площадки свел нас с сорудником компании Агентум. В ходе дискуссии стало ясно, что наша идея с подтягиванием данных о ответственных за объекты из базы zakupki.gov.ru работать будет лишь частично, из-за крайне плохой разметки тендерной информации. Это будет приводить к конфликтам и потребуется ручной труд. Однако, Агентум обладал опытом в паспортизации объектов городского хозяйства.
Это был недостающий элемент в разработке приложения, который мог усилить его, добавив фичи для дистанцирования от конкурентов. Наличие базы ответственных за объекты позволило бы маршрутизировать заявки непосредственно владельцу объекта по которому приходит заявка со стороны горожан. Фактически можно было бы существенно сократить время прохождения заявки, убрав время на поиск и разгрузив представителей администрации города.
В нашу команду влилось ещё два человека от команды Агентум. Далее мы прорабатывали бизнес-логику и строили презентацию уже с учетом полученной killer feature. 🙂 Хотя сделать интеграцию с их бэкендом уже не успели, времени не было.
Со второй половины сб и утром вск. мы объединенной командой формировали текст презентации, подбирали какие-то иллюстрации, разработчики снимали скринкасты работы приложения, дизайнеры пытались переложить тексты на красивый дизайн и т.п. Всё в дедлайне.
Затем вводные питчи для отбора команд в финал. С нашей стороны Анатолий в паре с Евгением от Агентума. Парная презентация усложняет задачу, нужно синхронизировать речь, чтобы презентация не выглядела как постоянное перебивание одного другим. Затем вопросы презентующим. После фидбек от экспертов по ещё большему урезанию презентации по времени. Переделка презентации в последний момент.
После, подсчет голосов, начало основных презентаций и до последнего момента не понятно, вошли ли мы в финал. Затем приходит информация, что мы в финале. При этом дизайнеры в суперскоростном режиме правят презентацию, чтобы отдать организаторам.
Затем выслушивание презентаций команд вошедших в финал. Наша презентация от Анатолия с Евгением. Ожидание подсчета голосов и объявление победителей. Мы не в победителях. 🙁 Впрочем, команды занявшие первые места действительно сделали очень крутые продукты и «пилили» они его явно не два дня на хакатоне, а готовились задолго до этого.
Формально, это, конечно, нарушение. Ибо, получается, что участники поставлены в неравные условия. С другой стороны продукты реально сделаны очень добротно, поэтому можно только порадоваться за призеров, что у них появился шанс реализовать их в жизнь.
Мы получили призы от компании «Ростелеком» и all.me.
Затем фото с сотрудниками all.me. Надеюсь, они не забудут переслать их нам. 🙂 Затем наше групповое фото на память. Фуршет. И по домам. Парни выдохлись и спят на ходу. 🙂
Организация (в процессе)
Хотелось бы отметить моменты по организации в процессе работы. Повторюсь, что для меня хакатон первый, поэтому сравнивать не с чем.
Несомненно, организаторы проделали колоссальную работу по подготовке и организации мероприятия. Все было сделано добротно и с любовью. Несомненно были какие-то накладки из-за сдвигов по времени презентаций официальных лиц и пр., но, думается, сложно уйти от таких мелочей.
Иногда было немного хаотично, какие-то вещи удобнее было бы реализовать в мобильном приложении, а не делать веерной рассылкой в «Телеграмме». Хотя, несомненно, с т.з. реализации — самый простой и достаточно удобный вариант.
В общем, даже вспомнить что-то эдакое сложно. При желании можно было легко найти и пообщаться с экспертами. Мы с Анатолием переговорили с представителем администраици города Lyon по тематике «Доступного города». Он дал весьма полезную информацию, как власти обеспечивают доступную среду. В общем, все открыто и дружелюбно.
Из минусов, мои ребята отметили отсутствие серификата участника хакатона. Они — студенты и подобные бумажки, пусть даже в электронном виде, могут добавить баллов в учебе и пунктов к резюме при трудоустрйостве. Надеюсь, организаторы сделают рассылку PDF файлов позже.