Итак, сегодня я хочу вам поведать об одном событии, которое произошло 29 мая на территории Красного Октября. Постараюсь рассказать чисто субъективное мнение, которое сложилось у нашей команды.
День 1. Первые впечатления
Рано утром я отправился в Москву, чтобы побыстрее успеть на свой первый в жизни хакатон, на который я случайно наткнулся, когда заглянул на сайт API Moscow, который когда-то очень помог мне написать свое первое приложение для Windows Store. На странице Хакатона было достаточно подробное описание мероприятия с четким графиком и неплохим призом. Он разделялся на 2 этапа. Первый проходит 29 числа, выбираются несколько лучших приложений и их пускают во второй этап, который планировалось проводить через 2 недели. Единственное, что меня (как потом оказалось, вполне обоснованно) смутило, это наличие среди жюри в основном чиновников
Ну что поделать, Хакатон все-таки проводит правительство, но отсутствие экспертов в области мобильной разработки (или хотя бы информации о наличии данного скилла) меня очень огорчило, т.к. в голове сразу всплыли слова, которые у многих из нас возникают, если речь зашла о чиновниках.
Но вернемся к хакатону. Ничто не предвещало беды. Мой опыт с API Москвы ограничивался только одним набором данных и хоть у меня и возникали проблемы, но я думал, что они не имеют большого распространения. Презентацию хакатона открыли со словами «Ээ. Ну во-первых, нужно поблагодарить Владимира Владимировича Путина, что он издал указ, что вот мы должны начать работать» и прочее. Когда речь зашла о вопросах, сразу несколько разработчиков вырываясь, начали спрашивать о том, когда же уже сделают стандартизацию данных, т.к. например в одном наборе пишут «city», в другом «gorod», а названия улиц часто бывают с ошибками, не говоря уже о формате номера телефона. На что, как и стоило ожидать, прозвучал ответ, что они это уже исправляют и т.д. Также прозвучал вопрос, когда же смогут раскрыть данные проекта «Автокод». Интересно здесь то, что первый раз этот вопрос вообще проигнорировали, а когда кто-то специально выделяя этот момент, снова повторил вопрос, отвечающий замешкался и сказал, что обсудит это наедине.
Также, в описании хакатона, было сказано, что мы будем презентовать свои проекты, о чем организаторы успешно забыли.
В общем говоря, в начале дня это были единственные вещи, которые вызывали сомнение, но все-таки картина в целом остается довольно привлекательной. Я нашел команду, которую случайно встретил и она оказалась из моего университета, мы решили, что будем работать вместе. Итого: 2 android разработчика, к ним 1 дизайнер. Ну что, решил помочь им, написав порт для Windows Phone.
Еда. Голод. Расписание
Опять же, я не был на других хакатонах и мне сложно судить по поводу еды, но на конференциях, в которых мне довелось участвовать, кормили гораздо лучше. Тут все заключается в том, что тебя кормят вроде 3 раза в день, я не помню точно, т.к. первый день мы вообще не вылезали из конференц зала. Если ты опоздал, то поздравляю, твой желудок подождет до следующего раза. Количество тоже не могло порадовать. Черт. Это наверное слишком глупо придираться к еде, но скажем так, у меня сложилось впечатление, что фразу «Хороший разработчик — голодный разработчик», организаторы восприняли буквально. Сама еда была вкусная, но опять же, мало.
Вечер. Ночь.
Честно говоря, тут и говорить особо нечего. К нам часто заходили девушки(нет-нет, они из организаторов), которые интересовались, каким проектом мы занимаемся и т.д. Также пару раз заглядывали другие участники. Я очень волновался, когда узнавал, что кто-то тоже пишет под Windows Phone и очень боялся выставить свою команду идиотами, но как потом оказалось, зря.
Но хочется выделить один момент, когда к нам пришли ребята из жюри и спрашивали, имеются ли у нас технические сложности. А мы в свою очередь осыпали их вопросами, на что нам ответили, что практически все, что мы хотим сделать, нужно реализовывать через еще один API. ЕМП, в котором по словам ведущего, зарегистрировано 80% москвичей. Жаль, что никто из нас практически ничего не знал о этом API, кроме его существования. Ну ничего, набрались сил и продолжили работать.
А было все довольно усердно. Практически без перерывов, наполняя свой желудок лишь энергетическими напитками, которые бесплатно раздавала девушка у стенда.
Нет, это прекрасные эмоции, когда ты можешь писать код в команде. Для меня это было в новинку и конкретно из-за этого прекрасного чувства, я советую обязательно попробовать съездить на хакатон, если вы там еще не были.
Но вот на часах уже 5 утра, а в IDE творится черт знает что и где-то внутри приходит осознание, что код уже идет совсем бессмысленный, а простые проблемы решаются костылями и занимают очень большой промежуток времени. Явный признак, что пора идти спать. Будильник на 8 утра и вперед. Со мной последовал один разработчик, а оставшиеся ребята решили лечь через час.
Утро. Первый этап
Проснувшись за 5 минут до звонка будильника, уже чувствуешь в себе такой прилив сил, что кажется, будто ты поспал вечность. Переминаясь с ноги на ногу идешь умываться, берешь стаканчик кофе, т.к. от одного запаха энергетика уже начинало тошнить, печенье (это единственное, что можно было всегда взять) и передвигаешься в сторону зала, где лежит твой верный ноутбук и ожидает, пока ты продолжишь работу. Ребята спят. Сквозь туманный взгляд, как будто вчера ты отлично провел время с хорошей бутылкой спиртного, смотришь на свой код и приходишь в полное недоумение от своих последних строк.
Завтрак. Поел, но как обычно, все равно голодный. Через 3 часа связываюсь с самым лучшим дизайнером в мире для Windows Phone, пишу ему, что срочно нужен дизайн нескольких страниц, иконка, сплэшскрин и прочие прелести. Начинаешь чувствовать приток волнения, а о сне забываешь моментально. Особенно, вам стоило бы видеть глаза нашего дизайнера в 9 утра. Это как глаз Саурона, который… О чем это я. Последние штрихи, кое-как внедрение дизайна, исправление багов и т.д. Из-за того, что у нас не было доступа к API ЕМП (регистрация разработчиков занимает около недели), мы не могли получить доступ к нашему главному функционалу, поэтому пришлось сделать тур-версию, что впрочем потом не смутило жюри.
Итак, дизайнер дорисовывает презентацию, которая на удивление получилась гораздо лучше, чем статичные картинки у остальных. Тестируем последние версии, конечно же находим какие-то ошибки ровно перед сдачей, но чудом исправляем их и отправляем презентацию на почту компьютера, с которого будет происходить запуск. Раздаем телефоны жюри, наш дизайнер-волшебник выходит на фронт, получает несколько едких вопросов, смешит зал. Ну что, все как и планировалось. Очень огорчило, что мы были единственным приложением (тут мы деанонимизировались), которое не предлагало никакой монетизации, а просто ставило идею «Приложение для москвичей». Это никакого восторга у жюри не вызвало, но в общем-то все равно, главное, чтобы пользователи были довольны.
Среди жюри был представитель SONY и ORACLE. Среди участников (команд было в районе 28) примерно 40% были низкосортные приложения, т.к. разрабатывались в основном в одиночку, либо в очень небольшой команде. Кто-то выходил, очень стеснялся, кто-то первокурсники с ВШЭ, которые втроем успели сделать какой-то прототип, где маршрут на карте прокладывался прямой линией а-ля вертолет, кто-то делал просто отвратительные приложения, которые не умели толком ничего.
Но это я просто очень много обращал внимания на Windows Phone разработчиков и из-за очень большого волнения, был слишком критичен. Еще 40% были просто хорошими приложениями, которые достойны побороться за звание лучшего, но при условии, что лидеры допустят ошибки. Ну и наконец 20% действительно качественных приложений, которые способны перевернуть привычные сервисы и привнести что-то новое (нет, наше приложение я к этой доле не отношу).
Результат первого тура
Победило приложение Ситиграм, которое вы можете без труда найти в гугле. Я сейчас не хочу выражать наше общее мнение по поводу этого приложения, т.к. это будет выглядеть, как попытка опустить победителя, но если вкратце, то идея конечно великолепная, но разочаровал полный копипаст кода, который так усердно писали разработчики Дурова.
Мы заняли призовое место, приз от ORACLE — два сертификата на бесплатное прохождение любых курсов, или что-то вроде того. Нас четверо, а сертификатов два. Хоть я особо и не интересуюсь этой компанией, под Android не пишу, а Java не использую, то смысла для меня не было, к тому же сертификат был ориентирован на выпускников, которыми как раз скоро станут ребята из нашей команды, кроме меня. Но т.к. мы привыкли, что в приличном обществе всегда можно договориться, мы решили подойти и спросить про возможность 4-х сертификатов. Довольно быстро согласились и сказали выслать свои данные на такой-то адрес и скорее всего, всем сертификат и раздадут.
Прошли или нет?
Сказать, что мы волновались, это ничего не сказать. Эти мурашки по коже, когда называют команду и просят выйти, получить сертификат, это ощущение, что все, финишная прямая, теперь все зависит от нас… Нет тут-то было. Выходит ведущий и говорит, что все проходят во второй этап. Браво! Проще говоря, вам говорят, что все ваши попытки были тщетны и никого мы из лучших не выбрали, так что отправляйтесь вы все работать, может быть увидимся через две недели. Ну что? На самом деле, все конечно было не так страшно, а нам вообще было тогда до лампочки это, т.к. мы выиграли крутые сертификаты©.
Нет, правда. Нам и дело до этого не было. Мы были полны энергией и готовы продолжать разработку.
Но что-то пошло не так
Я возвращаюсь домой, отсыпаюсь и сразу же на каплях мотивации, продолжаю дорабатывать приложение, делая его как минимум красивым и удобным. Тем временем, заявка на получение аккаунта разработчика уже была отправлена в ЕМП.
Но стоит кое-что сразу рассказать. Дело в том, что любое действие, которое вы захотите совершить с ЕМП, потребует времени на проверку. Это же не какой-нибудь Вконтактик, где тебе надо зарегестрироваться и просто начать пользоваться удобным API с песочницей, фу, так нормальные люди не делают.
Итого:
4-5 дней на то, чтобы выслать мне сообщение о том, что мне уже отправляли пароль для аккаунта. Как оказалось, когда-то давно я все-таки там регистрировался. Ссылка на восстановление пароля? Зачем. Куда лучше получить дату сообщения и искать в своей почте письмо от них с паролем. Думаете, что все было так просто, да? Зашли, зарегистрировались, прождали 5 дней и начали пользоваться сервисом? Ну нет, это же небезопасно, ведь мы должны проверить каждого, кто захочет воспользоваться нашими драгоценными данными.
3-4 дня на регистрацию приложения. Приложение зарегистрировано, ура! Ребята, у нас осталась неделя, чтобы все сделать, давайте поторопимся! Сейчас, только я проверю, как там личный кабинет выглядит и документация. Наверняка, наши ребята из правительства постарались.
Секундочку. Отправка пароля в GET-запросе. Серьёзно? Представьте сейчас ваше лицо. Вот с таким лицом мы были практически все время, пока листали документацию. Так ладно парни, все понимаем, но мы должны доделать это приложение. Все согласились и продолжили работу. Я отправляю первый запрос. В ответ:
{"errorCode":403,"errorMessage":"Core::Authorization failed."}
Секундочку, что это. Проблема с авторизацией? Странно. Вроде все правильно сделал. Что говорите? Нужно запросить доступ к определенным API? Хорошо, но я пытался просто авторизоваться. Что? Для этого тоже надо запросить доступ. Хм. Ну ладно, куда нажать, а то мне уже не терпится.
Ладно, если без этого каламбура, то все закончилось тем, что для доступа к API, нужно 3 дня. Но мы уже ребята опытные, так что по нашей формуле, нужно взять это число и добавить к нему 2-3 дня. Так оно и было. А теперь внимание.
Ровно в полночь воскресенья все наши запросы к API получают разрешение. Ну я думаю, что мысль ясна.
Хаос
Тут мы понимаем, что происходит полный хаос. Они пишут нам на почту, по-дружески спрашивая, как у нас дела (рассылка всем) и просят задавать вопросы. Мы им рассказали, попросили ускорить подтверждение API (на этот момент, мы его еще не получили). В ответ они молчат. Пишем тем ребятам, что приходили к нам в первый день и слушали вопросы. Они говорят, что на скорость проверки они повлиять не могут. Ну да, программа сама себя не переключит в режим «Отключение имитации проверки». А также просим их сообщить нам e-mail, с которого будут скачивать приложение для Windows Phone, как нам можно отправить им приложение в Windows Store, т.к. время осталось очень мало и мы не успеваем выложить его (проверка занимает около 5 рабочих дней). Они говорят, что e-mail скоро пришлют. Для ускорения процесса, я отправил личное сообщение одному из организаторов, где подробно объяснил ситуацию, что из-за времени, которое мы потратили сидя на месте, ожидая, пока нам дадут доступ, я теперь не успеваю выложить его в Store. Мы в срочном порядке начинаем искать выход. Один из команды вспоминает, что все, что передается по их API, это GET-запросы, достает сниффер и присылает нам ключи… Использовать чужие токены для того, чтобы принять участие в их же конкурсе… По-моему, это абсурд.
Итого
Тот организатор прочитал сообщение в тот же вечер, но ответить на него не соизволил до сих пор. Ребята с e-mail переписки так и не прислали для меня e-mail. Все мои силы на смарку. Мы выложили кое-какую Android-версию, но без нормального API(были проблемы с кодировкой, ни о чем не говорящими ошибками и еще много) это по сути приложение-пустышка. Тоже самое и для Windows Phone. Дедлайн переносился раза 2 или 3, я уже не помню. Только совсем недавно мы узнали, кто победил в хакатоне. По поводу сертификатов с нами так и не связались, хотя мы несколько раз отправляли наше общее письмо.
Конечно было много и хорошего, вроде отличного конференц зала с удобным креслом, большой доской, но все хорошие впечатления в основном были от самой атмосферы, нежели от конкретных действий. Про второй этап хорошего сказать я не могу ничего.
P.S.
Я сразу хочу извиниться за ошибки, которых тут столь много (пишите про них в лс, пожалуйста) и чересчур большое количество критики, но это лично моё мнение, которое совпадает с мнением команды. Я просто описал это от первого лица. Всем счастья, участвуйте в хакатонах.
Автор: Milording