Недавно имел удовольствие участвовать в хакатоне, который среди сотрудников своих украинских офисов проводила компания EPAM Systems. О некоторых наблюдениях и размышлениях, навеянных этим событием, а также о том, что получилось сделать у нашей команды, и повествует мой рассказ.
Организационная часть была отработана великолепно: еда на любой вкус, настольные игры, Xbox, кресла-мешки, в которых при некоторой сноровке можно и спать. В киевский офис приехали 13 команд, иногда было тесновато, но это скорее бытовые мелочи, которые мало кто заметил.
Как это было
Тему хакатона – “Green Planet” — огласили почти за неделю до начала мероприятия, времени для продумывания идеи было достаточно. Я полагаю, что идею для быстротекущего проекта не следует придумывать «с нуля», пытаться что-то высосать из пальца или искать способ спасти мир. Гораздо лучше предложить/развить решение проблемы, которая в какой-то мере беспокоит конкретно Вас, или с которой приходилось сталкиваться на других проектах.
Работа кипит
Как и в любом проекте, важную роль играет команда и распределение задач в ней. Забавно, что в нашем подразделении оказалось очень много желающих «похакатонить», обсуждался даже вариант выдвинуть 2 команды. Но в итоге ограничились одной с 6 парами рабочих рук. На будущее решил, что для такого дела лучше формировать команду в 4-5 человек – легче управлять и гарантировать наличие задач для каждого. Для обеспечения командной работы очень полезными оказались заранее развернутые сервер приложений и БД.
Выбор инструментальных средств производился очень просто: каждый член команды брал только те инструменты, с которыми имеет наибольший опыт работы. На весь проект дается примерно 24 часа (в том числе ночь, когда все-таки желательно уделить пару часов сну), гуглить и писать на Stackoverflow.com много не получится. Очевидно, что оценить риски и возможность сделать проект рабочим за столь короткое время – одна из главных задач команды. Среди хакатоновских граблей сложно выделить нечто, на что не наступал бы разработчик в реальных условиях. Но резко возрастает ценность презентации проекта — каждой команде по 5 минут, и эти минуты становились решающими.
О нашем проекте
Основным трендом на мероприятии было применение и расширение геоинформационных сервисов, не удержалась от такого соблазна и наша команда.
Центральным техническим решением проекта стал парсинг изображений контрастно различимых карт и их рендеринг на Google Maps с помощью полигонов. Развивая тему «Green Planet», мы предложили накладывать на карту местности послойно карты загрязнений окружающей среды.
С помощью нашего приложения желающий выйти на прогулку мог просмотреть уровень загрязнения в той или иной части города, и замерить количество потребляемых вредных веществ на проложенном им маршруте. Обращаю внимание, что алгоритм обхода «грязных» зон нами реализован не был, это отдельная задача на будущее, пока что можно создавать маршрут только самостоятельно. Такие возможности предоставляло веб-приложение, а версия приложения для Android давало возможность увидеть карту загрязнений, текущее положение на ней (с помощью GPS), а также записывать пройденный маршрут и выдавать предупреждение при вхождении в зону, где уровень загрязнений превышает пороговое значение. Имя проекту дали «GreenWay».
Техническое решение, естественно, начинается с GoogleMaps API, благо почти все нужные нам функции имели один интерфейс под веб и Android.
Веб-приложение написано с использованием фреймворка JSF. Информация о каждом слое загрязнений хранится в текстовом файле формата JSON, который загружается в память при старте приложения. На карты эти слои накладываются как объекты Overlay на стороне сервера. Пользователь задает начальные и конечные точки маршрута и указывает вейпоинты (точки, через которые обязательно должен пройти маршрут), а сам маршрут запрашивается через веб-сервис Google Directions API в формате JSON. Нанесение маркеров старта, финиша, вейпойнтов и прорисовка маршрутов реализовано на JavaScript.
Веб-приложение GreenWay
Приложение для мобильных устройств делалось для API версии 8 (совместимо с Android ≥ 2.2). Полигоны загрязнений строятся из тех же файлов данных, что и для веб-приложения, эти файлы пока что хранились локально. Позиционирование на карте осуществлялось с помощью GPS LocationProvider, из его же данных построчно записывалась информация о пройденном маршруте и скорости в текстовый файл.
На устройствах с небольшой диагональю экрана приложение работало достаточно быстро, но вот для 4 и более дюймов замечены серьезные тормоза. Естественной причиной тому было отсутствие оптимизации построения полигонов или их загрузки по секторам – этим заниматься на хакатоне было некогда, но очевидно, что проблема решаемая.
Android-приложение GreenWay
Подводя итоги
Результат работы оценивало жюри из топ-менеджмента компании. Формальным критерием оценки была демонстрация на выходе чего-то работающего, полезного и с красивым UI. В дополнение к этому голосовали все участники конкурса, определяя приз зрительских симпатий, в нашем случае именовавшийся «Призом за лучший стартап». Эту награду, кстати, получила наша команда, вместе с третьим местом в общем зачете.
Наша команда
Не располагаю информацией о дальнейшей судьбе других хакатон-проектов, но с оптимизмом смотрю на будущее детища нашей команды. Картографическое приложение, идею которого мы представили на хакатоне, в январе планируется запустить как сервис специализированного центра данных. Есть еще пара интересных идей, в частности, в сегменте Android-приложений. В нашем случае сдерживающим фактором является доступ к картографическим данным, у которых в большинстве случаев есть законный правообладатель, или министерство, которое не всегда настроено дружелюбно.
Хакатон – это отличный инструмент для профессионального роста, внедрения своих идей и еще один вид развлечений выходного дня. Успехов Вам и до встречи на новом хакатоне!
Автор: szhuk