Чем полезны хакатоны. История одного проекта

2 комментария
Чем полезны хакатоны. История одного проекта

Не секрет, что идеологически правильный хакатон — это то мероприятие, которое помогает годные идеи, витающие в воздухе, воплотить в приносящие пользу обществу или компании проекты. Так, на очередном внутреннем хакатоне 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 заработал. В итоге на демо показывалась не болванка с адресами — всё было честно.

Естественно, идея интересна не только команде, но и компании. Поэтому приложение будут развивать и дорабатывать.

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Горячие события

Gismart Online Meetup
9 декабря

Gismart Online Meetup

Минск

Читайте также

«Любая власть не может бить и унижать». Глава EPAM Украина о ситуации в Беларуси
«Любая власть не может бить и унижать». Глава EPAM Украина о ситуации в Беларуси
«Любая власть не может бить и унижать». Глава EPAM Украина о ситуации в Беларуси
1 комментарий
Директора EPAM перевезли в ИВС Барановичей. Он пробудет там до 7 декабря
Директора EPAM перевезли в ИВС Барановичей. Он пробудет там до 7 декабря
Директора EPAM перевезли в ИВС Барановичей. Он пробудет там до 7 декабря
EPAM сделал базу учёта пациентов с COVID-19. Почему её не запустили?
EPAM сделал базу учёта пациентов с COVID-19. Почему её не запустили?
EPAM сделал базу учёта пациентов с COVID-19. Почему её не запустили?
10 комментариев

Обсуждение

            c@bik
c@bik Software Engineer в EPAM
0

Приложение доступно для скачивания?

6

Описано конечно так, как будто ребята Тихий океан с Фёдором Конюховым на весельных лодках пересекли и только вернулись.

Если серьёзно, мне кажется что для решения данной проблемы больше подходят айпадики которые висят в офисе, с удобным механизом трекинга (оно конечно дорого, но красиво и удобно). Например:
https://robinpowered.com
https://itunes.apple.com/by/app/meeting-room/id558711525?mt=8

Кстати, как я вижу, используется Google Map SDK, у кого нибудь есть опыт запиливания Google Indoor Maps? Ибо если есть этажность то просто карта не подойдёт.

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже