Всем привет! Я Миша Клюев, DevRel в Авито. В этой статье расскажем вам про наш опыт организации и проведения необычного хакатона. Внутри: рассказ о 56 часах кодинга в поезде, о том, что надо сделать, чтобы они состоялись, о том, какие проекты в итоге получились, и немного октябрьского моря.  Осторожно, трафик.  Идея сделать хакатон в поезде пришла ко мне достаточно спонтанно уже больше года назад. Поначалу мы с командой не воспринимали её слишком серьёзно. К тому времени мы уже провели несколько внутренних хакатонов (о которых писали в статьях: 1, 2). Сразу скажу, что для нас процесс хакатона важнее результата: на выходе не ожидается новых бизнес-фич, которые уйдут в прод. Для нас главное, чтобы все участники получили удовольствие от участия (тем не менее, какое-то количество проектов действительно потом уходит в прод). Покодить для души — вот главный лозунг всех наших хакатонов, и каждый участник решает эту задачу по-своему. Вдохновлялся я примером фановых хакатонов wth.by, на одном из которых мне посчастливилось побывать в 2015 году. Нам давно хотелось вынести хакатон из офиса, чтобы обстановка добавляла ещё больше драйва и веселья. Но просто смены декораций для полусотни разработчиков, которые большую часть времени проведут за ноутбуками, нам показалось мало. Тут то мы и поняли, что можно добавить движа в хакатон, если совместить его с путешествием, а поезд — самый очевидный для этого вид транспорта. Быстрый поиск показал, что хакатоны в поезде в мире уже проводятся, в том числе на постсоветском пространстве, но отечественных аналогов мы не нашли. Идея казалась несерьёзной и очень сложной в реализации: куда ехать, чтобы по пути была надежная связь, как заранее выкупить билеты в одном вагоне, пока не собраны паспортные данные участников, как проводить презентации проектов в поезде… Но летом этого года мы решили попробовать, и всё сложилось.  У РЖД можно арендовать вагоны разного класса и прицеплять их к поездам в нужных направлениях. Отсутствие стабильного интернета — не баг, а фича, дополнительный челендж, который влиял на выбор технологий и требовал более тщательной подготовки, решили мы. Город прибытия выбирали просто по времени движения поезда, одни сутки в одну сторону. Первым вариантом был Екатеринбург, но потом решили, что из осенней Москвы лучше выбираться куда-нибудь на юг.  В какой-то момент нам пришлось подвинуть даты проведения хакатона и чтобы поехать, мне пришлось бы в последний момент отказаться от выступлений на двух конференциях. Сам я очень люблю путешествовать на поездах, хакатон в поезде стал для меня мечтой, поэтому было крайне обидно его пропустить. Но теперь мне остаётся только передать слово моим коллегам, которые успешно организовали и провели этот уже легендарный (по крайней мере в Авито) хакатон и кусать локти, разглядывая фотки и читая отзывы участников. Ну и конечно думать о том, чем удивить в следующий раз!   Валя Михно, event-менеджер
Идея хакатона в поезде мне сразу понравилась. Круто вытащить коллег из офиса и вместе с ними отправиться в путешествие, да ещё и поработать по дороге. К тому же, мне всегда интересно браться за нестандартные задачи и проекты, которые до тебя никто не делал.
Хоть организовывать хакатон в поезде задача и интересная, но крайне непростая: трудно работать с железнодорожной монополией, получить гарантированное подтверждение регистрации от программистов, непонятно, как организовывать интернет в «слепых» зонах и составлять меню на два дня в плацкарте для пятидесяти незнакомых коллег. Но, пожалуй, сложнее всего было выбрать направление нашего путешествия. Сначала мы планировали поездку в Екатеринбург по известной Транссибирской магистрали. Но в октябре в Екатеринбурге довольно холодно, да и варианты, как провести время пятидесяти уставшим программистам после суток в поезде с пользой, показались мне довольно банальными — всё это можно было и в Москве устроить. Тогда появилась идея поехать на юг, к морю. И тут моё внимание остановилось на маленьком курортном городе Анапа. Всё складывалось как нельзя лучше: отправление в пятницу утром, время в пути чуть меньше суток, семь часов на море (идеально, чтобы закрыть пляжный сезон), а прибытие в Москву в воскресенье вечером. В общем, бинго — едем в Анапу. С менеджером РЖД мы выбрали нужные нам поезда туда и обратно, забронировали вагон-плацкарт (он атмосфернее и лучше помогает сплотить команды), обсудили все детали оформления поездки и запустили договор на согласование с нашими юристами. Все шло как по маслу и спокойно, но за месяц до поездки мне понадобилась информация по условиям вагона (количество и мощность розеток, наличие постельного белья и подстаканников и другие мелочи). И тут началось… Я поехала на встречу с менеджером РЖД в депо, чтобы сделать фотки нашего вагона. Оказалось, что наш новый комфортный плацкарт с фоток на сайте превратился в вагон 2018 года старого формата. К тому же, даже его логисты РЖД не разрешили прицепить к изначально запланированному поезду «Москва – Анапа». Условие было ультимативное. Пришлось соглашаться на все условия и ехать другим поездом. Отказаться совсем мы не могли: вовсю шла регистрация на хакатон. Новый поезд едет до Анапы дольше, поэтому наше время в поезде увеличилось на шесть часов, а время на море сократилось до четырёх. Мы немного расстроились, но не отчаялись — мы ведь сами хотели устроить хардкор. Так и получилось. А как мы ездили в депо с работниками РЖД на служебной машине со всеми припасами, вскрывали наш вагон среди белого дня, останется в моей памяти надолго…  Валя Михно, event-менеджер
Как мы анонсировали хакатон и придумывали тематику достойно отдельной истории. Расскажу здесь об этом лишь вкратце. Мы почти сразу решили, что сделаем тематику «Безумного Макса» и описали это так: «Представьте, что мы мчимся в Анапу альтернативного будущего на футуристическом паровозе. Люди придумали мощные паровые компьютеры, мощный паровой lisp, fortran и прочие бейсики с паскалями, но забыли придумать интернет». В общем решили устроить коллегам настоящий челлендж — кодить в хардкорных условиях в поезде, без нормального интернета, душа и привычного комфорта, да к тому же провести свои выходные с коллегами, которых и так видишь целую неделю, плечом к плечу. Так себе перспектива. Одним словом, авантюра! Мы разработали логотип, придумали дизайн всего мерча и постеров, сделали лендинг и открыли регистрацию. Регистрироваться нужно было сразу и наверняка, потому что на каждого выписывался именной билет. Если участник в последний момент откажется — его место пропадёт. Конечно, мы об этом сказали, но переживали, что никто не захочет регистрироваться: никому не хочется подставлять коллег, если вдруг в последний момент появятся какие-то важные дела. Но я верила, что авантюристы в нашей компании существуют. В первой волне регистрации вагон заполнился лишь наполовину. И какое-то время счётчик регистраций не двигался. Тогда нам пришлось применять смекалку. Каждые пять дней мы постили новую информацию по этапу подготовки хакатона, что могло привлечь новых участников. Я сообщала о покупке высокоскоростных роутеров (интернет, всё-таки, будет), рассказывала о программе в Анапе с шашлыками от владельца гостиницы Акопа и постила оптимистичный прогноз погоды — шансы искупаться в октябре были высокие (и прогноз погоды меня не подвёл). Любителей поездной романтики я привлекала фотками дошираков и историями создания этого идеального блюда для поезда. Потом опубликовали номинации юбилейного хакатона. Среди них были наши традиционные, например, «Кубок хакатона» и «Самый эпичный фейл», и те, которые мы придумали под этот необычный хакатон: «Самый древний стиль программирования» и «Лучший фронтец». Наших инженеров номинации на участие вдохновили. Ну и в конце мы даже разрешили приглашать матёрых хакатонщиков, бывших сотрудников Авито. В сумме все сработало! Ровно за месяц до поездки наш вагон был полностью укомплектован, и все имена были внесены в договор.   Валя Михно, event-менеджер
Несмотря на то, что тематика хакатона была хардкорной, я очень хотела, чтобы интернет, всё-таки, был. Выжать по полной возможности интернета на ходу и сделать его доступным для всех участников на всём пути — это стало для меня челленджем. Я несколько дней общалась с сетевиками в Авито, выбирала подходящие маршрутизаторы для нашего случая, рисовала план их размещения в вагоне, подбирала лучшего провайдера на пути «Москва – Анапа», изучала карты покрытия и мануалы роутеров. Интересный опыт! Что вышло из этого? Мы закупили четыре 4G-роутера с высокоскоростным беспроводным соединением, которые позволяли использовать две сим-карты одновременно и переключаться на того провайдера, чей сигнал был сильнее. Закупили восемь сим-карт трёх главных российских операторов связи, шестнадцать Wi-Fi и GSM антенн. Всё протестировали и создали карту сети с помощью нашего лётчика-испытателя и разработчика, написавшего приложение, где эту карту можно было создать. Сил потратили много, но это стоило того. Конечно, на пути были мёртвые зоны в полях и лесах, но получилось лучше, чем мы ожидали. Скорости и покрытия хватало даже для того, чтобы наш фотограф мог закачать сотни фоток на облако и расшарить их хакатонщикам ещё в пути. 
Сережа Вертепов, senior QA engineer, лётчик-испытатель интернета
Одним прекрасным утром я прочитал новость о том, что Авито планирует провести еще один хакатон. До этого я в хакатонах не участвовал, но давно планировал, и прочитав, что хакатон будет ещё и в поезде на пути в Анапу, я сразу понял, что такую возможность упускать нельзя. На сайте хакатона было сообщение о том, что нужен доброволец, который заранее проедет по маршруту «Москва — Анапа — Москва», чтобы составить карту покрытия сети ну и в целом разведать обстановку.
«Хм, неплохо», — подумал я и сразу же написал о своем желании стать первопроходцем. Меня сильно удивило, что никто не изъявил желания бесплатно съездить в Анапу, пусть и в не курортный сезон. Видимо, не все так любят курорты Краснодарского края, как я. 28 сентября я оказался в поезде. У меня было два айфона, приложение, которое трекает покрытие и координаты для построения дальнейшей карты (его написал наш lead iOS-engineer Влад Алексеев), а также Wi-Fi модем с двумя симками. Поездка прошла замечательно. Особенно радовало то, что за все время у меня практически не было попутчиков. Удивило то, что у меня не было какого-то информационного голода: интернет хоть какой-то, да был. На мессенджеры, соцсети хватало. Не всегда, конечно, но большую часть времени. По крайней мере мне так казалось, да и карта, которую построило наше приложение говорила плюс-минус о том же. Кстати, заметил, что первую половину пути более устойчивое соединение было у одного оператора, а вот ближе к Краснодарскому краю у другого. В общем, я проехался на поезде, пока один айфон трекал информацию с одной симки, а другой с модема с симками остальных операторов, провёл в Анапе одну ночь и вернулся. Всё «путешествие» заняло 4 дня. 
   Валя Михно, event-менеджер
Хардкор хардкором, но угробить желудки пятидесяти инженеров или заразить их инфекцией не очень хотелось. Поэтому важным пунктом в организации хакатона было — создать комфортные условия для работы в плацкарте, чтобы разработчиков ничего не отвлекало творить и писать код. Мы подготовили вэлком пак со всем необходимым: футболка, тапки, набор для сна (маска и беруши), дорожный зубной набор, пачка активированного угля, санитайзер, бутылка воды, батончик и пару каш быстрого приготовления. Кроме этого, мы взяли с собой много разной еды (которая заняла целых две боковых полки вагона). Из еды было много разных закусок, но главным блюдом этой поездки был, конечно же, доширак. 75 пачек на 50 человек закончились быстро. Приз зрительских симпатий получил доширак с говядиной — ребята даже обменивали свои заначки на говяжий дошик. Это было гениально! Более здоровая еда тоже была: мы обедали вагоне-ресторане, еду в котором мы заказали заранее и даже прописали поштучно в договоре. Повторюсь, мы же не хотели испортить желудки коллег. Обед был комплексный и как полагается: «первое», «второе» и салат. Вместо компота — сок. Забавно получилось, что наш вагон прицепили дополнительно, и он был шестнадцатый по порядку. А вагон-ресторан был одиннадцатым. Каждый участник хакатона по пути на обед прошёл больше, чем через двадцать дверей, — проводники, отвечающие за свои вагоны, просили закрывать за собой двери. В сумме за два приема пищи в пятницу и в воскресенье мы открыли и закрыли больше ста двадцати дверей. Санитайзер положили не зря. В итоге благодаря грамотным анонсам мы успешно закрыли регистрацию, донесли всю важную информацию до участников, в поезде все были сытые, никто не отравился, ни один инженер не потерялся, и мы благополучно доехали полным составом обратно в Москву. «Челлендж комплитед!». В наш телеграм чат «Поезднутые на AvitoHack RailRoad» после поездки ребята ещё долго писали свои впечатления и фотки с поездки. Все остались довольны, отзывы были отличные, а один коллега сказал, что это был самый яркий момент за все время работы в Авито. Я считаю, это и есть успех! Хакатон в поезде — проект масштабный. Вот что у нас было с собой, чтобы его реализовать.  И потратили почти 42 ГБ мобильного интернета.  Трудно писать об атмосфере, поэтому просто посмотрите фото. .
                               Мы привезли с собой 19 проектов. Конечно, про все рассказать здесь не сможем, но вот немного подробностей.  А ещё мы сделали проект с бесплатными облачными вычислениями на Go, cache для данных мониторинга в СlickHouse (для снижения нагрузки на базу данных при частых одинаковых запросах), проект с непрерывным профилированием Go-приложений, интерпретатор языка программирования Prolog, ускорили кодогенерацию для нашего Авито iOS проекта, написали приложение для подбора сочетаний опенсорс шрифтов на реальном контенте, а не на Lorem Ipsum и многое-многое другое.  Если вы или ваши друзья вдруг захотят повторить такой опыт, не лишним будет поделиться нашим опытом. Мы попросили самого опытного хакатонщика нашей команды, pik4ez’а, составить памятку для тех, кто решит покодить в поезде. Ему слово.   Дмитрий Белов, senior engineer, опытный хакатонщик В поезде труднее найти абсолютно необитаемый уголок, в котором не будет никого, кроме вашей команды. Будьте хорошими соседями. В нашем случае в вагоне были и укулеле, и гитара, и флейта. Но ребята играли очень хорошо и не долго. Музыка не раздражала, а, наоборот, давала возможность собраться в музыкальном уголке, спеть пару песен и отдохнуть от программирования. Алкоголь снижает продуктивность. Не стоит включать его в меню. Вопрос с зарядом устройств стоит решить заранее. В нашем случае был современный вагон и достаточно розеток. Но на всякий случай многие брали с собой пауэр-банки. Приходится следить за таймингами. На поезд опаздывать нельзя, к пересадкам нужно быть готовым и заранее собрать необходимые вещи. Помогают сохранённые памятки с расписанием и организаторы, по счастливой случайности едущие в том же вагоне. Скоропорт не берём, разве что, на первый перекус. Из не скоропортящегося можно сконструировать вполне приличное питание. Но сколько кодера ни корми, а он всё равно дошик любит. В небольших количествах отлично заходят лапша быстрого приготовления и кофе три-в-одном. С утра хороша каша быстрого приготовления. Но полноценный обед очень нужен. Вагон-ресторан может помочь. Тапочки нужны. Кодить лёжа на полке особо не получается. Стараемся не заваливать стол, чтобы разместить на нём пару ноутов. Ночью желательно вовсе не шуметь. Хакатон на колёсах посложнее перенести без сна, поэтому к ночи многие ложатся отдыхать. Очень полезно на станциях выходить размяться. В поезде повышается вероятность услышать парочку новых историй даже от тех, с кем работаешь уже много лет. Если видите море — купайтесь. Мы хотим передать наши эмоции от хакатона как можно лучше, поэтому ещё сняли и видео в поезде. Мы спросили у ребят их впечатления от поездки и кодинга без интернета, какие программы пишут, где ещё можно проводить хакатоны и о чём мечтают программисты. А Дима Белов рассказал о своих первых хакатонах и в чём польза таких мероприятий. Такими были наши впечатления и проекты. Надеемся, вдохновили вас на что-то новое и интересное. Если интересны детали — спрашивайте про них в комментариях. Обязательно ответим. Tech