image

Привет, ГТ!

Меня зовут Денис Цыплаков, я — Solution Architect в DataArt.
В конце февраля этого года команда DataArt участвовала в travel-хакатоне THack 2015 Berlin и выиграла главный приз для больших команд. Проводил хакатон онлайн-журнал Tnooz.
Ниже расскажу, как это было. И почему мы выиграли.

Коротко о конкурсе.

Tnooz — один из крупнейших информационных ресурсов, посвященных технологиям в сфере туризма.

Он существует с 2009 года. Основная тематика издания — travel-технологии. Эксперты, пишущие для Tnooz о трендах и перспективах индустрии, живут по всему миру. Кевин Мэй, редактор и один из создателей ресурса, до этого около четырех лет был редактором в известном английском журнале Travolution.

Кроме онлайн-новостей и аналитики, Tnooz ведет серию успешных проектов: хакатоны THack, презентации TLabs, серия встреч Appy Hour и различные вебинары.

Наиболее заметный из этих проектов — это THack, хакатоны для разработчиков ресурсов и приложений, связанных с путешествиями. Tnooz провел уже девять таких мероприятий в шести странах. Среди победителей THack в разное время бывали и гиганты travel-индустрии, такие как Amadeus, и талантливые одиночки, работавшие без поддержки команды.

Все началось с новостной рассылки от Tnooz.com – нам пришла благая весть, что очередной THack пройдет недалеко – в Берлине. Мы быстренько побежали на Skyscanner и, вдохновившись низкими ценами, решили, что ехать надо по-любому.

Краткое объяснение, кто такие «мы». В DataArt есть понятие «индустриальные практики» — группы людей, работающие с какой-либо индустрией (например, финансы, онлайн-путешествия, здравоохранение). «Мы» в данном случае — инициативная группа Online travel-практики. Подробнее почитать, чем мы занимаемся и с кем работаем, можно тут.

До этого наша Online travel-практика уже участвовала в конкурсах, и это позволяло получить достаточно интересных клиентов. Но последнее время ситуация изменилась, и по новым правилам разработчики должны присутствовать на конкурсе локально. Вывезти команду на 24 часа в Сан-Франциско или Дели — не самая простая задача, и Берлин для нас был просто прекрасной возможностью.

Как водится, мы решили заранее заготовить рояль в кустах и примерно за две недели до начала конкурса придумали, что будем показывать, и начали работать над приложением. Идея была достаточно интересна и строилась вокруг bluetooth-маяков и автобусных туров. THack начинался 28 февраля, 26 у нас все было готово, оставалось отполировать UI и, может быть, подработать интеграции. Команда собрала вещи и приготовилась ехать.

Ехали мы следующим составом.
  • Backend/.NET разработчик — Дмитрий Выростков.
  • iOS-разработчик — Ярослав Воронцов.
  • На всякий случай помочь, если что-то пойдет не так/может писать на Java — Денис Цыплаков.

Из Лос-Анджелеса нам на встречу ехал Рома Пескин, solution consultant, знающий travel-индустрию от и до, который должен был придать идее должный блеск и презентовать это все на сцене. При этом общее настроение сложилось следующее: «выиграть не обязательно, главное — засветиться».

Рано-рано утром воронежская часть делегации встретилась в аэропорту VOZ, и Дима, успевший утром почитать почту, обрадовал нас новостью, что Рома презентовать заготовку не хочет. Он хочет выиграть, и у него есть идея, как нам это сделать.

В 7 утра эта мысль, конечно, дошла до нашего мозга, но особого бурления там не вызвала. Через два часа банда команда высадилась в DME, и до нас стало доходить, что мы едем участвовать в хакатоне вообще не подготовленными. Т. е. у нас с собой, кроме музыкальных инструментов ноутбуков и пустого репозитория в GitHub, по большому счету, ничего нет. Т. е., как ехидно отметил впоследствии Рома, «едем прям как на настоящий хакатон». Осознание заставило нас ударными темпами занять в аэропорту столик рядом с розеткой и начать планирование. На руках у нас были:
  • Один iOS-разработчик.
  • Один универсальный солдат с упором на .NET и JavaScript в лице Димы.
  • Один Java-бэкенд-разработчик в лице Дениса.
  • Обещание Ромы к вечеру представить нам детализованную идею — что именно будем делать.

Во-первых, мы сели в круг и спешно начали проверять, все ли необходимое для работы установлено на ноутбуках, хорошо ли себя чувствует сервер, поднятый в AWS EC2, и все ли могут достучаться до GitHub. По уму это надо делать дома, но, как я уже упоминал, ехали мы несколько расслабленные.

Во-вторых, пришло время садиться в самолет, и мы полетели в Берлин. Добравшись до гостиницы и поселившись, наконец-то нашли в ресторане отеля Рому и побили спросили: «Рома, каков план?»
image
Рома: «Ну, парни, готовы покодить?»

План был следующий:
  • Выиграть THack.
  • Для этого надо как можно полнее удовлетворить требованиям жюри.

Тут надо сказать, что в какой-то мере мы начали играть нечестно: Рома как человек очень плотно протусованный в индустрии онлайн-путешествий, неплохо знал, на что жюри смотрит. Его мысль была проста, как молоток. Наша домашняя заготовка хороша, но с ней мы не выиграем. Т. к.:
  • Видно, что это заготовка, и в жюри — не дураки.
  • Надо использовать как можно больше предоставленных API, а мы используем только один, да и то частично.

У Ромы была другая, достаточно неожиданная идея: сделать command line-интерфейс к комбинации нескольких тревельных систем для планирования поездок опытными путешественниками. Как сказал впоследствии один из членов жюри: «Это же чертов GDS через веб!»

На этой позитивной ноте мы вызвали такси и поехали ужинать в центр Берлина.
image
Где-то в центре Берлина.

Утром следующего дня мы добрались до места проведения конкурса. Поздоровались и обнялись с вышеупомянутым Кевином Мэем (обнимался Рома). Помещение представляло собой полуподвал с голыми стенами, столами, маленькой сценой и очень хорошим WiFi.
image
Подготовка сцены.

Захватив стол, мы целых 15 минут продумывали и рисовали на бумажке архитектуру будущей системы и бросились кодировать.

Тут надо заметить, что выбор технологий у нас во многом диктовался ассортиментом имеющихся разработчиков. И в целом, оглядываясь назад, наш опыт, неплохо доказывает: если у разработчиков прямые руки, технология не так важна.

Следующие 24 часа прошли в плотном клацанье клавиш с небольшими перерывами на еду и совсем небольшим — на сон.
image
Дима Выростков, Роман Пескин.

В воскресенье в середине дня мы медленно всплыли на поверхность, имея на руках более или менее работающую альфа-версию, которая интегрировалась с API:
  • Lufthansa (2 разных API)
  • Sabre GDS
  • Foursquare
  • Get Your Guide
  • Google Maps
  • Uber
  • Weather API

При этом оно работало в браузере и в iOS-приложении и прозрачно умело переносить сессию туда/сюда.

Не забываем: это была-таки альфа-версия, сделанная за 24 часа, и там многое было сшито на живую нитку.

В 12 часов провели жеребьевку, и около 20 участников конкурса начали показ приложений. Мы же в это время нервничали, полировали ряд тонких мест в приложении и помогали Роме готовить 5-минутную презентацию.
image
Последний рывок, все бегают и суетятся.

Примерно за три часа мы отполировали презентацию и приложение до блеска. Попутно слушали презентации других команд. Интересный момент, что практически все проекты имели в основании следующую идею:  «Надо, чтобы пользователь меньше думал и меньше выбирал. Не давайте ему выбора. Сразу что-нибудь ему продавайте. Если будет выбирать, покинет сайт». На этом фоне наше приложение с текстовыми командами и достаточно разветвленной системой подбора тура смотрелось, как пришелец из перпендикулярного мира.

Настал момент презентации. Собственно, про него я рассказать могу мало – это было ровно пять минут, ибо, как сказал Рома «презентации длиннее пяти минут на THack никогда не выигрывают». Презентация была бодрая, насыщенная, в тему, без воды. Мы готовились заранее: проектор показывал экран ноутбука, а затем, когда сессия перепрыгнула с браузера на iPhone – экран телефона.

Затем настало время объявления результатов, и — тыдыщь!!! — мы занимаем первое место в номинации для больших команд. И второе — в специальной номинации Lufthansa.

Почитать про итоги и посмотреть Ромину презентацию с результатами можно здесь http://www.tnooz.com/article/thack-berlin-winners-presentations-pictures/
image
Dimitry Vyrostkov, Denis Tsyplakov, Yaroslav Vorontsov, Roman Peskin and Gene.

Дальше было, в общем, не так интересно. Мы дослушали, собрались и отправились в бар подводить итоги.
image

На картинке ниже схематично изображена архитектура нашего приложения.
image

Участники
Имя Роль Tech stack
Роман Пескин капитан Macbook, ручка, дубинка
Дмитрий Выростков тим/тех лид, фронтенд-разработчик JavaScript, .NET
Ярослав Воронцов iOS-разработчик iOS native
Денис Цыплаков бэкенд-разработчик Java

В заключение хочется сказать, что это был достаточно интересный опыт. THack проводился накануне знаковой в travel-мире выставки ITB 2015, и первое место в THack сильно прибавило нам очков и прокачало репутацию.

Один из главных уроков, которые я усвоил: если хочешь выиграть, ставь себе задачу выиграть, а не «поучаствовать и, может быть, выиграть». Как сказали конкуренты при разборе полетов в баре, DataArt выиграл нечестно: вместо юных стартаперов аутсорсерская компания привезла трех злых матерых экспертов во главе с хитрым лисом, знающим все ходы и выходы. Все, что я могу на это ответить, — мы хотели выиграть и старались, как могли.

Комментарии (2)


  1. pa3ot
    27.05.2015 22:34

    PostgreSql только для хранения сессий и кэшей?


    1. Semenych
      01.06.2015 18:53

      Да сессия с параметрами того что пользователь ищет и кэш для цен которые при другом раскладе достаточно медленно из API получаются.
      Все остальное stateless.