Хакатон как способ расширения кодерского сознания. Фото-корреспондентский отчет

35d932bfef8f329aa9d1cf29cddf4c2d.jpgПроснувшись однажды утром… (нет). Проснувшись как-то вечером… (нет!). Короче, проснувшись однажды на работе солнечным утром (вот уже провокационно звучит), и протерев глаза от производственной рутины, подумал я о том, что команда наша — конечно великолепная, но технологически несколько узковата… «И надо бы покодить на чем нибудь другом!» — блеснул я оригинальной мыслью. И вот мы сделали собственный хакатон, который заточили не по тематике, а по технологии. Получилось, сразу скажу… неплохо.

После короткого анализа нашей текучки, условия были поставлены следующие:

3 полных дня на выезде с ночевками (не отвлекаться!); Обязательно в полном составе; Формат — стандартный (от естественных идей, через естественный их отбор, и вперед — к реализации); Идеи проектов — ограничили веб-сервисами (десктопы категорически не хотим), да и само по себе «программирование для людей» — в целом приятное дело. Технологические условия:

кодим на чем угодно, только не на нашем «рутинном» стеке (php / java / python / mongodb / *sql / мобильники / пайка микросхем / программирование микроконтроллеров); что означало: [node.js] [go] [erlang] [redis] и любые базы [кроме sql] и поднадоевшей уже [mongodb]; Фронтенда у нас совсем нет, поэтому приглашали друзей/знакомых, но они почему то не присоединились (выходных пожалели — и зря!) — поэтому на фронтенд-ные технологии не ориентировались вовсе; Подготовка по стеку минимум на уровне «hello world» для всех участников; Алкогольные мотивирующие напитки за свой счет. Первое — надо было выбрать идею для реализации. Несмотря на предстоящие объяснения и прочее умное агитирующее бла-бла, выражения кодерских лиц на 97,43% было тождественно с «WTF, что я здесь делаю?».

04a26e712a81ad58ec38a232f9633b96.jpg

Но уже через несколько минут первые набросы на вентилятор сделали свое дело — поток дружественного троллинга различной толщины активировал творческие доли мозга и идей набросали на несколько листов флипчарта. Выглядят они не особо интересно, весь цимус был в живом обсуждении:

6ff1a77d2a265eca0f5e0c0419384d71.jpg

Идеи были разные, лишенные какого либо бизнес-смысла (не для бизнеса мы все это затеяли).Но все они — из области нанесения добра и улучшения (с дальнейшим покорением) интернет-ойкумены:

оптимизация продаж билетов ржд; несколько вариантов гениальных замен для ужасных форм обратной связи на сайтах; социальные сети на звуковых сообщениях; несколько онлайн-много-человек-игр (мафии/покеры/etc со значительно улучшенными для онлайна правилами с видео-перепиской и системами распознавания мимики); муравьиные баталии (http://habrahabr.ru/post/135287/) с переносом действия на онлайн-карты Москвы (исключительная идея зла и разрушения); создание неангажированного и грамотного агрегатора новостей с правильным анализом популярности/распространенности; космически оперативная курьерская служба, по аналогии с яндекс.такси и механизмами защиты от преступных намерений Пришло время выбора. На вторых местах — конечно же «эРЖэДэ» (самый толстый троллинг был именно тут). На первых — злые муравьиные сражения и добрый напоминательный сервис. Для разработки выбрали сначала добро, а зло (если успеем) отложили на потом :-)

Идея очень простая, но участникам интересная — сервис с открытым API, через который можно оставить заявку-напоминалку себе, или фолловеру, или группе друзей или корпоративно-административной группе, которую можно сделать периодической или назначить на какое-то время, а также механизмы защиты от использования сервиса в качестве спама, и т.п. кучка связанных фич.

Приступили к архитектурному холивару проектированию. Разумеется, каждый совершенно точно знал, «как это надо делать», причем самые опытные скромно отмалчивались, «поглощая попкорн с колой» и наслаждаясь действием:

c7bbd1a3201858a6899445d66654a0e1.jpg

Схемы и варианты реализации размножались со скоростью 27 флипчартов в час:

eaca426f78002f8a2c9979d763193dc7.jpg

Режиссура процесса: визуализация провайдерского масштаба доставок для напоминалок:

c65ba208f3b3e695bcbd413f3f8ba4e2.jpg

Команда R&D уже придумала бренд, зарегистрировала домен и приступила к расчету прибылей :-)

d174d10bd3a212d1a95dd61b94757f55.jpg

К обеду все было готово, а именно:

Запротоколирована предметная область и архитектурные слои; Команда «ERLANG» — делает фронтовую часть и разбрасывание заявок-напоминалок по предметной области (людям/группам/фолловерам) задуманного сервиса; Команда «GO» — реализует многопотоковое считывание данных из предметной области и архи-нагрузочное разбрасывание напоминалок по провайдерам доставки; В качестве базы взяли Redis; Команда «СИСАДМИН» — готовит софт на боевых серверах и бездельничает в ожидании задач по деплою; Команда «R&D» уехала искать большие чемоданы для денег :-) Осмысленности в выборе технологий под задачи — не было никакой — участники хакатона на данных языках раньше ничего не делали и с Redis-ом не работали. Но именно в таком развитии событий и был задуман хакатон :-) После обеда — полезные для продуктивной работы серых клеток — моционы.Табличка «для детей до 14 лет» никого не смутила, тем более что ни одного человека в заданном диапазоне в округе не наблюдалось :-)

ec9f3df60365d4c560875bbe1d65629a.jpg

16dcd3e267a8ec09ab0becd133d1cea5.jpg

413caedc287225fd434a045bbf2b4c72.jpg

Команды сформированы, задачи ясны — за работу!

6a6b7e93d60b14ff9101d18fe4890636.jpg

Команда «GO». Тот, кто подготовился чуть больше чем «hello world» — закономерно популярен и величественен :-)

62fae623fe731d245beb0da192cb20fe.jpg

В команде «ERLANG» весело. Они еще не подозревают о всей тяжести последствий их выбора :-)

86ebdb6afb85ef49b824cb826179b7d1.jpg

Периодически пытались вспомнить все то, что было нагенерено в идею на старте и ввиду разницы пониманий, приходилось собирать все «в реальную для реализации конкретную кучку»:

7c6ee64e995041ce11570892825306bc.jpg

В фоновом режиме общий скайп-чат затягивает на темную сторону силы:

170e34cd4195dcf77156da8f3d47218f.jpg

Вечерняя программа.Футбол в нынешнем сезоне лучше играть, чем смотреть:

5135e25f836e403cbac72a8283d36bf3.jpg

Реактивные испытания:

d4ac201bda25dce65a606f347de8fabc.jpg

Второй и третий день. Только кодинг, только хардкор: для чего меняем помещение и обустраиваемся с комфортом:

9b3b99ec8885e1727bfab9bfbf679504.jpg

Затылки команды «ERLANG» умны и сосредоточенны:

d8720c5494e4422e25e9fdcca0cdb616.jpg

Вероятно, кодят API для фронта:

ea9085bc7ab00731d25c7dafbc1c0674.jpg

Робкая история коммитов «от новичков в жанре»:

754531462cebba397e0f61c3208ccebd.jpg

Команда «GO» ищет коннект в Redis:

9414ecf320825274cbc2ebf1280083f0.jpg

… и найдя, сочиняет романтические японские стихи, в которых каждая строка начинается с волшебного «go», наделяется ведомым только автору смыслом, посвящая их прекрасным и доступным горутинам :-)

33810f95801bcf09e099cd0c48c21cb3.jpg

По ходу дела — парочка ноу-хау.Например, «nosql-paper-database», версия «flomaster».

скорость записи — 4 фломика в час скорость чтения — световая скорость понимания — нулевая :-) a3f995314a3aeb85fe9e5e46929a0d74.jpg

А теперь всем бояться… ОНО компилируется:

ec35637c2ef5df4d58bd6a63acf17f3c.jpg

ОНО что-то делает:

784e1555771d222bd807bc2a2367a5ba.jpg

При этом Асинхронно и Параллельно!

1b942038761119fdaaf15d9d9a21e7b5.jpg

И достаточно быстро…

a7fa9f703294a72db8fd3bb8672a312c.jpg

Итоги:

Придумали и сделали сервис (даже слегка работающий), на ЯП-ах, ранее нам неведомых. Жалейте те, кого мы звали, но вы не пришли :-) Как нибудь повторим.

© Habrahabr.ru