Не секрет, что идеологически правильный хакатон — это то мероприятие, которое помогает годные идеи, витающие в воздухе, воплотить в приносящие пользу обществу или компании проекты. Так, на очередном внутреннем хакатоне EPAM собрались команды, которые решали большую задачу — улучшение жизни офиса и его сотрудников.
Победителем стала команда Voblačka, которая, к слову, не новичок в такого рода мероприятиях. Ребята смогли прийти к поставленной цели красиво и ярко. И пока где-то в офисах EPAM герои статьи воплощают проект в жизнь, мы расскажем вам о талантливой команде и их эффективной разработке.
Voblačka
Предыстория
Первый опыт хака-марафона ребята приобрели в 2013 году. Делали веб-приложение, целью которого была координация людей в группах, где группа — это люди из одного кабинета. С одной стороны, проект был неудачным в плане конечной реализации идеи (сделана была только часть UI с полурабочим бекендом). С другой стороны, члены команды получили позитивный опыт, который помог победить на этот раз.
За год Voblačka набралась сил, опыта, и начала работать над новой идеей. Формат java-хакатона особенный: за восемь напряженных часов работы им удалось создать мобильное приложение для платформы Android. Команда учла, как и что стоит подготовить заранее, как распределить задачи чтобы каждый на разных этапах смог быть вовлечённым в конкретное задание или помогать товарищу, как обсуждать и решать спорные вопросы и достигать консенсуса в условиях ограниченного времени. Такой вот «экстремальный scrum».
Состав команды
Команда состоит из четырёх человек. Капитан, Алексей Жингеровский, отвечал за координирование остальных членов команды, а также за Android-приложение и создание технического задания. Максим Голунко писал скрипты для Raspberry Pi, дорабатывал приложение под Android. Андрей Акатьев и Вера Сидорович были ответственными за Java-приложение и взаимодействие со сторонним API для работы с Outlook и Google Maps.
Приложение
Идея
Идея приложения заключается в том, чтобы упростить бронирование комнат для совещаний. Сейчас это делается через календарь Outlook, что не всегда быстро и удобно. Быстро найти помещение — сложно, а если оно ещё и в другом офисе, то совершенно не понятно, какими характеристиками обладает. Команда решила упростить задачу и добавила интерактивности в само понимание бронирования комнат. Так, появились не только описание пространства, но и возможность «сообщать» о доступности кабинета в любой момент времени.
Часто спонтанно возникает необходимость найти место для обсуждения буквально на 10 минут. В этом случае обычный процесс с поиском и бронированием свободной комнаты через Outlook слишком громоздок. Разработанное приложение, используя геолокацию, позволяет мгновенно найти ближайшие свободные аудитории. Датчики же движения в них сообщают о занятости комнаты гораздо надежнее статуса «booked» в Outlook, избавляя от необходимости заглядывать внутрь и тревожить людей.
В итоге получился прототип реализации идеи:
Разработка
При разработке использовался Raspberry Pi — мини-компьютер с камерой. Предполагалось, что он находится в митинг-комнате и отслеживает движение через камеру.
Итого, было использовано слияние мобильного телефона и «малинового» компьютера.
Из-за укороченного формата марафона идти на него без подготовки было бессмысленно. Здесь стоит отметить доскональный бизнес-анализ и тщательную разработку тестовых прототипов приложения, которыми Voblačka занимались «до».
«Предварительная работа команды с UX-дизайнером и потенциальными пользователями была плодотворной — разработали не только скетч-прототип приложения (с использованием Indigo Studio), но и проработали BMC (Business Model Canvas), User Stories и Customer Journal Map», — говорит один из создателей приложения Алексей Жингеровский.
Структурно проект состоял из трёх компонентов: приложение под Android, приложение на Raspberry Pi для обнаружения движения, сервер для хранения данных и API для соединения всего воедино. Использовалась следующая связка технологий: Java 8 + Spring Framework + MongoDB.
Поскольку предполагалось присутствие «малинки», которой отводилась почётная роль следить за наличием движения в комнате и сообщать пользователю о присутствии там людей, использовался Python и OpenCV.
Конечно, команда готовилась заранее, но боевой код не писала. Ребята настроили среду для разработки и позапускали демо-примеры. Это спасло их от большой проблемы: нужной версии библиотеки не было, надо было собирать из исходников, а на Raspberry Pi это заняло 8 часов! Кстати, яркий корпус из конструктора Lego, который любезно предоставил сын Алексея, тоже изготовили заранее.
Если говорить про сервер, то команда открыла для себя ещё раз Spring Framework через Spring Boot. Быстрый и приятный старт с Spring Boot + Spring Data позволили сосредоточится на бизнес-логике, в то время как всё остальное «просто работало». Удачный выбор для хакатона.
Основным продуктом было мобильное приложение. Проектирование интерфейса для Android-телефона было в новинку. Ребята ознакомились с темой за два вечера по книжкам. Это стало настоящим испытанием. Тем более, цель была поставлена непростая: использовать максимально свежую версию Android-платформы. Но опыта с Java, как оказалось в итоге, было достаточно для создания приложения.
Сложности
Проектировать UI оказалось не так просто, как казалось. Voblačka, вдохновлённые картинками и документацией по Material Design, не ожидали, что многие компоненты (анимация, поведение) не реализованы в SDK, а ещё инструментарий для разработки интерфейсов, которые чуть сложнее, чем одна кнопка, не так функционален и удобен. И всё пришлось писать в XML (что само по себе не сложно, но, учитывая крайне скудные познания в Android API, было проблемно), и сразу проверять на телефоне.
Стандартные приложения, такие как «Календарь», открыты. Поэтому некоторые моменты реализации брались напрямую оттуда. Но в итоге мечты о Material Design разбились, и всё было сделано скудно, зато работало.
Как заставить работать геолокацию? Как хранить данные и передавать их между Activity? Как отобразить фото с сервера? Всё это легко для тех, кто уже работал с Android, а вот ребятам пришлось исследовать новый мир на ходу (спасибо stack overflow за ответы).
Так как основная идея — простое и быстрое бронирование комнат, нужно было научиться это делать. В EPAM управление ими реализовано через MS Exchange Server. Поэтому Voblačka взяли на вооружение доступную библиотеку от Microsoft; никаких подводных камней не было найдено, всё работало.
На телефоне предлагалось бронировать комнаты в зависимости от текущего положения. Полуручной синтаксический анализ (парсинг) пары сотен адресов и ассоциация их с геолокацией через Google Location API — и поиск ближайших адресов через MongoDB заработал. В итоге на демо показывалась не болванка с адресами — всё было честно.
Естественно, идея интересна не только команде, но и компании. Поэтому приложение будут развивать и дорабатывать.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.